AWS CodeDeploy
ユーザーガイド (API バージョン 2014-10-06)

ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する

注記

Amazon ECS または AWS Lambda compute platform を使用している場合には、このステップをスキップしてください。Amazon ECS のデプロイは Amazon ECS サービスをデプロイし、AWS Lambda のデプロイではサーバーレス Lambda 関数のバージョンをデプロイするため、Amazon EC2 インスタンスのインスタンスプロファイルは必要ありません。

Amazon EC2 インスタンスには、アプリケーションが保存される Amazon S3 バケットまたは GitHub レポジトリへのアクセス権限が必要です。CodeDeploy と互換性のある Amazon EC2 インスタンスを起動するには、追加の IAM ロールであるインスタンスプロファイルを作成する必要があります。以下の手順では、Amazon EC2 インスタンスにアタッチする IAM インスタンスプロファイルを作成する方法を示します。このロールでは、アプリケーションが保存される Amazon S3 バケットまたは GitHub リポジトリへのアクセス権限が CodeDeploy に付与されます。

IAM インスタンスプロファイルは、AWS CLI、IAM コンソール、または IAM API で作成できます。

注記

IAM インスタンスプロファイルは、起動時の Amazon EC2 インスタンスまたは以前に起動したインスタンスにアタッチできます。詳細については、「インスタンスプロファイル」を参照してください。

Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (CLI)

以下のステップでは、「CodeDeploy の使用開始」にある最初の 3 つの手順の指示に従っていることを前提としています。

  1. 開発マシンで、CodeDeployDemo-EC2-Trust.json という名前のテキストファイルを作成します。Amazon EC2 によるユーザーの代理操作の実行を許可する、次の内容を貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 同じディレクトリで、CodeDeployDemo-EC2-Permissions.json という名前のテキストファイルを作成します。以下の内容を貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }

    注記

    このポリシーを、Amazon EC2 インスタンスがアクセスする必要のある Amazon S3 バケットにのみ制限することをお勧めします。CodeDeploy エージェントを含む Amazon S3 バケットにアクセス権限を付与します。そうしない場合、CodeDeploy エージェントがインスタンスにインストールされる、または更新されるときに、エラーが発生する可能性があります。Amazon S3 の一部の CodeDeploy リソースキットバケットのみへのアクセス権限を IAM インスタンスプロファイルに付与するには、次のポリシーを使用しますが、アクセスを禁止するバケットの行を削除します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
  3. 同じディレクトリから、create-role コマンドを呼び出して、最初のファイルの情報に基づいて CodeDeployDemo-EC2-Instance-Profile という名前の IAM ロールを作成します。

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json
  4. 同じディレクトリから、put-role-policy コマンドを呼び出して、2 番目のファイルの情報に基づいて CodeDeployDemo-EC2-Instance-Profile という名前のロールを権限に付与します。

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
  5. create-instance-profile コマンドに続いて add-role-to-instance-profile コマンドを呼び出して、CodeDeployDemo-EC2-Instance-Profile という名前の IAM インスタンスプロファイルを作成します。インスタンスプロファイルにより、Amazon EC2 は最初に起動されたときに、CodeDeployDemo-EC2-Instance-Profile という名前の IAM ロールを Amazon EC2 インスタンスに渡します。

    aws iam create-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile aws iam add-role-to-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile --role-name CodeDeployDemo-EC2-Instance-Profile

    IAM インスタンスプロファイルの名前を取得する必要がある場合は、AWS CLI リファレンスの IAM セクションで「list-instance-profiles-for-role」を参照してください。

これで、Amazon EC2 インスタンスにアタッチする IAM インスタンスプロファイルを作成しました。詳細については、Amazon EC2 ユーザーガイドの「Amazon EC2 の IAM ロール」を参照してください。

Amazon EC2 インスタンス用の IAM インスタンスプロファイルの作成 (コンソール)

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. IAM コンソールのナビゲーションペインで、[ポリシー]、[ポリシーの作成] の順に選択します。([Get Started] ボタンが表示された場合は、そのボタンを選択してから、[Create Policy] を選択します)。

  3. [ポリシーの作成] ページで、[JSON] タブに以下を貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }

    注記

    このポリシーを、Amazon EC2 インスタンスがアクセスする必要のある Amazon S3 バケットにのみ制限することをお勧めします。CodeDeploy エージェントを含む Amazon S3 バケットにアクセス権限を付与します。そうしない場合、CodeDeploy エージェントがインスタンスにインストールされる、または更新されるときに、エラーが発生する可能性があります。Amazon S3 の一部の CodeDeploy リソースキットバケットのみへのアクセス権限を IAM インスタンスプロファイルに付与するには、次のポリシーを使用しますが、アクセスを禁止するバケットの行を削除します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
  4. [ポリシーの確認] を選択します。

  5. [ポリシーの作成] ページで、[ポリシー名] ボックスに「CodeDeployDemo-EC2-Permissions」と入力します。

  6. (オプション) [説明] に、ポリシーの説明を入力します。

  7. [Create Policy] を選択します。

  8. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  9. [ロールの作成] ページで、[AWS サービス] を選択し、[このロールを使用するサービスを選択] リストから以下を選択します。 EC2.

  10. [Select your use case] リストで、[EC2] を選択します。

  11. [Next: Permissions] を選択します。

  12. [アタッチされたアクセス権限ポリシー] ページで、先ほど作成したポリシーを選択し、[次へ: タグ] を選択します。推奨された名前を使用した場合は CodeDeployDemo-EC2-Permissions です。​

  13. [タグの追加 (オプション)] ページは変更せず、[Next: Review (次へ: 確認)] を選択します。

  14. [Review] ページの [Role name] に、サービスロールの名前を入力します (例: CodeDeployDemo-EC2-Instance-Profile), and then choose Create role.

    また、[ロールの説明] に、このサービスロールの説明を入力することもできます。

これで、Amazon EC2 インスタンスにアタッチする IAM インスタンスプロファイルを作成しました。詳細については、Amazon EC2 ユーザーガイドの「Amazon EC2 の IAM ロール」を参照してください。