gpt4 book ai didi

azure - 如何传入 CosmosDBTrigger 的存储帐户连接字符串?

转载 作者:行者123 更新时间:2023-12-03 03:59:00 26 4
gpt4 key购买 nike

我正在尝试找出将存储帐户连接字符串传递到 CosmosDBTrigger 的正确方法。我有一个在 CosmosDB 容器发生更改时运行的函数。此函数将图像 blob 从一个容器复制到另一个容器。如果您查看下面的代码,我已经注释掉了我试图对要连接的存储帐户进行罚款的行。当该函数被注释掉时运行。当我没有评论时它不会运行。为什么?

public static class Function1
{
[FunctionName("ImageCopier")]
public static async Task Run([CosmosDBTrigger(
databaseName: "MyDatabase",
collectionName: "Orders",
ConnectionStringSetting = "databaseConnection",
CreateLeaseCollectionIfNotExists = true,
LeaseDatabaseName = "TriggerLeases",
LeaseCollectionName = "TriggerLeases",
LeaseCollectionPrefix = "ImageCopier")]IReadOnlyList<Document> input,
//[StorageAccount("MyStorageAccount")]string storageConnectionString,
ILogger log)
{

我在 local.settings.json 文件中定义了 MyStorageAccount,并且在 Azure Function 配置设置中也定义了它。我直接从存储帐户 key 面板复制了连接字符串。

最佳答案

设置 CosmosDB 触发器时,该触发器中提供的信息特定于该触发器。如果您需要与代码中的触发器无关的设置或配置,可以使用 Environment.GetEnvironmentVariable method .

在本地环境中,您可以通过编辑 local.settings.json 文件(特别是 Values 数组)来设置这些变量。例如:

{
"IsEncrypted": false,
"Values": {
"JobUri": "https://yourapiendpointurl.com",
"BlobStorageConnectionString" : "the connection string",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
}

在您的方法中,您可以像这样获取该值:

public static class Function1
{
[FunctionName("ImageCopier")]
public static async Task Run([CosmosDBTrigger(
databaseName: "MyDatabase",
...
ILogger log)
{
var connectionString =
Environment.GetEnvironmentVariable("BlobStorageConnectionString");
}
}

local.settings.json 文件在 Azure 中运行时不会被使用。

我不确定当您发布函数时,您的 local.settings.json 文件是否会将设置迁移到 Azure Function 应用的配置,因此我会检查以确保您的设置是发布后就在那里。

旁注:将代码提交到存储库时要小心..您不希望存储库中存在“ secret ”,以防有人进入您的存储库并发现它。

关于azure - 如何传入 CosmosDBTrigger 的存储帐户连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63320448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com