

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

# ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する
<a name="getting-started-create-iam-instance-profile"></a>

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

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

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

**注記**  
IAM インスタンスプロファイルは、起動時の Amazon EC2 インスタンスまたは以前に起動したインスタンスにアタッチできます。詳細については、「[インスタンスプロファイル](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-instanceprofile.html)」を参照してください。

**Topics**
+ [Amazon EC2 インスタンス(CLI)の IAM インスタンスプロファイルを作成する](#getting-started-create-iam-instance-profile-cli)
+ [Amazon EC2 インスタンス(コンソール)の IAM インスタンスプロファイルを作成する](#getting-started-create-iam-instance-profile-console)

## Amazon EC2 インスタンス(CLI)の IAM インスタンスプロファイルを作成する
<a name="getting-started-create-iam-instance-profile-cli"></a>

以下のステップでは、「[CodeDeploy の開始方法](getting-started-codedeploy.md)」にある最初の 3 つの手順の指示に従っていることを前提としています。

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": "ec2.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "ec2.cn-north-1.amazonaws.com",
                       "ec2.cn-northwest-1.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 同じディレクトリで、`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:::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 認可](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)または CodeDeploy を使用する Amazon Virtual Private Cloud (VPC) エンドポイントを使用したい場合は、アクセス許可を追加する必要があります。詳細については、[[Amazon Virtual Private Cloud で CodeDeploy を使う](https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints)] を参照してください。

1. 同じディレクトリから、**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
   ```

1. 同じディレクトリから、**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
   ```

1. **attach-role-policy** を呼び出して、SSM が CodeDeploy エージェントをインストールできるように、ロールに Amazon EC2 Systems Manager とアクセス許可を付与します。コマンドラインを使用してパブリック Amazon S3 バケットからエージェントをインストールする場合、このポリシーは必要ありません。「[CodeDeploy エージェントのインストール](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)」の詳細を確認してください。

   ```
   aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile
   ```

1. **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 リファレンス](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html)の IAM セクションで「*list-instance-profiles-for-role*」を参照してください。

これで、IAM インスタンスにアタッチする Amazon EC2 インスタンスプロファイルを作成しました。詳細については、[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) の「*Amazon EC2 の IAM ロール*」を参照してください。

## Amazon EC2 インスタンス(コンソール)の IAM インスタンスプロファイルを作成する
<a name="getting-started-create-iam-instance-profile-console"></a>

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

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

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

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

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

   ```
   {
       "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:::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 認可](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)または CodeDeploy を使用する Amazon Virtual Private Cloud (VPC) エンドポイントを使用したい場合は、アクセス許可を追加する必要があります。詳細については、[[Amazon Virtual Private Cloud で CodeDeploy を使う](https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints)] を参照してください。

1.  [**次へ**] を選択します。

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

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

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

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

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

1. [**次へ**] を選択します。

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

1.  Systems Manager を使用して CodeDeploy エージェントをインストールまたは設定するには、[**AmazonSSMManagedInstanceCore**] の横にあるボックスを選択します。この AWS 管理ポリシーにより、インスタンスは Systems Manager サービスコア機能を使用できます。必要に応じて、検索ボックスを使用してポリシーを見つけます。コマンドラインを使用してパブリック Amazon S3 バケットからエージェントをインストールする場合、このポリシーは必要ありません。「[CodeDeploy エージェントのインストール](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)」の詳細を確認してください。

1.  [**次へ**] を選択します。

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

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

これで、IAM インスタンスにアタッチする Amazon EC2 インスタンスプロファイルを作成しました。詳細については、[Amazon EC2 ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) の「*Amazon EC2 の IAM ロール*」を参照してください。