Azure, Google Cloud, AWSのリソースタグの制約を比較して、共通タグルールを作成した

2022年7月8日掲載

キービジュアル

クラウドエンジニアリング本部の宮田銀河です。現在は主に、フロントエンド開発(Vue.js/Nuxt.js)、深層学習(テキスト分類)を使用したツール開発に取り組んでいます。

早速本題に入ります。

私たちの部署では、Azure, Google Cloud, AWSのMSPサービスを開発・提供しています。そのため、各クラウドに検証用のリソースを作成して動作検証や確認を行うことが頻繁にあります。クラウド間での確認や管理作業を減らすために、各クラウドのリソースを一括管理したいという要望がありました。

この一括管理を可能にするために、各クラウドのリソースタグの使用を検討しました。しかし、このリソースタグは各クラウドで使える文字や文字数に違いがあります。 これらの違いにより、Azureで利用可能なタグがGoogle CloudやAWSでは利用できないという問題が発生する可能性があります。

そこで、各クラウドのリソースに共通して使えるタグルール(共通タグルール)を作成しました。共通タグルールを遵守することで、以下のメリットがあります。

  • 各クラウドでタグの命名に悩む時間が減る
  • 各クラウドリソースの一括管理に役立つ

本記事では、作成した共通タグルールと各クラウドのリソースタグの制約を説明します。

目次

  • 本記事では、Azure, Google Cloud, AWSのリソースタグの制約を調査して、共通して使えるタグルールを説明します。
  • リソースのタグ機能を現在使っている人、今後使ってみたい人が対象です。
  • リソース使用時のタグのルール導入、タグを用いたリソースの一括管理に役立ちます。

作成した共通タグルールと各クラウドのタグ制約のまとめ

先に結論を書くと、共通して使用できるリソースタグの文字は小文字, 数字,  _,  - だけでした。

各クラウドのタグ制約を調査して下の表にまとめました。(2022年6月15日時点)

 

 共通タグルールAzureGoogle CloudAWS

機能名

-

タグ

ラベル

タグ

小文字

大文字

×

×

数字

使える記号

_ -

< > % & \ ? / 。 以外の記号

_ -

+ - = . _ : / @

タグ名の長さの制約

1文字≦タグ名≦63文字

1文字≦タグ名≦512文字

1文字≦タグ名≦63文字

1文字≦タグ名≦128文字

タグ値の長さの制約

0文字≦タグ値≦63文字

0文字≦タグ値≦512文字

0文字≦タグ値≦63文字

0文字≦タグ名≦256文字

共通して使える記号は _  (アンダースコア)と -  (ハイフン or ダッシュ)しかありません。

以下では、各クラウドのタグ制約を調査し、実際にリソースタグの検証をしました。

(本記事ではASCII文字のみを対象としています)

Azureのタグ制約調査と検証

Azureのタグ制約から特に注意すべき内容を抜粋しています。

タグ名の制約

  • 1文字≦タグ名の長さ≦512 文字 (ストレージ アカウントは、128 文字まで)
  • < > % & \ ? / 。 は使用不可能

  • 大文字と小文字が区別されない

タグ値の制約

  • 0文字≦タグ値の長さ≦512 文字
  • 大文字と小文字が区別される

タグが使えるリソース

主要リソースで使用可能です。詳細はAzure リソースでのタグのサポートを参照してください。

検証結果

Azureポータル上で適当なリソースを開き、タグ名とタグ値にいくつかの値を入れて、検証しました。

実際に制約を検証した結果を下図に示します。

Azureリソースタグの検証
  • (1), (2) 制約文字がタグ名で使用不可なことを確認でき、タグ値では使用可能でした。

  • (3) タグ名の長さが0文字は不可でした。

  • (4) タグ名とタグ値の長さの制約が確認できました。

  • (5) タグ値の長さが0文字は可能でした

Azureはフロントエンド側で入力されたタグの評価(validate)をしています。さらにタグごとのエラー理由が確認可能です。

