用于Webjob DashboardConnectionString和StorageConnectionString的Azure SAS令牌

时间:2018-01-23 23:56:01

标签: azure azure-storage azure-webjobs

Azure web作业希望我在启动时设置AzureWebJobsDashboard和AzureWebJobsStorage属性,但是,我不想在代码中公开AccountKey。 当我尝试使用SAS令牌时,JobHostConfiguration类尝试解析SAS令牌并抛出异常

 var config = new JobHostConfiguration();
            config.DashboardConnectionString = ConfigurationManager.GetSetting(KeyVaultSecrets.StorageReadWriteConnectionString);
            config.StorageConnectionString = ConfigurationManager.GetSetting(KeyVaultSecrets.StorageReadWriteConnectionString);

异常

  

发生了System.InvalidOperationException     的HResult = 0x80131509     消息=无法验证Microsoft Azure WebJobs SDK仪表板连接字符串。 Microsoft Azure存储帐户连接字符串格式不正确。有关配置Microsoft Azure存储连接字符串的详细信息,请访问http://msdn.microsoft.com/en-us/library/windowsazure/ee758697.aspx。     来源=     堆栈跟踪:      在 Microsoft.Azure.WebJobs.Host.Executors.StorageAccountParser.ParseAccount (String connectionString,String connectionStringName,IServiceProvider services)      在Microsoft.Azure.WebJobs.Host.Executors.DefaultStorageAccountProvider.set_DashboardConnectionString(String value)

在为JobHostConfiguration创建配置时,有没有办法使用SAS令牌?

2 个答案:

答案 0 :(得分:1)

此处尚不支持SAS令牌。但是,您不需要在代码中放置连接字符串。 你应该把它们放在appsettings中!像这样:

<configuration>
  <connectionStrings>
    <!-- The format of the connection string is "DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY" -->
    <!-- For local execution, the value can be set either in this config file or through environment variables -->
    <add name="AzureWebJobsDashboard" connectionString="xxxxxxx" />
    <add name="AzureWebJobsStorage" connectionString="yyyyyyyyy" />
  </connectionStrings>

此外,您可以直接在自己的网站上设置自己的应用程序。

也就是说,在最新的夜间版本中,我们现在支持在SAS连接字符串上运行[Timer]和[Singleton];您可以通过将config.DashboardConnectionString显式设置为null来禁用日志记录。但我们还没有支持将[Blob]和其他存储绑定到SAS网址。请参阅此提交中的单元测试:https://github.com/Azure/azure-webjobs-sdk/blob/bd2d9ea34f13fc16569e8d8f80bafdb605eeb6f9/test/Microsoft.Azure.WebJobs.Host.EndToEndTests/InternalStorageTests.cs

答案 1 :(得分:0)

我们可以在连接字符串中使用SAS。由于SAS包含验证请求所需的信息,因此具有SAS的连接字符串提供协议,服务端点以及根据that link

访问资源所需的凭据

通过这种方式, StorageAccountParser.ParseAccount(String connectionString)可以解析连接字符串

  

BlobEndpoint = https://storagesample.blob.core.windows.net;   SharedAccessSignature = SV = 2015年4月5日&安培; SR = B和SI =教程政策635959936145100803&安培; SIG = 9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D