🔖
【Azure/Bicep】- Bicepでのモジュール化:Storage Accountの構築
執筆日
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
]
}
]
デプロイ
- Vsocodeの拡張機能を使ってデプロイする
- 作成されていることを確認する
最後に
Bicepを使ったStorage Accountのモジュール化が完了しました。次回は、Azure Functionsを作成しようかなと。
Discussion