SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Bicep を使用して Azure ストレージの静的な Web サイトを有効化する

leave a comment

Azure ストレージには静的な Web サイトの機能があり、静的コンテンツを Azure ストレージで公開する際に活用することができます。

この機能を Bicep で有効にしようとしたのですが、Bicep の定義として設定する機能が提供されていませんでした。

実施した対応としては Storage Account – Enable Static web site #10337 と同じですが、現状は deploymentSciprts で対応をする必要があるようですね。

Azure Portal から設定を有効化した場合の変更方法

Azure Portal から静的な Web サイトを有効にした場合、ストレージアカウントの BLOB サービスに対しての操作を行うことで、静的な Web サイトの有効化が行われています。

要求のペイロードとしては、次のようなペイロードを送信することで有効化が行われています。

<StorageServiceProperties>
	<StaticWebsite>
		<Enabled>true</Enabled>
	</StaticWebsite>
</StorageServiceProperties>

 

Bicep を使用した静的な Web サイトの有効化

Bicep の定義については Microsoft.Storage storageAccounts から確認することができます。

現状、静的な Web サイトを有効化するためのプロパティは提供されておらず Microsoft.Storage/storageAccounts の設定として静的な Web サイトの有効化を行うことはできないようです。

2024/07 の投稿を書いている時点でも、deploymentScripts での対応が必要なのではないでしょうか。

deploymentScripts については、次のドキュメントで情報を確認することができます。

 

インラインスクリプトにより、Enable-AzStorageStaticWebsite を実行することでの展開の例としては次のような Bicep となります。

var location = resourceGroup().location
var storageAccountName = 'st${uniqueString(resourceGroup().id)}'

resource storage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
  properties: {
    publicNetworkAccess: 'Enabled'
  }
}

resource customScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'customScript'
  location: location
  kind: 'AzurePowerShell'
  properties: {
    azPowerShellVersion: '12.0'
    environmentVariables: [
      {
        name: 'storageAccountKey'
        secureValue: storage.listKeys().keys[0].value
      }
    ]
    arguments: '-storageAccountName ${storage.name}'
    scriptContent: '''
    param($storageAccountName)
    $context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $ENV:storageAccountKey
    Enable-AzStorageStaticWebsite -Context $context
    '''
    retentionInterval: 'PT1H'
  }
}

 

ストレージの操作については、ストレージアカウントキーを使用することで対応ができますのでユーザーマネージド ID を使用せずにストレージアカウントキーを使用して有効化を実施していますが、secureValue を使用しているため、「コンテンツと入力」から確認できる情報としては、ストレージアカウントキーは表示されない状態になっているかと思います。

image

セキュリティ情報を隠蔽化するのであればユーザー割り当てマネージド ID の展開まで検討したほうが良いのでしょうね。

Bicep による展開を実施すると次のように静的な Web サイトが Azure ストレージで有効になった状態となっています。

image

Share

Written by Masayuki.Ozawa

7月 15th, 2024 at 2:35 pm

Posted in Bicep

Tagged with

Leave a Reply