🔖

【Azure/Bicep】- Bicepでのモジュール化:Storage Accountの構築

2024/11/25に公開

執筆日

2024/11/25

やること

Bicepを触り始めて1週間。勉強メモとして残しています。今回は、module化を行いStorage Accountの構築を行います。

ファイル構成

iac
├── developments
│ └── main.bicep
└── modules
├── resourcegroup.bicep
└── storageaccount.bicep

ファイルの中身

main.bicep

targetScope = 'subscription'
param rgName string = 'dev-zenn'
param location string = 'japaneast'

// Resource Group モジュールの呼び出し
module rgModule '../modules/resourceGroupModule.bicep' = {
  name: 'resourceGroup'
  params: {
    rgName: rgName
    location: location
  }
}

var containerNames = ['logs', 'app', 'data'] // コンテナー名

// Storage Account モジュールの呼び出し
module blobStorageModule '../modules/blobstorage.bicep' = {
  name: 'blobStorage'
  scope: resourceGroup(rgName)
  params: {
    storageName: 'mystorageaccount' // Storage Account名
    location: location
    sku: 'Standard_LRS'
    containerNames: containerNames
  }
}

resourceGroupModule.bicep

targetScope = 'subscription'
param rgName string
param location string

// リソースグループの作成
resource RG 'Microsoft.Resources/resourceGroups@2022-09-01' = {
  name: rgName
  location: location
}

output rgName string = RG.name

blobstorage.bicep

param storageName string
param location string
param sku string
param containerNames array

// Storage Accountの作成
resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageName
  location: location
  sku: {
    name: sku
  }
  kind: 'StorageV2'
  properties: {
    publicNetworkAccess: 'Enabled'
    minimumTlsVersion: 'TLS1_2'
    allowBlobPublicAccess: true
    networkAcls: {
      resourceAccessRules: []
      bypass: 'AzureServices'
      virtualNetworkRules: []
      virtualNetworkSubnetIds: []
      ipRules: []
      defaultAction: 'Deny'
    }
    supportsHttpsTrafficOnly: true
    encryption: {
      services: {
        file: {
          keyType: 'Account'
          enabled: true
        }
        blob: {
          keyType: 'Account'
          enabled: true
        }
      }
      keySource: 'Microsoft.Storage'
    }
    accessTier: 'Hot'
  }
}

// Blobサービスの設定
resource storageAccount_name_default 'Microsoft.Storage/storageAccounts/blobServices@2023-04-01' = {
  name: '${storageName}/default'
  properties: {
    cors: {
      corsRules: []
    }
    deleteRetentionPolicy: {
      allowPermanentDelete: false
      enabled: false
    }
  }
  dependsOn: [
    createStorages
  ]
}

// Blobコンテナーの作成
resource blobContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2023-04-01' = [
  for containerName in containerNames: {
    name: '${storageName}/default/${containerName}'
    properties: {
      publicAccess: 'None'
    }
    dependsOn: [
      createStorages
    ]
  }
]

デプロイ

  1. Vsocodeの拡張機能を使ってデプロイする

https://zenn.dev/headwaters/articles/248916116126b8

  1. 作成されていることを確認する

最後に

Bicepを使ったStorage Accountのモジュール化が完了しました。次回は、Azure Functionsを作成しようかなと。

ヘッドウォータース

Discussion