起動テンプレートのサポート - Amazon EC2 Auto Scaling (日本語)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

起動テンプレートのサポート

Amazon EC2 Auto Scaling は、お客様の Auto Scaling グループでの Amazon EC2 起動テンプレートの使用をサポートしています。起動テンプレートから Auto Scaling グループを作成することをユーザーに許可することをお勧めします。これにより、ユーザーは Amazon EC2 Auto Scaling および Amazon EC2 の最新機能を使用できます。さらに、ユーザーは 混合インスタンスポリシーを使用するための起動テンプレートを指定する必要があります。

「」を使用できます。AmazonEC2FullAccessポリシーでは、AWS アカウント内の Amazon EC2 Auto Scaling リソース、起動テンプレート、およびその他の EC2 リソースを使用するための完全なアクセス権をユーザーに付与します。または、独自のカスタム IAM ポリシーを作成して、特定の API アクションを使用するためのきめ細かなアクセス許可をユーザーに付与できます。

次のポリシー例では、起動テンプレートを使用するためのアクセス許可をユーザーに付与します。ただし、別のポリシーによってアクセス許可がすでにユーザーに付与されている場合を除きます。起動設定 (Amazon EC2 Auto Scaling の旧機能) から Auto Scaling グループを作成するユーザーに対しては、これらのアクセス許可を付与する必要がありません。

Amazon EC2 の IAM ポリシーの詳細については、「」を参照してください。IAM ポリシー()Linux インスタンス用 Amazon EC2 ユーザーガイド

起動テンプレートを使用して Auto Scaling グループを作成または更新する IAM ユーザーまたはロールは、ec2:RunInstancesaction. このアクセス許可を持たないユーザーには、起動テンプレートを使用する権限がないことを示すエラーが表示されます。

ユーザーのアクセス権限ec2:RunInstances起動テンプレートを使用して Auto Scaling グループを作成または更新する場合にのみチェックされます。使用するように設定された Auto Scaling グループの場合、LatestまたはDefault起動テンプレートでは、起動テンプレートの新しいバージョンが作成されたときにアクセス許可はチェックされません。アクセス許可をチェックするには、特定のバージョンの起動テンプレートを使用するように Auto Scaling グループを設定する必要があります。

例 1: リソースレベルのアクセス許可を使用してアクセスをコントロールする

ユーザーにアクセス許可を付与する場合、Amazon EC2 では、への呼び出しの一部として作成されたリソースに対してリソースレベルのアクセス許可を指定できます。ec2:RunInstancesアクションを使用して、ユーザーが操作できるリソースを制御します。これは推奨される方法です。

次の例では、リソースレベルのアクセス許可を使用して、特定の起動テンプレートへのアクセスを制限します。また、ec2:RunInstances アクセス許可を付与するときにユーザーが起動できるインスタンスの設定を制御するための複数の方法のうち、一部を示します。

