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