【问题标题】:How to bind CloudStorageAccount input to Azure Function?如何将 CloudStorageAccount 输入绑定到 Azure Function?
【发布时间】:2018-04-03 09:27:19
【问题描述】:

我的简化代码示例

我在 Visual Studio 2017 中构建了以下简化的 Azure 函数代码:

public static class FunctionApp
{
    [FunctionName("MyFunction")]
    public static void Run(
        [TimerTrigger("0 */5 * * * *")] TimerInfo myTimer,
        [StorageAccount("ConnectionString")] CloudStorageAccount storage)
    {}
}

用下面的连接字符串

我已经在 local.settings.json 文件中添加了一个键“AzureWebJobsConnectionString”,用于开发测试。但是我在调​​试时收到以下错误消息:

错误索引方法“FunctionApp.Run”Microsoft.Azure.WebJobs.Host: 错误索引方法“FunctionApp.Run”。 Microsoft.Azure.WebJobs.Host: 无效的存储帐户“”。请确保您的凭据是 正确。

添加的连接字符串形式如下:

BlobEndpoint=https://******.blob.core.windows.net;SharedAccessSignature=sv=2017-04-17&ss=b&srt=sco&sp=dl&se=2099-12-31T00:00:00Z&st= 2017-10-22T00:00:00Z&spr=https&sig=******

并且还在 Azure 中测试过

然后我在 Azure Function Portal 的应用程序设置中配置了一个名为“AzureWebJobsConnectionString”的连接字符串,以便在 Azure 中进行测试,但没有成功。

但还是没有成功:(

如何让 CloudStorageAccount 正确绑定到 Azure Function?

【问题讨论】:

  • 能否将您的连接字符串添加到问题中(混淆秘密)?
  • @Mikhail 添加了连接字符串
  • @Amry 转到 Azure 门户存储/设置/Access_keys 以获取连接字符串。格式为 DefaultEndpointsProtocol=https;AccountName=;AccountKey=;EndpointSuffix=core.windows.net
  • @RomanKiss 仅供参考,如果我要执行new CloudStorageAccount(thatConnectionString),我使用的连接字符串可以正常工作。不过我想既然已经到了这个地步,我不妨试试账号密钥的格式。

标签: azure azure-functions


【解决方案1】:

转到 azure 门户 storage/Settings/Access_keys 获取连接字符串。

格式是

DefaultEndpointsProtocol=https;AccountName=<youraccountname>‌​;AccountKey=<youracc‌​ountkey>;EndpointSuf‌​fix=core.windows.net

【讨论】:

  • 我遇到的 SAS 连接字符串的第一个问题是索引超出范围异常,显然是由于我没有将 SAS 中的 & 字符编码为 &编码后,我收到了关于一些验证错误的正确错误消息。由此我知道 Azure Functions 主机正在拒绝 SAS 连接字符串。出于“有限的攻击面”安全原因,我正在考虑使用 SAS 连接字符串。哦,好吧..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2021-01-04
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多