Auto Scaling グループとインスタンスにタグを付ける - Amazon EC2 Auto Scaling

Auto Scaling グループとインスタンスにタグを付ける

タグとは、お客様または AWS が AWS リソースに割り当てるカスタム属性ラベルです。各 タグは 2 つの部分で構成されます:

  • タグキー (例: costcenterenvironment または project)

  • タグ値として知られるオプションのフィールド (例: 111122223333 または production)

タグは、以下のことに役立ちます。

  • AWS のコストの追跡。これらのタグは、AWS Billing and Cost Management ダッシュボードで有効にします。AWS では、タグを使用してコストを分類し、毎月のコスト配分レポートを提供します。詳細については、AWS Billing ユーザーガイド の「コスト配分タグの使用」を参照してください。

  • タグに基づいて、Auto Scaling グループへのアクセスを制御します。IAM ポリシーで条件を使用して、そのグループのタグに基づき、Auto Scaling グループへのアクセスを制御できます。詳しくは、「セキュリティ用のタグ」を参照してください。

  • 追加したタグに基づく Auto Scaling グループのフィルタリングと検索。詳しくは、「タグを使用して Auto Scaling グループをフィルタリングする」を参照してください。

  • AWS リソースを識別および整理します。多くの AWS のサービス ではタグ付けがサポートされているため、各種のサービスからリソースに同じタグを割り当てて、リソースの関連を示すことができます。

新規または既存の Auto Scaling グループにタグを付けることができます。Auto Scaling グループから、起動する EC2 インスタンスにタグを伝播することもできます。

タグは Amazon EBS ボリュームには伝達されません。Amazon EBS ボリュームにタグを追加するには、起動テンプレートでタグを指定します。詳細については、「Auto Scaling グループの起動テンプレートを作成する」を参照してください。

タグの作成と管理は、AWS Management Console、AWS CLI、または SDK を使用します。

タグの命名と使用制限

タグには以下のようなベーシック制限があります。

  • リソースあたりのタグの最大数は 50 です。

  • 単一の呼び出しを使用して追加または削除できるタグの最大数は 25 です。

  • キーの最大長は Unicode 文字で 128 文字です。

  • 値の最大長は Unicode 文字で 256 文字です。

  • タグのキーと値は大文字と小文字が区別されます。ベストプラクティスとして、タグを大文字にするための戦略を決定し、その戦略をすべてのリソースタイプにわたって一貫して実装します。

  • タグの名前または値に aws: プレフィックスは使用しないでください。このプレフィックスは AWS 用に予約されています。このプレフィックスが含まれるタグの名前または値は編集または削除できません。これらはリソースクォータあたりのタグに対して計算されません。

EC2 インスタンスのタグ付けライフサイクル

EC2 インスタンスにタグを伝播することを選択した場合、タグは以下のように管理されます。

  • Auto Scaling グループがインスタンスを起動すると、リソースの作成後ではなく作成中に、インスタンスにタグが追加されます。

  • Auto Scaling グループでは、キーに aws:autoscaling:groupName、値に Auto Scaling グループ名が使用され、インスタンスにタグが自動的に追加されます。

  • 起動テンプレートでインスタンスタグを指定し、グループのタグをそのインスタンスに伝播することを選択した場合、すべてのタグがマージされます。起動テンプレートのタグと Auto Scaling グループのタグに同じタグキーが指定されている場合、グループのタグ値が優先されます。

  • 既存のインスタンスをアタッチするときに、Auto Scaling グループはタグをインスタンスに追加し、同じタグキーを持つ既存のタグを上書きします。また、キーが aws:autoscaling:groupName で、値が Auto Scaling グループ名のタグも追加されます。

  • Auto Scaling グループからインスタンスからデタッチした場合は、aws:autoscaling:groupName タグのみが削除されます。

Auto Scaling グループにタグを付ける

Auto Scaling グループにタグを追加する際、Auto Scaling グループで起動するインスタンスに追加するかどうかを指定できます。タグを変更する場合は、変更後にその Auto Scaling グループで起動されたインスタンスには更新されたタグのバージョンが追加されます。Auto Scaling グループのタグを作成または変更しても、これらの変更内容は既に Auto Scaling グループで実行中のインスタンスには加えられません。

タグの追加または変更 (コンソール)

Auto Scaling グループの作成時にタグを付けるには

Amazon EC2 コンソールを使用して Auto Scaling グループを作成する場合、Auto Scaling グループの作成ウィザードの [Add Tags (タグの追加)] ページでタグのキーと値を指定できます。Auto Scaling グループで起動されるインスタンスにタグを付けるには、[Tag New Instances (新しいインスタンスのタグ付け)] オプションが選択されたままにしてください。タグを付けない場合は、このオプションの選択を解除できます。