この例には、次の 4 つのステートメントがあります。

  • 最初のステートメントは、指定されたリージョンにある起動テンプレートのうち、environment=test タグを持つテンプレートへのユーザーアクセスを制限します。

  • 2 番目のステートメントは、インスタンスとボリュームの作成時に、これらにタグを付けることをユーザーに許可します。この部分は、起動テンプレートにタグが指定されている場合に必要です。

  • 3 番目のステートメントは、ユーザーが、特定のセキュリティグループ (sg-1a2b3c4d) と、特定の AMI (ami-1a2b3c4d) を使用して、特定のサブネット (subnet-1a2b3c4d) でインスタンスを起動することを要求します。また、インスタンスを起動するために必要な追加のリソース (ネットワークインターフェイスとボリューム) へのアクセス権をユーザーに付与します。

  • 4 番目のステートメントは、特定のインスタンスタイプ (t2.micro) のインスタンスのみを起動することをユーザーに許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:123456789012:launch-template/*", "Condition": { "StringEquals": { "ec2:ResourceTag/environment": "test" } } }, { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:region:123456789012:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:123456789012:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:123456789012:security-group/sg-1a2b3c4d", "arn:aws:ec2:region:123456789012:network-interface/*", "arn:aws:ec2:region:123456789012:volume/*", "arn:aws:ec2:region::image/ami-1a2b3c4d" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:123456789012:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": "t2.micro" } } } ] }

さらに、Auto Scaling グループの作成時および更新時に起動設定を使用できないように、ユーザーのアクセスを制限するための IAM ポリシーを作成できます。必要に応じて、使用する特定のバージョンをユーザーが設定することを要求し、Auto Scaling グループを更新して新しいバージョンを使用するたびに、インスタンスの起動時に実行されるアクションの IAM アクセス許可をチェックすることもできます。

次のステートメントは、ユーザーが起動テンプレートを指定した場合に Auto Scaling グループを作成または更新するアクセス許可をユーザーに付与します。ユーザーが Latest または Default の起動テンプレートバージョンを指定するためのバージョン番号を省略したり、代わりに起動設定を指定したりすると、アクションは失敗します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }

または、テンプレートの特定のバージョンではなく、起動テンプレートの Default バージョンまたは Latest バージョンのいずれかをユーザーが指定するように要求することもできます。これを行うには、次の例に示すように autoscaling:LaunchTemplateVersionSpecified の値を false に変更します。

"Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "false" } }

例 2: ユーザーに起動テンプレートの作成および管理およびテンプレートのバージョンの起動を許可する

起動テンプレートと起動テンプレートバージョンの作成、変更、記述、および削除のアクセス許可をユーザーに付与するポリシーを作成できます。これらの権限をユーザーに追加する前に、起動テンプレートの使用の管理の セクションLinux インスタンス用 Amazon EC2 ユーザーガイド。その他のポリシーの例については、例: 起動テンプレートの使用()Linux インスタンス用 Amazon EC2 ユーザーガイド

重要

使用するように構成されているグループの場合、LatestまたはDefault起動テンプレートバージョンでは、インスタンスの起動時に実行されるアクションのアクセス許可は、起動テンプレートの新しいバージョンが作成されたときに Amazon EC2 Auto Scaling によってチェックされません。これは、起動テンプレートバージョンを作成および管理できるユーザーのアクセス許可を設定する際の重要な考慮事項です。

次のポリシーでは、起動テンプレートを作成するためのアクセス許可をユーザーに付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateLaunchTemplate", "Resource": "*" } ] }

例 3: インスタンスメタデータサービスバージョン 2 (IMDSv2) の使用を要求する

重要

すべての新しいインスタンスで IMDSv2 の使用を要求する場合は、Auto Scaling グループで起動テンプレートを使用する必要があります。

セキュリティを強化するために、IMDSv2 を必要とする起動テンプレートの使用を要求するようにユーザーのアクセス許可を設定できます。詳細については、「」を参照してください。インスタンスメタデータサービスの設定()Linux インスタンス用 Amazon EC2 ユーザーガイド

次のポリシーは、ユーザーがec2:RunInstancesインスタンスが IMDSv2 の使用を要求するようにオプトインされていない限り ("ec2:MetadataHttpTokens":"required"). インスタンスが IMDSv2 を要求するように指定しないと、ec2:RunInstances アクションを呼び出したときに UnauthorizedOperation エラーが発生します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }

既存の Auto Scaling グループを更新するには、インスタンスメタデータオプションが設定された新しい起動テンプレートを使用するか、インスタンスメタデータオプションが設定された現在の起動テンプレートの新しいバージョンを使用します。

ヒント

新しい起動テンプレートを使用する代替インスタンスを強制的に起動するには、グループ内の既存のインスタンスを終了できます。Amazon EC2 Auto Scaling は、直ちに新しいインスタンスの起動を開始し、終了したインスタンスを置き換えます。

別の方法として、スケーリングポリシーを使用している場合は、グループの必要容量を増やして新しいインスタンスを起動することもできます。スケールインに関するポリシー条件が満たされると、Auto Scaling グループは (グループの終了ポリシーに応じて) 古いインスタンスを徐々に終了します。

その他の必須アクセス許可

これらの追加のアクションは、サポートするシナリオに応じて、ActionIAM ポリシーステートメントの要素を使用します。

コンソールから Auto Scaling グループを作成および更新するには、Amazon EC2 から次のアクセス許可も必要です。

  • ec2:DescribeLaunchTemplates

  • ec2:DescribeLaunchTemplateVersions

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeAvailabilityZones

これらの最小限のアクセス許可を追加しないと、起動テンプレートとネットワークオプションが Auto Scaling group ウィザードに読み込まれないため、ユーザーはウィザードをステップ実行できず、起動テンプレートを使用してインスタンスを起動することができません。

ユーザーがウィザードで使用できるオプションを増やすには、ポリシーに追加するアクションを増やします。たとえば、Elastic Load Balancing API アクションへのアクセス許可を追加すると、ユーザーはウィザードのステップ 3 で既存のロードバランサーのリストから選択できます。

使用アイテムiam:PassRole起動テンプレートで IAM ロールを持つインスタンスプロファイルを指定している場合、Amazon EC2 にロールを渡すことをユーザーに許可 (または拒否) するには、Amazon EC2 にロールを渡します。このアクセス許可を持たないユーザーには、起動テンプレートを使用する権限がないことを示すエラーが表示されます。ポリシーの例については、「どの IAM ロールを渡すことができるかをコントロールする (PassRole を使用)」を参照してください。

Amazon EC2 コンソールからプロビジョニングを検証するには、追加のアクセス許可が必要です。たとえば、ec2:DescribeInstancesインスタンスを表示するには、ec2:DescribeInstanceStatusをクリックしてインスタンスのステータスを表示するか、ec2:DescribeTagsを使用してタグを表示します)。