【问题标题】:Azure Function binding attributes - Database name setting - VS2017 preview toolingAzure 函数绑定属性 - 数据库名称设置 - VS2017 预览工具
【发布时间】:2017-05-15 06:18:21
【问题描述】:

我在 VS2017 Preview 中使用 Azure Functions 项目的新工具,并将一些功能从 Azure 门户移植到新项目。

我正在绑定到 Azure 文档数据库 - 它工作正常,但是当我使用 DocumentDB 属性时,我必须提供数据库名称作为第一个参数。

在我的情况下,它现在是 DEV 数据库.. 但当然会有其他环境 - 有没有办法通过函数应用程序的应用程序设置来获取数据库名称?

[FunctionName("TimerTriggeredFunction")]
public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, TraceWriter log,
                       [DocumentDB("my-db-DEV", "MyCollection")]  IEnumerable<dynamic> inputDocuments)

【问题讨论】:

    标签: azure azure-functions azure-cosmosdb


    【解决方案1】:

    是的,您可以通过对应用设置使用 %% 自动解析语法来为这些值使用应用设置。例如,如果您添加了名为 DB_DEVCOLLECTION_DEV 的应用设置(在门户中,或者在本地盒子上运行时),您可以在属性中引用这些设置,如下所示:

    [DocumentDB("%DB_DEV%", "%COLLECTION_DEV%")]
    

    这些应用设置将在运行时解析。我们的文档here 中的“解决应用程序设置”部分对此进行了更详细的说明。

    【讨论】:

    • 请确保您的项目中引用了Microsoft.Azure.WebJobs.Extensions.DocumentDB。否则将找不到此属性。一分钟前偶然发现了这个
    【解决方案2】:

    我忽略了一个事实,即可以通过 local.settings.json 文件为我的 Azure 函数项目指定 Azure Cosmos DB 连接字符串。

    在这里,我将为我的目标环境提供适当的连接字符串。然后我可以在这些帐户中使用一致命名的数据库和集合,这意味着函数签名在所有环境中都是正确的。

    [DocumentDB("my-db", "MyCollection")] IEnumerable&lt;dynamic&gt; inputDocuments

    并在默认键AzureWebJobsDocumentDBConnectionString下提供local.settings.json中的连接字符串

    【讨论】:

    • 为什么使用local.settings.json而不是应用程序设置中的应用程序设置(在AppService内部)?这样您的local.settings.json 将不包含任何敏感信息,并且您的连接字符串将可作为环境变量访问
    • 谢谢 Chris - 我已经通过门户在应用程序设置中设置了这些值,以便在部署功能时使用。通过 VS2017 预览在本地运行时,有没有比使用local.settings.json 更好的方法来访问这些设置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多