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

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

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

注記

Amazon ECS または AWS Lambda コンピューティングプラットフォーム を使用している場合は、このステップをスキップします。

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

IAM インスタンスプロファイルは AWS CLI、、IAM コンソール、または IAM APIs を使用して作成できます。

注記

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

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

以下のステップでは、「の開始方法 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 インスタンスプロファイルへのアクセスを許可するには、次のポリシーを使用しますが、アクセスを禁止するバケットの行を削除します。 Amazon S3

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "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-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-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-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
    注記

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

  3. 同じディレクトリから、create-role コマンドを呼び出して、最初のファイルの情報に基づいて CodeDeployDemo-EC2-Instance-Profile という名前の IAM ロールを作成します。

    重要

    ファイル名の前に必ず 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-policyて、SSM が 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-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」を参照してください。

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

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

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

  2. IAM コンソールのナビゲーションペインで、[Policies]、[Create policy] の順に選択します。

  3. [アクセス許可の指定] ページで、[JSON] を選択します。

  4. JSON サンプルコードを削除します。

  5. 次のコードを貼り付けます。

    { "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 インスタンスプロファイルへのアクセスを許可するには、次のポリシーを使用しますが、アクセスを禁止するバケットの行を削除します。 Amazon S3

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "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-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-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-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
    注記

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

  6. [次へ] をクリックします。

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

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

  9. [Create policy] を選択します。

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

  11. [ユースケース] で、[EC2] ユースケースを選択します。

  12. [次へ] をクリックします。

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

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

  15. [次へ] をクリックします。

  16. [名前、確認、および作成] ページで、[ロール名] にサービスロールの名前 (例えば、CodeDeployDemo-EC2-Instance-Profile) を入力し、[ロールを作成] を選択します。

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

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