Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

489
Views
¿Inyectar la cadena de conexión const de CosmosDB en el enlace de entrada/salida de CosmosDB de Azure Function V4?

¿Alguien sabe si es posible pasar/inyectar una cadena de conexión constante (u otro valor de configuración) desde la hoja de configuración de Azure Functions?

Tome esta firma vinculante, por ejemplo:

 [Function("APIHttpInput")] [CosmosDBOutput("%CosmosDb%", "%CosmosContainerOut%", ConnectionStringSetting = "CosmosDBConnection", CreateIfNotExists = true)] public static async Task<object> RunAsync( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "cosmosin")] HttpRequestData req, FunctionContext executionContext) { var logger = executionContext.GetLogger("APIHttpInput"); logger.LogInformation("C# HTTP trigger function processed a request."); // etc... }

Obtiene la cadena de conexión de local.settings.json , lo cual está bien, funciona de esa manera, pero no se sobrescriben en la canalización de CI/CD predeterminada y no están destinados a ser enviados a producción.

He leído la documentación oficial: https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#customizing-configuration-sources pero esto no permite utilizarlos en el enlace porque se pasan a través de DI (lo cual es genial, pero no del todo).

Una alternativa es escribirlos manualmente en Cosmos y usar DI. Esto no es realmente lo que quiero porque tengo la siguiente función que consume datos:

 [Function("APICosmosTrigger")] //[CosmosDBOutput("%CosmosDb%", "%CosmosContainerOut%", ConnectionStringSetting = "CosmosDBConnection", CreateIfNotExists = true)] public static void RunCosmos([CosmosDBTrigger( databaseName: "%CosmosDb%", collectionName: "%CosmosContainerOut%", ConnectionStringSetting = "CosmosDBConnection", LeaseCollectionName = "leases")] IReadOnlyList<Record> leads, FunctionContext executionContext, IRestClient client) { // do stuff... }

Con suerte, el resultado final sería que los campos de enlace (a continuación) se pueden configurar a través de la hoja de configuración:

  • "%CosmosDb%"
  • "%CosmosContainerOut%"
  • ConnectionStringSetting = "CosmosDBConnection"

PD: He visto algunas preguntas muy cercanas a esto, pero no se trata del problema del atributo vinculante.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Todos los enlaces de funciones (Cosmos, Storage, EventHub, etc.) se rigen por la misma mecánica de reemplazo para los valores en las configuraciones, también conocidas como expresiones de enlace .

Normalmente, el archivo local.settings.json no se inserta/publica porque es local para el entorno.

Podría, en su canalización de DevOps, tener variables de entorno que anulen los valores de local.settings.json , por ejemplo.

El artículo que vincula está inicializando la configuración de esta manera:

 builder.ConfigurationBuilder .AddJsonFile(Path.Combine(context.ApplicationRootPath, "appsettings.json"), optional: true, reloadOnChange: false) .AddJsonFile(Path.Combine(context.ApplicationRootPath, $"appsettings.{context.EnvironmentName}.json"), optional: true, reloadOnChange: false) .AddEnvironmentVariables();

Entonces, si define una variable de entorno en DevOps, debería poder anular lo que esté definido en el archivo json.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!