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

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

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

注記

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

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

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

注記

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

Amazon IAMインスタンスのEC2インスタンスプロファイルを作成する (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 インスタンスがアクセスする必要がある Amazon S3 バケットのみに制限することをお勧めします。 EC2 CodeDeploy エージェントを含む Amazon S3 バケットへのアクセスを許可してください。そうしないと、 CodeDeploy エージェントがインスタンスにインストールまたは更新されるとエラーが発生する可能性があります。Amazon S3 の一部の CodeDeploy リソースキットバケットにのみIAMインスタンスプロファイルアクセスを許可するには、次のポリシーを使用しますが、アクセスを禁止するバケットの行を削除します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-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、アクセス許可を追加する必要があります。詳細については、Amazon Virtual Private Cloud CodeDeploy で使用する」を参照してください。

  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て、 ロールに Amazon EC2 Systems Manager のアクセス許可を付与し、 が CodeDeploy エージェントをインストールSSMできるようにします。コマンドラインを使用してパブリック 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 コマンドを呼び出し、 という名前のIAMインスタンスプロファイルを作成しますCodeDeployDemo-EC2-Instance-Profile。インスタンスプロファイルを使用するとEC2、EC2インスタンスが最初に起動されたときに、Amazon は という名前のIAMロールを Amazon インスタンスCodeDeployDemo-EC2-Instance-Profileに渡すことができます。

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

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

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

  2. IAM コンソールのナビゲーションペインで、ポリシー を選択し、ポリシーの作成 を選択します。

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

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

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

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

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-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、アクセス許可を追加する必要があります。詳細については、Amazon Virtual Private Cloud CodeDeploy で使用する」を参照してください。

  6. [Next (次へ)] を選択します。

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

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

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

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

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

  12. [Next (次へ)] を選択します。

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

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

  15. [Next (次へ)] を選択します。

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

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

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