如何在Terraform CDK中使用APIM命名值作为后端Header值?
需求可以实现
你可以借助APIM内部的命名值引用语法,结合Terraform CDK完成这个需求,具体操作如下:
- 若你已经在APIM中创建了指向Key Vault密钥的命名值(比如名称为
openai-api-key),直接在请求头的值中使用APIM的引用格式${{<命名值名称>}}即可。修改后的代码片段如下:
apim_backend = api_management_backend.ApiManagementBackend(self, "openai_apim_backend", name="cdktf-openai-backend", resource_group_name=openai_resource_group_name, api_management_name=apim_name, protocol="http", url="https://example.privatelink.openai.azure.com", credentials={ "header": { "api-key": "${{openai-api-key}}", "Content-Type": "application/json" } } )
- 若你还未创建该命名值,也可以通过Terraform CDK先定义APIM命名值资源,再引用它的名称:
首先定义命名值:
const openaiApiKeyNamedValue = new api_management_named_value.ApiManagementNamedValue(this, "openai-api-key-nv", { name: "openai-api-key", resourceGroupName: openai_resource_group_name, apiManagementName: apim_name, secret: true, keyVault: { secretIdentifier: "https://your-keyvault.vault.azure.net/secrets/your-secret-name" } });
然后在后端配置中引用:
apim_backend = api_management_backend.ApiManagementBackend(self, "openai_apim_backend", name="cdktf-openai-backend", resource_group_name=openai_resource_group_name, api_management_name=apim_name, protocol="http", url="https://example.privatelink.openai.azure.com", credentials={ "header": { "api-key": `\${{${openaiApiKeyNamedValue.name}}}`, "Content-Type": "application/json" } } )
APIM会自动解析${{...}}格式的内容,将其替换为对应命名值关联的Key Vault密钥内容,全程密钥会被安全存储和管理。
内容的提问来源于stack exchange,提问作者Gregory Danenberg
相关产品推荐
相关产品推荐

