🎈

Azure Cloud Shellで使用するストレージにタグを追加する

2024/03/03に公開

はじめに

Azure Cloud Shell で使用するストレージアカウントに任意のタグを付与します。

結論

下記コマンドをAzure Cloud Shell(bash)で実行するとAzure Cloud Shellで使用しているストレージアカウントにタグが追加されます。
Azure Cloud Shellで使用しているストレージアカウントは、環境変数から取得するため一意です。

tag_var="owner=roota@example.com"
az tag update --resource-id $(echo $ACC_STORAGE_PROFILE | jq -r .storageAccountResourceId) \
              --operation merge \
              --tags $tag_var

※例ではownerという名前のタグにユーザーのメールアドレスをタグの値として設定しています

実行例
r_ota [ ~/clouddrive ]$ az tag update --resource-id $(echo $ACC_STORAGE_PROFILE | jq -r .storageAccountResourceId) \
              --operation merge \
              --tags $tag_var
{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cloud-shell-storage-southeastasia/providers/Microsoft.Storage/storageAccounts/cs123456789abcdef01/providers/Microsoft.Resources/tags/default",
  "name": "default",
  "properties": {
    "tags": {
      "ms-resource-usage": "azure-cloud-shell",
      "owner": "roota@example.com"
    }
  },
  "resourceGroup": "cloud-shell-storage-southeastasia",
  "type": "Microsoft.Resources/tags"
}
r_ota [ ~/clouddrive ]$ 

なぜこれをやりたかったのか?

Azure Cloud Shellの仕様で自動生成されたストレージアカウントは、ユーザー共通で同じリソースグループ内に作成され、どのストレージアカウントがどのユーザーに紐づいているか分かりにくいためです。

基本設定を使用し、サブスクリプションのみを選択すると、Cloud Shell では、最寄りのサポートされるリージョンに 3 つのリソースが自動的に作成されます。

リソース グループ: cloud-shell-storage-<region>
ストレージ アカウント: cs<uniqueGuid>
ファイル共有: cs-<user>-<domain>-com-<uniqueGuid>

引用元

そのため、任意のタグを付与すればわかりやすいと思ったので調べました。

実行ユーザーが不明のストレージアカウントが大量に発生・・

処理内容

  1. Azure Cloud Shellで使用されているストレージアカウントを環境変数から特定
  2. 特定したストレージアカウントにタグを追加
処理詳細
  • $ACC_STORAGE_PROFILE
    $ACC_STORAGE_PROFILE は、環境変数で設定されている値です。格納されている値は下記の通りです。
    • storageAccountResourceId
    • fileShareName
    • diskSizeInGB
      出力例
    r_ota [ ~/clouddrive ]$ echo $ACC_STORAGE_PROFILE | jq .
    {
      "storageAccountResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/cloud-shell-storage-southeastasia/providers/Microsoft.Storage/storageAccounts/cs123456789abcdef01",
      "fileShareName": "cs-r-ota-example-com-23456789abcdef01",
      "diskSizeInGB": 5
    }
    r_ota [ ~/clouddrive ]$ 
    
    storageAccountResourceId のみ取り出すために | jq -r .storageAccountResourceId を追加します。
  • az tag update
    • az tag update--operation mergeを追加して実行します。
    • az tag create では、既存の "ms-resource-usage": "azure-cloud-shell"が消えてしまうため、az tag update を使用して既存の値に追加します。
    az tag update --operation {Delete, Merge, Replace}
                  --resource-id
                  --tags
    

感想

  • Azureのユーザーが削除されてもCloud Shellで使用するストレージアカウントは紐づいて自動で削除されない?
    →消し忘れ防止/リソース管理の観点からもタグ付与は有効だと感じました。
  • 各ユーザーがCloud Shell上で実行しないといけないのが、イケてないと思いました。。改善の余地あり。
GitHubで編集を提案

Discussion