

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

# ステップ 2: CodeDeployのサービスのロールを作成する
<a name="getting-started-create-service-role"></a>

では AWS、サービスロールを使用して AWS サービスにアクセス許可を付与し、 AWS リソースにアクセスできるようにします。サービスロールにアタッチするポリシーによって、どの リソースにサービスがアクセスできるか、およびそれらのリソースで何ができるかが決まります。

CodeDeploy に作成するサービスロールで、コンピューティングプラットフォームに必要なアクセス許可がを付与する必要があります。​ 複数のコンピューティングプラットフォームにデプロイした場合、それぞれにサービスロールを 1 つずつ作成します。アクセス許可を追加するには、次の AWS 指定されたポリシーを 1 つ以上アタッチします。

EC2/オンプレミスのデプロイには、**AWSCodeDeployRole** ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。
+ インスタンスのタグを読み取る、または Amazon EC2 Auto Scaling グループ名により Amazon EC2 インスタンスを識別します。
+ Amazon EC2 Auto Scaling グループ、ライフサイクルフック、スケーリングポリシーの読み取り、作成、更新、削除を行います。
+ Amazon SNS トピックに情報を公開します。
+ CloudWatch アラームに関する情報を取得します。
+ Elastic Load Balancing を読み、更新します。
**注記**  
 起動テンプレートを使用して Auto Scaling グループを作成する場合は、次のアクセス許可を追加する必要があります。  
 `ec2:RunInstances` 
 `ec2:CreateTags` 
 `iam:PassRole` 
