フォーム読み込み中
クラウドエンジニアリング本部の宮田銀河です。現在は主に、フロントエンド開発(Vue.js/Nuxt.js)、深層学習(テキスト分類)を使用したツール開発に取り組んでいます。
早速本題に入ります。
私たちの部署では、Azure, Google Cloud, AWSのMSPサービスを開発・提供しています。そのため、各クラウドに検証用のリソースを作成して動作検証や確認を行うことが頻繁にあります。クラウド間での確認や管理作業を減らすために、各クラウドのリソースを一括管理したいという要望がありました。
この一括管理を可能にするために、各クラウドのリソースタグの使用を検討しました。しかし、このリソースタグは各クラウドで使える文字や文字数に違いがあります。 これらの違いにより、Azureで利用可能なタグがGoogle CloudやAWSでは利用できないという問題が発生する可能性があります。
そこで、各クラウドのリソースに共通して使えるタグルール(共通タグルール)を作成しました。共通タグルールを遵守することで、以下のメリットがあります。
本記事では、作成した共通タグルールと各クラウドのリソースタグの制約を説明します。
先に結論を書くと、共通して使用できるリソースタグの文字は小文字, 数字, _, - だけでした。
各クラウドのタグ制約を調査して下の表にまとめました。(2022年6月15日時点)
共通タグルール | Azure | Google Cloud | AWS | |
---|---|---|---|---|
機能名 | - | タグ | ラベル | タグ |
小文字 | 〇 | 〇 | 〇 | 〇 |
大文字 | × | 〇 | × | 〇 |
数字 | 〇 | 〇 | 〇 | 〇 |
使える記号 |
|
|
|
|
タグ名の長さの制約 | 1文字≦タグ名≦63文字 | 1文字≦タグ名≦512文字 | 1文字≦タグ名≦63文字 | 1文字≦タグ名≦128文字 |
タグ値の長さの制約 | 0文字≦タグ値≦63文字 | 0文字≦タグ値≦512文字 | 0文字≦タグ値≦63文字 | 0文字≦タグ名≦256文字 |
共通して使える記号は _
(アンダースコア)と -
(ハイフン or ダッシュ)しかありません。
以下では、各クラウドのタグ制約を調査し、実際にリソースタグの検証をしました。
(本記事ではASCII文字のみを対象としています)
Azureのタグ制約から特に注意すべき内容を抜粋しています。
< > % & \ ? / 。
は使用不可能
主要リソースで使用可能です。詳細はAzure リソースでのタグのサポートを参照してください。
Azureポータル上で適当なリソースを開き、タグ名とタグ値にいくつかの値を入れて、検証しました。
実際に制約を検証した結果を下図に示します。
(1), (2) 制約文字がタグ名で使用不可なことを確認でき、タグ値では使用可能でした。
(3) タグ名の長さが0文字は不可でした。
(4) タグ名とタグ値の長さの制約が確認できました。
(5) タグ値の長さが0文字は可能でした
Azureはフロントエンド側で入力されたタグの評価(validate)をしています。さらにタグごとのエラー理由が確認可能です。
Google Cloudではタグを"ラベル"と呼びます。Google Cloudのラベル制約から特に注意すべき内容を抜粋しています。
1文字≦タグ名の長さ≦63 文字
小文字、数字、_ -
は使用可能
小文字か*国際文字で始まる必要あり
*国際文字 (international charcter): 詳しい定義は見つけられていませんが、実際に試した結果、平仮名や漢字やハングル文字などが入力可能でした。
_ -
は使用可能主要リソースで使用可能です。詳細は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)
AWSのタグ制約から特に注意すべき内容を抜粋しています。
文字、数字、スペース、+ - = . _ : / @
は使用可能
大文字と小文字が区別される
aws:
は使用不可
0文字≦タグ値の長さ≦256文字
文字、数字、スペース、+ - = . _ : / @
は使用可能
大文字と小文字が区別される
主要リソースで使用可能です。詳細はAWSリソースでのタグのサポートを参照してください。
AWSコンソール上で適当なリソースを開き、タグ名とタグ値にいくつかの値を入れて検証しました。
実際に制約を検証した結果を下図に示します。
(1) タグ名がスペース1個、タグ値の長さが0でも使用可能でした。
(2) 小文字、大文字、数字は使用可能でした。
(3) + - = . _ : / @
は使用可能で、– < >?[]
は使用不可でした。
(4), (5) aws:
というタグ名は使用不可でしたが、先頭にスペースを入れた aws:
は使用可能でした。
AWSはフロントエンド側で入力されたタグの長さ評価(validate)をしていました (下図を参照)
長さ以外の制約は、フロントエンド側で評価されませんでした。保存ボタンを押しサーバにリクエストを送信した結果、サーバから以下のようなエラーレスポンスが返却されます。(TagValueの”–”が不正であることがわかります)
{
"Error": {
"Code": "InvalidTag",
"Message": "The TagValue you have provided is invalid",
"TagKey": "/",
"TagValue": "-/",
"RequestId": "***",
"HostId": "****"
}
}
Azure, Google Cloud, AWSのリソースタグの制約を比較して、共通タグルールを作成しました。共通タグルールは、63文字以内で小文字, 数字, _, - を用いることです。
実際に各クラウドが用意しているドキュメントを調査した結果、各クラウドのリソースタグの制約が異なることがわかりました。また、入力された文字の評価方法やタイミングも各クラウドで異なっていました。今後マルチクラウドでリソースを管理する場合には、ご参考にしていただけると幸いです。
条件に該当するページがございません