所以我目前正在使用至少一个具有授权级别(Function)的Azure功能的解决方案,因此使用功能键进行授权。我配置了一个部署插槽(暂存),我通过VSTS使用CD来构建,部署功能和交换插槽。一切顺利。
但现在API管理已经到了,而我在API管理中注册了功能,所以最终用户为了与功能进行交互,他们通过API管理来完成。因此,为了使API Management发出有效请求,它会在后端URL请求中注入Function Key。
但是,无论何时我部署新版本的功能,然后我交换,功能键都会改变。
因此它需要我在api管理中更改功能键。有没有办法避免更改密钥(可能是生产和临时插槽之间的相同密钥?),或者可能是另一种更简单的方法来处理这个问题?
我只是想避免依赖,所以无论何时我在功能中部署更改,我都不需要担心更改API管理,特别是因为它是手动更改。
由于
答案 0 :(得分:1)
所以Thomas,首先,非常感谢您关于密钥管理API和ARM模板的建议。实际上,我的发现是:当您使用功能插槽时,每个插槽都有自己的专用键(默认功能键和默认主机键)。因此,当您有这种情况时,使用API管理请求功能,并依赖这些密钥,那么如果您在函数中交换插槽,API管理将无法再成功请求该功能。因此,为了避免在函数的部署过程中创建其他步骤等,我决定尝试创建自定义功能键(authkey)并将相同的值关联到两个插槽。所以api管理可以独立使用那个密钥,哪个槽是生产槽。
无论如何,我现在对此解决方案感到满意,以避免任何强大的自定义解决方案。
再次感谢托马斯。
答案 1 :(得分:1)
在 Azure 门户中,打开您的函数应用并转到应用密钥部分。可以通过单击密钥名称来编辑应用密钥。因此,您可以复制生产中正在使用的密钥,并将其粘贴到另一个部署槽中的相应密钥值中。这样,两个插槽将使用相同的密钥,并且每次交换时都不需要更改。
如果您使用的是功能键而不是应用程序键,您可以以相同的方式复制和粘贴这些键。