【发布时间】:2018-06-15 11:01:34
【问题描述】:
所以我目前正在使用至少一个具有授权级别(功能)的 Azure 功能并因此使用功能键进行授权的解决方案。我配置了一个部署槽(暂存),我正在通过 VSTS 使用 CD 来构建、部署功能和交换槽。一切正常。
但是现在是 API 管理,而我在 API 管理中注册了该功能,因此最终用户为了与该功能进行交互,他们通过 API 管理来完成。因此,为了 API Management 发出有效请求,它会在后端 URL 请求中注入 Function Key。
但是,每当我部署一个新版本的功能,然后我交换,功能键就会改变。
所以这需要我在api管理中更改功能键。有什么方法可以避免更改密钥(可能生产槽和暂存槽之间的密钥相同?),或者可能是另一种更简单的方法来解决这个问题?
我只是想避免依赖,所以每当我在函数中部署更改时,我不需要担心更改 API 管理,特别是因为它是手动更改。
谢谢
【问题讨论】:
-
您可以自动执行此更改。您使用的是哪个版本的 azure 函数?键不应该改变。很奇怪
-
Thomas,我正在使用以下运行时版本:1.0.11820.0(最新)。看,我有两个用于功能应用程序的插槽(生产和暂存)。因此,每个插槽都有不同的键。因此,如果我将新版本的函数部署到 staging,然后将 staging 与生产交换,那么当 API 管理尝试联系该函数的生产版本时,由于密钥不再有效,它会失败。
-
我怎样才能自动化这个改变?使用 ARM 模板?功能键作为参数包含在入站规则中,在 API 管理下的 API 配置中。这意味着我的 ARM 模板需要与 API 管理服务中使用的 API 相关的所有配置,对吗?
-
哦,所以钥匙互换了?有趣...通过ARM模板可以获取functions key,否则有azure function的key management api:github.com/Azure/azure-functions-host/wiki/Key-management-API
-
是的,您可以这样做或输出函数 url 并将其注入到发布管道的另一个步骤中
标签: azure azure-functions azure-api-management