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

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

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

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

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

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

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

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

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

例: リソースレベルのアクセス許可を使用したアクセスの制御

ユーザーにアクセス許可を付与する場合、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" } }

例: ユーザーが起動テンプレートと起動テンプレートのバージョンを作成および管理できるようにします。

起動テンプレートと起動テンプレートバージョンの作成、変更、記述、および削除のアクセス許可をユーザーに付与するポリシーを作成できます。これらのアクセス権限をユーザーに追加する前に、https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html#launch-template-permissions起動テンプレートの使用の制御Linux インスタンス用 Amazon EC2 ユーザーガイドセクションを確認してください。その他のポリシーの例については、「例:」を参照してください。の「起動テンプレートの使用Linux インスタンス用 Amazon EC2 ユーザーガイド」

重要

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

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

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

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

重要

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

セキュリティを強化するために、IMDSv2 を必要とする起動テンプレートの使用を要求するようにユーザーのアクセス許可を設定できます。 詳細については、https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html の「インスタンスメタデータサービスの設定Linux インスタンス用 Amazon EC2 ユーザーガイド」を参照してください。

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

{ "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 グループは (グループの終了ポリシーに応じて) 古いインスタンスを徐々に終了します。

必要な追加のアクセス許可

これらの追加のアクションは、サポートするシナリオに応じて、IAM ポリシーステートメントの Action 要素で指定できます。

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

  • ec2:DescribeLaunchTemplates

  • ec2:DescribeLaunchTemplateVersions

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeAvailabilityZones

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

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

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

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