代码之家  ›  专栏  ›  技术社区  ›  H. Pauwelyn

在二头肌中使用环会产生投射错误

  •  0
  • H. Pauwelyn  · 技术社区  · 3 年前

    我读了关于 loops in bicep files 最后是这个代码。它有两个数组供用户和应用程序使用(两者都需要不同的权限)。对于访问策略,我在每个项目上循环。

    param keyVault_name string
    param webapp_principleId string
    param functionsApp_principleId string
    param location string
    param user_id string
    
    var userPermission = [
      user_id 
    ]
    
    var appPermission = [
      webapp_principleId
      functionsApp_principleId
    ]
    
    resource keyVault_resource 'Microsoft.KeyVault/vaults@2022-07-01' = {
      name: keyVault_name
      location: location
      properties:{
        accessPolicies:[[for (app, index) in appPermission: {
          objectId: app
          tenantId: tenant().tenantId
          permissions: {
            secrets: [ 'get', 'list' ]
          }
        }], [for (user, index) in userPermission: {
          objectId: user
          tenantId: tenant().tenantId
          permissions: {
            secrets: [ 'get', 'list', 'set' ]
          }
        }]]
        sku: {
          family: 'A'
          name: 'standard'
        }
        tenantId: tenant().tenantId
      }
    }
    

    但上面的代码给了我下一个错误:

    封闭数组需要类型为的项 AccessPolicyEntry ,但提供的项的类型为 object[] .二头肌(BCP034)

    根据我发现的文档,它不像代码示例那样工作。我需要打石膏吗?

    0 回复  |  直到 3 年前
        1
  •  1
  •   Thomas    3 年前

    您正在将数组的数组传递给 accessPolicies 属性,则需要连接这两个数组:

    param keyVault_name string
    param webapp_principleId string
    param functionsApp_principleId string
    param location string
    param user_id string
    
    var userPermission = [
      user_id 
    ]
    
    var appPermission = [
      webapp_principleId
      functionsApp_principleId
    ]
    
    var userAccessPolicies = [for (user, index) in userPermission: {
      objectId: user
      tenantId: tenant().tenantId
      permissions: {
        secrets: [ 'get', 'list', 'set' ]
      }
    }]
    
    var appAccessPolicies = [for (app, index) in appPermission: {
      objectId: app
      tenantId: tenant().tenantId
      permissions: {
        secrets: [ 'get', 'list' ]
      }
    }]
    
    var accessPolicies = concat(userAccessPolicies, appAccessPolicies)
    resource keyVault_resource 'Microsoft.KeyVault/vaults@2022-07-01' = {
      name: keyVault_name
      location: location
      properties:{
        accessPolicies:accessPolicies
        sku: {
          family: 'A'
          name: 'standard'
        }
        tenantId: tenant().tenantId
      }
    }
    
    推荐文章