Azure-Bicep:如何将 blob 容器添加到存储帐户

标签 azure azure-blob-storage azure-resource-manager azure-bicep

所以,我有一个 StorageAccount.bicep

//StorageAccount.bicep
param storageAccountSku string = 'Standard_LRS'
param storageAccountName string
param storageAccountType string = 'StorageV2'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-08-01' = {
  name: storageAccountName
  location: location
  tags: tags
  sku: {
    name: storageAccountSku
  }
  kind: storageAccountType
}

output name string = storageAccount.name

在main.bicep中,调用StorageAccount.bicep创建容器。

module storage_account_1 'modules/storageAccount.bicep' = {
  name: 'storage_account1'
  scope: rg
  params: {
    storageAccountSku: 'Standard_LRS'
    storageAccountType: 'StorageV2'
    storageAccountName: 'storage_account1"
}
}

第二个存储帐户

var storageName = toLower('${envType}${rgNameUid}${toLower(app)}')
    module storage_account_2 'modules/storageAccount.bicep' = {
      name: 'storage_account2'
      scope: rg
      params: {
        storageAccountSku: 'Standard_LRS'
        storageAccountType: 'StorageV2'
        storageAccountName: storageName 
    }
    }

然后我有另一个 helper.bicep 可以设置或覆盖任何设置。

//helper.bicep
resource my_storage 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
  name: storageName 
}

我的问题是如何将 blob 容器添加到第二个存储帐户?

我尝试创建 blobContainer.bicep,然后从 main.bicep 调用它。

param storageAccountName string
param storageAccount object
@description('Name of the blob container to deploy.')
param blobContainerNames array
var cleanedContainerNames = [for x in blobContainerNames: toLower(x)]

resource blobContainers 'Microsoft.Storage/storageAccounts/blobServices/containers@2022-05-01' =  [for containerName in cleanedContainerNames: {
  name: '${storageAccountName}/default/${containerName}'
  dependsOn: [
    storageAccount
  ]
  properties: {
    publicAccess: 'None'
  }
}]

output name string = blobContainers.name

但是在下面一行中出现错误,我可以将声明者参数作为模块传入吗?

dependsOn: [
    storageAccount
  ]

更新:

我可以做这样的事情吗?

//helper.bicep

resource my_storage 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
  name: storageName 
}

//Add the following lines
resource storagecontainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2022-05-01' = {
   name: '${storageName}/default/mycontainer'
   dependsOn: [
       my_storage 
     ]
   }

最佳答案

您始终可以在存储模块内添加容器创建:

// StorageAccount.bicep
param storageAccountName string
param location string = resourceGroup().location
param tags object = {}
param storageAccountSku string = 'Standard_LRS'
param storageAccountType string = 'StorageV2'
param containerNames array = []

// Create storage
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-08-01' = {
  name: storageAccountName
  location: location
  tags: tags
  sku: {
    name: storageAccountSku
  }
  kind: storageAccountType
}

resource blobService 'Microsoft.Storage/storageAccounts/blobServices@2021-06-01' = {
  name: 'default'
  parent: storageAccount
}

// Create containers if specified
resource containers 'Microsoft.Storage/storageAccounts/blobServices/containers@2021-06-01' = [for containerName in containerNames: {
  parent: blobService
  name: !empty(containerNames) ? '${toLower(containerName)}' : 'placeholder'
  properties: {
    publicAccess: 'None'
    metadata: {}
  }
}]

output name string = storageAccount.name

关于Azure-Bicep:如何将 blob 容器添加到存储帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74199831/

相关文章:

.net - Azure 服务可以运行非托管代码吗?

angular - Azure存储javascript客户端: how to track upload progress using Ionic/Angular?

azure - 获取容器内子目录中的所有 blob

azure - 使用 ARM 模板部署 Azure 数据工厂

azure - VSCode 主题不会发布到 Azure

c# - Azure.Storage.Blob 中是否还有另一个与 MaximumExecutionTime 和 DisableMD5Validation 等效的属性

mongodb - 确保云中 MongoDB 传输的安全

azure - 使用 google gview 在 iframe 中嵌入 Azure blob pdf 文件

powershell - 应用程序网关路由规则未使用 powershell 脚本更新

json - 如何使用 Azure 资源管理器在 Azure Web 应用程序中设置应用程序日志