詳細については、「[Amazon EC2 Auto Scaling ユーザーガイド](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html)」、「[Auto Scaling グループの起動テンプレートの作成](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-launch-template-permissions.html)」、および「*起動テンプレートサポート*」にはの「[ステップ 2: サービスロールを作成する](#getting-started-create-service-role)」を参照してください。

Amazon ECS のデプロイの場合、サポートサービスへのフルアクセスが必要な場合は、 **AWSCodeDeployRoleForECS** ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。
+  Amazon ECS タスクセットを読んで、更新、削除します。
+  Elastic Load Balancing ターゲットグループ、リスナー、ルールを更新します。
+  AWS Lambda 関数を呼び出します。
+  Amazon S3 バケットのリビジョンファイルにアクセスします。
+  CloudWatch アラームに関する情報を取得します。
+ Amazon SNS トピックに情報を公開します。

Amazon ECS のデプロイの場合、サポートサービスへの制限付きのアクセスが必要な場合は、**AWSCodeDeployRoleForECSLimited** ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。
+  Amazon ECS タスクセットを読んで、更新、削除します。
+  CloudWatch アラームに関する情報を取得します。
+ Amazon SNS トピックに情報を公開します。

 AWS Lambda デプロイでは、Amazon SNS への発行を許可する場合は、 **AWSCodeDeployRoleForLambda**ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。
+  AWS Lambda 関数とエイリアスの読み取り、更新、呼び出しを行います。
+  Amazon S3 バケットのリビジョンファイルにアクセスします。
+  CloudWatch アラームに関する情報を取得します。
+  Amazon SNS トピックに情報を公開します。

 AWS Lambda デプロイでは、Amazon SNS へのアクセスを制限する場合は、 **AWSCodeDeployRoleForLambdaLimited**ポリシーをアタッチします。これは、サービスロールで以下を実行するためのアクセス許可を提供します。
+  AWS Lambda 関数とエイリアスの読み取り、更新、呼び出しを行います。
+  Amazon S3 バケットのリビジョンファイルにアクセスします。
+  CloudWatch アラームに関する情報を取得します。

また、サービスロールの設定の一環として、アクセス許可を付与するエンドポイントを指定するために信頼関係を更新します。

サービスロールは、IAM コンソール、 AWS CLI、または IAM APIs を使用して作成できます。

**Topics**
+ [サービスロールの作成 (コンソール)](#getting-started-create-service-role-console)
+ [サービスロールの作成 (CLI)](#getting-started-create-service-role-cli)
+ [サービスロール ARN の取得 (コンソール)](#getting-started-get-service-role-console)
+ [サービスロール ARN の取得 (CLI)](#getting-started-get-service-role-cli)

## サービスロールの作成 (コンソール)
<a name="getting-started-create-service-role-console"></a>

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

1. ナビゲーションペインで **ロール** を選択してから、**ロールを作成する** を選択します。

1. **AWS サービス**を選択し、「**ユースケース**」のドロップダウンリストから [**CodeDeploy**] を選択します。

1. ユースケースを選択します。
   +  EC2/オンプレミスのデプロイ **CodeDeploy** を選択 
   +  AWS Lambda デプロイの場合は、**CodeDeploy for Lambda** を選択します。
   +  Amazon ECS デプロイの場合は、**CodeDeploy-ECS** を選択 

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

1. 「**アクセス許可を追加**」ページに、そのユースケースに適したアクセス許可ポリシーが表示されます。[**次へ**] を選択します。

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

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

1. 現在サポートされているすべてのエンドポイントへのアクセス許可をサービスロールに付与する場合は、この手順を終了します。

   このサービスロールから一部のエンドポイントへのアクセスを制限するには、この手順の残りのステップに進みます。

1. ロールの一覧で、作成したロール (`CodeDeployServiceRole`) を検索し、選択します。

1. **[信頼関係]** タブを選択します。

1. **[Edit trust policy]** (信頼ポリシーを編集) を選択します。

   次のポリシーでは、サポートされているすべてのエンドポイントにアクセスする権限をサービスロールに付与します。

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

   サポートされているエンドポイントの一部にのみアクセスする権限をサービスロールに付与するには、信頼ポリシーテキストボックスの内容を以下のポリシーに置き換えます。アクセスを除外するエンドポイントの行を削除し、[**ポリシーの更新**] を選択します。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       
                       "codedeploy.us-east-1.amazonaws.com",
                       "codedeploy.us-east-2.amazonaws.com",
                       "codedeploy.us-west-1.amazonaws.com",
                       "codedeploy.us-west-2.amazonaws.com",
                       "codedeploy.ca-central-1.amazonaws.com",
                       "codedeploy.ap-east-1.amazonaws.com",                  
                       "codedeploy.ap-northeast-1.amazonaws.com",
                       "codedeploy.ap-northeast-2.amazonaws.com",
                       "codedeploy.ap-northeast-3.amazonaws.com",
                       "codedeploy.ap-southeast-1.amazonaws.com",
                       "codedeploy.ap-southeast-2.amazonaws.com",
                       "codedeploy.ap-southeast-3.amazonaws.com",
                       "codedeploy.ap-southeast-4.amazonaws.com",
                       "codedeploy.ap-south-1.amazonaws.com",
                       "codedeploy.ap-south-2.amazonaws.com",
                       "codedeploy.ca-central-1.amazonaws.com",
                       "codedeploy.eu-west-1.amazonaws.com",
                       "codedeploy.eu-west-2.amazonaws.com",
                       "codedeploy.eu-west-3.amazonaws.com",
                       "codedeploy.eu-central-1.amazonaws.com",
                       "codedeploy.eu-central-2.amazonaws.com",
                       "codedeploy.eu-north-1.amazonaws.com",
                       "codedeploy.eu-south-1.amazonaws.com",
                       "codedeploy.eu-south-2.amazonaws.com",
                       "codedeploy.il-central-1.amazonaws.com",
                       "codedeploy.me-central-1.amazonaws.com",
                       "codedeploy.me-south-1.amazonaws.com",
                       "codedeploy.sa-east-1.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

サービスロールの作成の詳細については、*IAM ユーザーガイド*の[「 AWS サービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-creatingrole-service.html)」を参照してください。

## サービスロールの作成 (CLI)
<a name="getting-started-create-service-role-cli"></a>

1. 開発マシンで、たとえば、`CodeDeployDemo-Trust.json` という名前のテキストファイルを作成します。このファイルは、CodeDeploy がユーザーの代理操作の実行を許可するのに使用されます。

   次のいずれかを行います。
   + サポートされているすべての AWS リージョンへのアクセスを許可するには、次のコンテンツを ファイルに保存します。

     ```
     {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": [
                         "codedeploy.amazonaws.com"
                     ]
                 },
                 "Action": "sts:AssumeRole"
             }
         ]
     }
     ```
   + サポートされているリージョンの一部にのみアクセスする権限を付与するには、ファイルに次の内容を入力し、アクセスを除外するリージョンの行を削除します。

     ```
     {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": [
                         
                         "codedeploy.us-east-1.amazonaws.com",
                         "codedeploy.us-east-2.amazonaws.com",
                         "codedeploy.us-west-1.amazonaws.com",
                         "codedeploy.us-west-2.amazonaws.com",
                         "codedeploy.ca-central-1.amazonaws.com",
                         "codedeploy.ap-east-1.amazonaws.com",                  
                         "codedeploy.ap-northeast-1.amazonaws.com",
                         "codedeploy.ap-northeast-2.amazonaws.com",
                         "codedeploy.ap-northeast-3.amazonaws.com",
                         "codedeploy.ap-southeast-1.amazonaws.com",
                         "codedeploy.ap-southeast-2.amazonaws.com",
                         "codedeploy.ap-southeast-3.amazonaws.com",
                         "codedeploy.ap-southeast-4.amazonaws.com",
                         "codedeploy.ap-south-1.amazonaws.com",
                         "codedeploy.ap-south-2.amazonaws.com",
                         "codedeploy.ca-central-1.amazonaws.com",
                         "codedeploy.eu-west-1.amazonaws.com",
                         "codedeploy.eu-west-2.amazonaws.com",
                         "codedeploy.eu-west-3.amazonaws.com",
                         "codedeploy.eu-central-1.amazonaws.com",
                         "codedeploy.eu-central-2.amazonaws.com",
                         "codedeploy.eu-north-1.amazonaws.com",
                         "codedeploy.eu-south-1.amazonaws.com",
                         "codedeploy.eu-south-2.amazonaws.com",
                         "codedeploy.il-central-1.amazonaws.com",
                         "codedeploy.me-central-1.amazonaws.com",
                         "codedeploy.me-south-1.amazonaws.com",
                         "codedeploy.sa-east-1.amazonaws.com"
                     ]
                 },
                 "Action": "sts:AssumeRole"
             }
         ]
     }
     ```
**注記**  
リストにある最後のエンドポイントの後にコンマを使用しないでください。

1. 同じディレクトリから、**create-role** コマンドを呼び出し、先ほど作成したテキストファイルの情報に基づく **CodeDeployServiceRole** という名前のサービスロールを作成します。

   ```
   aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
   ```
**重要**  
ファイル名の前に必ず `file://` を含めてください。このコマンドでは必須です。

   コマンドの出力で、`Arn` オブジェクトの下にある `Role` エントリの値を書きとめておきます。これは、後でデプロイグループを作成する際に必要になります。値を忘れた場合は、[サービスロール ARN の取得 (CLI)](#getting-started-get-service-role-cli) の手順に従います。

1. 使用する管理ポリシーは、コンピューティングプラットフォーム によって異なります。
   + EC2/オンプレミスコンピューティングプラットフォームにデプロイする場合は、以下を行います。

     **attach-role-policy** コマンドを呼び出し、**CodeDeployServiceRole** という名前のサービスロールに対して、**AWSCodeDeployRole** という名前の IAM マネージドポリシーに基づくアクセス許可を付与します。例えば、次のようになります。

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
     ```
   + Lambda AWS コンピューティングプラットフォームへのデプロイの場合:

     **attach-role-policy** コマンドを呼び出し、**CodeDeployServiceRole** という名前のサービスロールに対して、**AWSCodeDeployRoleForLambda** または **AWSCodeDeployRoleForLambdaLimited** という名前の IAM マネージドポリシーに基づくアクセス許可を付与します。例: 

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
     ```
   + Amazon ECS コンピューティングプラットフォームへのデプロイの場合。

     **attach-role-policy** コマンドを呼び出し、**CodeDeployServiceRole** という名前のサービスロールに対して、**AWSCodeDeployRoleForECS** または **AWSCodeDeployRoleForECSLimited** という名前の IAM マネージドポリシーに基づくアクセス許可を付与します。例: 

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS
     ```

サービスロールの作成の詳細については、*IAM* [ユーザーガイドの「 AWS サービスのロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-role-xacct.html)」を参照してください。

## サービスロール ARN の取得 (コンソール)
<a name="getting-started-get-service-role-console"></a>

IAM コンソールを使用してサービスロールの ARN を取得するには:

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

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**フィルタ**] テキストボックスに、「**CodeDeployServiceRole**」と入力して、Enter キーを押します。

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

1. [**ロールの ARN**] フィールドの値を書き留めます。

## サービスロール ARN の取得 (CLI)
<a name="getting-started-get-service-role-cli"></a>

を使用してサービスロールの ARN AWS CLI を取得するには、 という名前のサービスロールに対して **get-role** コマンドを呼び出します**CodeDeployServiceRole**。

```
aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text
```

返される値はサービスロールの ARN です。