既存の Auto Scaling グループのタグを追加または変更するには

  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

    [Auto Scaling groups] (Auto Scaling グループ) ページの下部にスプリットペインが開きます。

  3. [詳細] タブで、[タグ]、[編集] の順に選択します。

  4. 既存のタグを変更するには、[Key] と [Value] フィールドを編集します。

  5. 新しいタグを追加するには、[Add tag] を選択し、[Key] と [Value] フィールドを選択します。[Tag New Instances (新しいインスタンスにタグ付けする)] を選択したままにして Auto Scaling グループで起動されるインスタンスに自動的にタグを追加することも、選択解除して追加しないこともできます。

  6. タグの追加を完了したら、[保存] を選択します

タグの追加または変更 (AWS CLI)

以下の例では、AWS CLI を使用して Auto Scalingグループを作成するときにタグを追加する方法、および既存の Auto Scaling グループのタグを追加または変更する方法を示しています。

Auto Scaling グループの作成時にタグを付けるには

create-auto-scaling-group を使用して新しい Auto Scaling グループを作成し、タグを追加します (例: environment=production を Auto Scaling グループに追加)。タグは、Auto Scaling グループで起動されるインスタンスにも追加されます。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config --min-size 1 --max-size 3 \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --tags Key=environment,Value=production,PropagateAtLaunch=true

既存の Auto Scaling グループのタグを作成または変更するには

create-or-update-tags コマンドを使用して、タグを作成または変更します。たとえば、以下のコマンドは Name=my-asg および costcenter=cc123 タグを追加します。この変更後、それらのタグは Auto Scaling グループ内で起動されるすべてのインスタンスに追加されます。いずれかのキーを持つタグがすでに存在する場合、既存のタグは置き換えられます。Amazon EC2 コンソールでは、各インスタンスの表示名は、Name キーに指定された名前に関連付けられます (大文字と小文字は区別)。

aws autoscaling create-or-update-tags \ --tags ResourceId=my-asg,ResourceType=auto-scaling-group,Key=Name,Value=my-asg,PropagateAtLaunch=true \ ResourceId=my-asg,ResourceType=auto-scaling-group,Key=costcenter,Value=cc123,PropagateAtLaunch=true

Auto Scaling グループのタグを記述する (AWS CLI)

