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

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

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

注記

Amazon ECSを使用している場合AWSLambda コンピューティングプラットフォーム、この手順をスキップしてください。Amazon ECS デプロイメントは Amazon ECS サービスをデプロイし、AWSLambda デプロイではサーバーレス 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/*" ] } ] }
    注記

    を使用したいの場合IAM 認証または、CodeDeploy を使用した Amazon Virtual Private Cloud (VPC) エンドポイントでは、権限を追加する必要があります。「」を参照してください。Amazon Virtual Private Cloud で CodeDeploy詳細については.

  3. 同じディレクトリから、create-roleIAM ロールを作成するコマンドCodeDeployDemo-EC2-Instance-Profile[] を、最初のファイルの情報に基づいて指定します。

    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

    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 という名前のロールアクセス許可を付与します。

    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

    aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
  5. を呼び出します。attach-role-policySSM が CodeDeploy エージェントをインストールできるように、ロールに Amazon EC2 Systems Manager のアクセス許可を付与します。コマンドラインを使用してパブリック Amazon S3 バケットからエージェントをインストールする場合、このポリシーは必要ありません。の詳細情報CodeDeploy エージェントのインストール

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile
  6. を呼び出します。create-instance-profileコマンドの後にadd-role-to-instance-profileIAM インスタンスプロファイルを作成するコマンドCodeDeployDemo-EC2-Instance-Profile。インスタンスプロファイルにより、Amazon EC2 はという名前の IAM ロールを渡すことができます。CodeDeployDemo-EC2-Instance-Profileインスタンスが最初に起動されるときに 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 インスタンスプロファイルの名前を取得する必要がある場合は、「」ロール用のインスタンスプロファイルをリストするの IAM セクションのAWS CLIリファレンス

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

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

  1. AWS Management Console にサインインして、https://console.aws.amazon.com/iam/ で 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/*" ] } ] }
    注記

    を使用したいの場合IAM 認証または、CodeDeploy を使用した Amazon Virtual Private Cloud (VPC) エンドポイントでは、権限を追加する必要があります。「」を参照してください。Amazon Virtual Private Cloud で CodeDeploy詳細については.

  4. [Review policy] (ポリシーの確認) を選択します。

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

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

  7. [Create Policy] (ポリシーの作成) を選択します。

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

  9. [Create role (ロールの作成)] ページで、[AWS service (サービス)] を選択し、[Choose the service that will use this role (このロールを使用するサービスを選択)] リストから [EC2] を選択します。

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

  11. [Next: (次へ:)] を選択します アクセス許可.

  12. ポリシーのリストで、作成したポリシー (CodeDeployDemo-EC2-Permissions) の横にあるチェックボックスをオンにします。必要に応じて、検索ボックスを使用してポリシーを見つけます。

  13. Systems Manager を使用して CodeDeploy エージェントをインストールまたは設定するには、[AmazonSSMManagedInstanceCore] の横にあるボックスを選択します。この AWS 管理ポリシーにより、インスタンスは Systems Manager サービスコア機能を使用できます。必要に応じて、検索ボックスを使用してポリシーを見つけます。コマンドラインを使用してパブリック Amazon S3 バケットからエージェントをインストールする場合、このポリシーは必要ありません。の詳細情報CodeDeploy エージェントのインストール

  14. [Next: (次へ:)] を選択します [Tags] (タグ)

  15. [] のままにするタグの追加 (オプション)ページを変更しないで、次へ: 確認.

  16. リポジトリの []確認ページ ()ロール名[] に、サービスロールの名前を入力します (例:CodeDeployDemo-EC2-Instance-Profile) を選択してから、ロールの作成

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

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