翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EC2 インスタンスで実行されるアプリケーションのアクセス許可の指定
重要
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post
スタックの Amazon EC2インスタンスで実行されているアプリケーションが Amazon S3 バケットなどの他のAWSリソースにアクセスする必要がある場合は、適切なアクセス許可が必要です。アクセス許可を付与するには、インスタンスプロファイルを使用します。AWS OpsWorks スタックスタック を作成するときに、インスタンスごとにインスタンスプロファイルを指定できます。
レイヤー設定を編集して、レイヤーのインスタンスのプロファイルを指定することも可能です。
インスタンスプロファイルは IAMロールを指定します。インスタンスで実行されているアプリケーションは、ロールのポリシーによって付与されるアクセス許可に従って、AWSリソースにアクセスするためにそのロールを引き受けることができます。アプリケーションがロールを引き受ける方法の詳細については、「 API呼び出しを使用してロールを引き受ける」を参照してください。
次のいずれかの方法でインスタンスプロファイルを作成することができます。
-
IAM コンソールまたは APIを使用してプロファイルを作成します。
詳細については、「ロール (委任とフェデレーション)」を参照してください。
-
AWS CloudFormation テンプレートを使用してプロファイルを作成します。
IAM テンプレートにリソースを含める方法の例については、「Identity and Access Management (IAM) Template Snippets」を参照してください。
インスタンスプロファイルには、信頼関係と、 AWS リソースへのアクセス許可を付与するアタッチされたポリシーが必要です。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
インスタンスプロファイルには、 AWS OpsWorks スタックがユーザーに代わって動作するために、この信頼関係が必要です。デフォルトのサービスロールを使用する場合は、信頼関係を変更しないでください。カスタムサービスロールを作成する場合は、次のように信頼関係を指定します。
-
コンソール でロールの作成ウィザードを使用している場合は、ウィザードの 2 ページ目のサービスロールで Amazon EC2 ロールタイプを指定します。 IAM
AWS -
AWS CloudFormation テンプレートを使用している場合は、テンプレートのリソースセクションに次のような内容を追加できます。
"Resources": { "OpsWorksEC2Role": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ec2.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/" } }, "RootInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksEC2Role" } ] } } }
インスタンスプロファイルを作成すると、その時点でプロファイルのロールに適切なポリシーをアタッチできます。スタックを作成したら、 IAMコンソールregion
および amzn-s3-demo-bucket と、設定に適した値。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:
region
::amzn-s3-demo-bucket/*" } ] }
インスタンスプロファイルの作成および使用方法の例については、「Amazon S3 バケットの使用」を参照してください。
アプリケーションがインスタンスプロファイルを使用してEC2インスタンスAPIから AWS OpsWorks スタックを呼び出す場合、ポリシーでは、 AWS OpsWorks スタックやその他の AWS サービスに対する適切なiam:PassRole
アクションに加えて、 アクションを許可する必要があります。iam:PassRole
アクセス許可により、 AWS OpsWorks スタックがユーザーに代わってサービスロールを引き受けることができるようになります。 AWS OpsWorks スタック の詳細については、AWS OpsWorks API「 リファレンスAPI」を参照してください。
以下は、EC2インスタンスから AWS OpsWorks スタックアクションと Amazon EC2または Amazon S3 アクションを呼び出すことを許可する IAMポリシーの例です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "s3:*", "opsworks:*", "iam:PassRole" ], "Resource": "arn:aws:ec2:
region
:account_id:
instance/*", "Condition": { "StringEquals": { "iam:PassedToService": "opsworks.amazonaws.com" } } } ] }
注記
を許可しない場合iam:PassRole
、 AWS OpsWorks スタックアクションを呼び出す試行は失敗し、次のようなエラーが発生します。
User: arn:aws:sts::123456789012:federated-user/Bob is not authorized to perform: iam:PassRole on resource: arn:aws:sts::123456789012:role/OpsWorksStackIamRole
EC2 インスタンスでロールを使用してアクセス許可を取得する方法の詳細については、「 ユーザーガイド」の「Amazon EC2 インスタンスで実行されるアプリケーションにAWSリソースへのアクセスを許可する」を参照してください。 AWS Identity and Access Management