如何在Bicep部署Azure资源时为每次部署生成标准格式GUID
你可以直接使用Bicep内置的guid()函数生成符合标准格式的GUID,该函数遵循RFC 4122规范,输出结果完全匹配你需要的xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx格式。
基础用法
guid()支持传入最多5个字符串类型的种子值,相同种子值每次运行会生成相同GUID,调整种子值即可获得新的GUID:
- 如果你需要每次部署生成全新唯一GUID,可以传入部署的动态唯一属性作为种子,比如
deployment().name(默认每次部署名称唯一):// 全局部署唯一GUID var deploymentUniqueGuid = guid(deployment().name) - 如果你需要为每个租户编码生成独立的唯一GUID,可以把
tenantCode也加入种子参数:var tenantGuid = guid(deployment().name, tenantCode)
结合你的部署代码改造示例
你可以根据需求把生成的GUID用于密钥命名、属性配置等场景,以下是改造后的参考代码:
resource keyVault 'Microsoft.KeyVault/vaults@2021-06-01-preview' existing = { name: keyVaultName } // 生成当前部署全局唯一GUID var deploymentUniqueGuid = guid(deployment().name) // Create key vault keys resource keyVaultKeys 'Microsoft.KeyVault/vaults/keys@2021-06-01-preview' = [for tenantCode in tenantCodes: { // 为当前租户生成专属唯一GUID var tenantSpecificGuid = guid(deployment().name, tenantCode) name: '${keyVault.name}/${keyVaultKeyPrefix}${tenantCode}-${tenantSpecificGuid}' properties: { keySize: 2048 kty: 'RSA' keyOps: [ 'unwrapKey' 'wrapKey' ] } }]
注意事项
- 如果你需要固定GUID(同一环境每次部署生成相同GUID),只需要把种子值替换为静态固定组合即可,比如
guid('生产环境', keyVaultName) - 种子值可以按需添加订阅ID、资源组名称等参数,进一步控制GUID的生成范围
内容的提问来源于stack exchange,提问作者Nayden Van
相关产品推荐
相关产品推荐