特定の Auto Scaling グループに適用されているタグを表示する場合は、次のいずれかのコマンドを使用できます。

  • describe-tags — Auto Scaling グループ名を指定して、指定したグループのタグのリストを表示します。

    aws autoscaling describe-tags --filters Name=auto-scaling-group,Values=my-asg

    以下に、応答の例を示します。

    { "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ] }
  • describe-auto-scaling-group— Auto Scaling グループ名を指定して、タグを含む指定したグループの属性を表示します。

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    以下に、応答の例を示します。

    { "AutoScalingGroups": [ { "AutoScalingGroupARN": "arn", "HealthCheckGracePeriod": 0, "SuspendedProcesses": [], "DesiredCapacity": 1, "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ], "EnabledMetrics": [], "LoadBalancerNames": [], "AutoScalingGroupName": "my-asg", ... } ] }

タグの削除

Auto Scaling グループに関連付けられたタグは、いつでも削除できます。

タグの削除 (コンソール)

タグを削除するには

  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. 既存のグループの横にあるチェックボックスをオンにします。

    [Auto Scaling groups] (Auto Scaling グループ) ページの下部にスプリットペインが開きます。

  3. [詳細] タブで、[タグ]、[編集] の順に選択します。

  4. タグの横にある [削除] を選択します。

  5. [Update] (更新) を選択します。

タグの削除 (AWS CLI)

delete-tags コマンドを使用してタグを削除します。たとえば、以下のコマンドは environment キーを持つタグを削除します。

aws autoscaling delete-tags --tags "ResourceId=my-asg,ResourceType=auto-scaling-group,Key=environment"

タグのキーは指定する必要がありますが、値を指定する必要はありません。指定した値が正しくない場合、タグは削除されません。

セキュリティ用のタグ

タグを使用して、IAM ユーザーおよびグループがアカウントで作成、変更、削除する Auto Scaling グループを管理します。以下の条件キーを 1 つ以上使用して、IAM ポリシーの条件要素にタグ情報を指定します。

  • 特定のタグを持つ Auto Scaling グループに対してユーザーアクションを許可 (または拒否) するには、autoscaling:ResourceTag/tag-key: tag-value を使用します。

  • リクエストに特定のタグが含める (または含めない) ことを要求するには、aws:RequestTag/tag-key: tag-value を使用します。

  • リクエストに特定のタグキーを含める (または含めない) ことを要求するには、aws:TagKeys [tag-key, ...] を使用します。

たとえば、以下の例に示すように、キー environment および 値 production を持つタグを含むすべての Auto Scaling グループへのアクセスを拒否できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": {"autoscaling:ResourceTag/environment": "production"} } } ] }

その他の例については、「Amazon EC2 Auto Scaling アイデンティティベースのポリシーの例」を参照してください。

タグへのアクセスを制御する

IAM では、Auto Scaling グループにタグを追加、変更、または削除するためのアクセス許可をアカウント内のどの IAM ユーザーおよびグループが持つかをコントロールすることもできます。

たとえば、IAM ポリシーを作成して、Auto Scaling グループから temporary キーでタグのみ削除することを許可できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:DeleteTags" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["temporary"] } } } ] }

その他の例については、「Amazon EC2 Auto Scaling アイデンティティベースのポリシーの例」を参照してください。

注記

ユーザーによる Auto Scaling グループに対するタグ付け (または、タグの削除) 操作の実行を制限するポリシーを持っていても、ユーザーはインスタンスの起動後にタグを手動で変更できます。EC2 インスタンスでタグへのアクセスを制御する例については、Linux インスタンス用 Amazon EC2 ユーザーガイド例: リソースのタグ付けを参照してください。

タグを使用して Auto Scaling グループをフィルタリングする

次の例では、describe-auto-scaling-groups コマンドでフィルターを使用して、Auto Scaling グループを特定のタグで記述する方法を示しています。タグによるフィルタリングの利用は AWS CLI または SDK に限定されており、コンソールからは利用できません。

フィルタリングの考慮事項

  • 1 つのリクエストで複数のフィルターと複数のフィルタの値を指定できます。

  • フィルターの値にワイルドカードを使用することはできません。

  • フィルターの値は大文字と小文字が区別されます。

例: 特定のタグキーと値のペアを持つ Auto Scaling グループを記述する

次のコマンドは、environment=production のタグキーと値のペアを持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment Name=tag-value,Values=production

以下に、応答の例を示します。

{ "AutoScalingGroups": [ { "AutoScalingGroupARN": "arn", "HealthCheckGracePeriod": 0, "SuspendedProcesses": [], "DesiredCapacity": 1, "Tags": [ { "ResourceType": "auto-scaling-group", "ResourceId": "my-asg", "PropagateAtLaunch": true, "Value": "production", "Key": "environment" } ], "EnabledMetrics": [], "LoadBalancerNames": [], "AutoScalingGroupName": "my-asg", ... } ] }

または tag:<key> フィルターを使用して、タグを指定することもできます。例えば、次のコマンドは、environment=production のタグキーと値のペアを持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。このフィルターは、次の形式になります: Name=tag:<key>,Values=<value> (<key> および <value> はタグキーと値のペアを表します。)

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag:environment,Values=production

また、--query オプションを使用して、AWS CLI 出力もフィルタリングできます。次の例では、前のコマンドの AWS CLI 出力を、グループ名、最小サイズ、最大サイズ、および必要なキャパシティ属性のみに制限する方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag:environment,Values=production \ --query "AutoScalingGroups[].{AutoScalingGroupName: AutoScalingGroupName, MinSize: MinSize, MaxSize: MaxSize, DesiredCapacity: DesiredCapacity}"

以下に、応答の例を示します。

[ { "AutoScalingGroupName": "my-asg", "MinSize": 0, "MaxSize": 10, "DesiredCapacity": 1 } ... ]

フィルタリングの詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI 出力をフィルタリングする」を参照してください。

例: 指定したタグキーと一致するタグを持つ Auto Scaling グループを記述する

次のコマンドは、タグ値に関係なく environment タグを持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment

例: 指定したタグキーのセットに一致するタグを持つ Auto Scaling グループを記述する

次のコマンドは、タグ値に関係なく environment および project のタグを持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment Name=tag-key,Values=project

例: 指定したタグキーのうち少なくとも 1 つに一致するタグを持つ Auto Scaling グループを記述する

次のコマンドは、タグ値に関係なく environment または project のタグを持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-key,Values=environment,project

例: 指定したタグ値を持つ Auto Scaling グループを記述する

次のコマンドは、タグキーに関係なくタグ値 production を持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=production

例: 指定したタグ値のセットを持つ Auto Scaling グループを記述する

次のコマンドは、タグキーに関係なくタグ値 production および development を持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=production Name=tag-value,Values=development

例: 指定したタグ値の少なくとも 1 つに一致するタグを持つ Auto Scaling グループを記述する

次のコマンドは、タグキーに関係なくタグ値 production または development を持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag-value,Values=production,development

例: 複数のタグキーおよびタグ値が一致するタグを持つ Auto Scaling グループを記述する

フィルターを組み合わせてカスタムの AND および OR ロジックを作成し、より複雑なフィルタリングを実行することもできます。

次のコマンドは、特定のタグのセットを持つ Auto Scaling グループのみを表示するように、結果をフィルタリングする方法を示しています。一方のタグキーは environment AND でタグ値は (production OR development) AND、もう一方のタグキーは costcenter AND でタグ値は cc123 です。

aws autoscaling describe-auto-scaling-groups \ --filters Name=tag:environment,Values=production,development Name=tag:costcenter,Values=cc123