Google Cloudのタグ制約調査と検証

Google Cloudではタグを"ラベル"と呼びます。Google Cloudのラベル制約から特に注意すべき内容を抜粋しています。

ラベル名の制約

  • 1文字≦タグ名の長さ≦63 文字

  • 小文字、数字、_ - は使用可能

  • 小文字か*国際文字で始まる必要あり

*国際文字 (international charcter): 詳しい定義は見つけられていませんが、実際に試した結果、平仮名や漢字やハングル文字などが入力可能でした。

ラベル値の制約

  • 0文字≦タグ値の長さ≦63 文字
  • 小文字、数字、_ - は使用可能
  • 大文字と小文字が区別される

ラベルが使えるリソース

主要リソースで使用可能です。詳細はGoogle Cloudリソースでのラベルのサポートを参照してください。

検証結果

Google Cloudコンソール上で適当なリソースを開き、ラベル名とラベル値にいくつかの値を入れて、検証しました。実際に制約を検証した結果を下図に示します。

Google Cloudリソースラベルの検証
  • (1) タグ名がスペース1個、タグ値の長さが0の場合使用不可でした。

  • (2), (3), (4) 大文字・記号・空白始まりのタグは使用不可でした。

  • (3) + - = . _ : / @ は使用不可でした。

Google Cloudはフロントエンド側で入力されたタグの評価(validate)をしていました。キー5と値5のように64文字以上入力することは可能でした。しかし作成ボタンを押した後に、下図のようなエラーが表示されました (ラベルの長さだけは、サーバで検証しているようです)

> label value size exceeds the maximum limit (128 bytes)

Google Cloudリソースラベルの文字数制限エラー

AWSのタグ制約調査と検証

AWSのタグ制約から特に注意すべき内容を抜粋しています。

タグ名の制約

  • 1文字≦タグ名の長さ≦128文字
  • 文字、数字、スペース、+ - = . _ : / @は使用可能

  • 大文字と小文字が区別される

  • aws: は使用不可

タグ値の制約

  • 0文字≦タグ値の長さ≦256文字

  • 文字、数字、スペース、+ - = . _ : / @は使用可能

  • 大文字と小文字が区別される

タグが使えるリソース

主要リソースで使用可能です。詳細はAWSリソースでのタグのサポートを参照してください。

検証結果

AWSコンソール上で適当なリソースを開き、タグ名とタグ値にいくつかの値を入れて検証しました。

実際に制約を検証した結果を下図に示します。

AWSリソースタグの検証
  • (1) タグ名がスペース1個、タグ値の長さが0でも使用可能でした。

  • (2) 小文字、大文字、数字は使用可能でした。

  • (3) + - = . _ : / @は使用可能で、– < >?[]は使用不可でした。

  • (4), (5) aws:というタグ名は使用不可でしたが、先頭にスペースを入れた aws:は使用可能でした。

AWSはフロントエンド側で入力されたタグの長さ評価(validate)をしていました (下図を参照)

AWSリソースタグの文字数エラー

長さ以外の制約は、フロントエンド側で評価されませんでした。保存ボタンを押しサーバにリクエストを送信した結果、サーバから以下のようなエラーレスポンスが返却されます。(TagValueの”–”が不正であることがわかります)

{
  "Error": {
    "Code": "InvalidTag",
    "Message": "The TagValue you have provided is invalid",
    "TagKey": "/",
    "TagValue": "-/",
    "RequestId": "***",
    "HostId": "****"
  }
}

まとめ

Azure, Google Cloud, AWSのリソースタグの制約を比較して、共通タグルールを作成しました。共通タグルールは、63文字以内で小文字, 数字,  _,  - を用いることです。

実際に各クラウドが用意しているドキュメントを調査した結果、各クラウドのリソースタグの制約が異なることがわかりました。また、入力された文字の評価方法やタイミングも各クラウドで異なっていました。今後マルチクラウドでリソースを管理する場合には、ご参考にしていただけると幸いです。

関連サービス

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません