

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 步驟 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 角色，即*執行個體描述檔*。這些指示說明如何建立 IAM 執行個體描述檔以連接至您的 Amazon EC2 執行個體。此角色可讓 CodeDeploy 代理程式存取存放您應用程式的 Amazon S3 儲存貯體或 GitHub 儲存庫。

您可以使用 AWS CLI、IAM 主控台或 IAM APIs 建立 IAM 執行個體描述檔。

**注意**  
您可以將 IAM 執行個體設定檔連接至啟動的 Amazon EC2 執行個體或先前啟動的執行個體。如需詳細資訊，請參閱[執行個體描述檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-instanceprofile.html)。

**Topics**
+ [為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔 (CLI)](#getting-started-create-iam-instance-profile-cli)
+ [為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔 （主控台）](#getting-started-create-iam-instance-profile-console)

## 為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔 (CLI)
<a name="getting-started-create-iam-instance-profile-cli"></a>

在這些步驟中，假設您已經遵循[CodeDeploy 入門](getting-started-codedeploy.md) 中前三個步驟的說明。

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 儲存貯體。 Amazon EC2 請務必讓 存取包含 CodeDeploy 代理程式的 Amazon S3 儲存貯體。否則，在執行個體上安裝或更新 CodeDeploy 代理程式時，可能會發生錯誤。若要僅授予 IAM 執行個體描述檔對 Amazon S3 中某些 CodeDeploy 資源套件儲存貯體的存取權，請使用下列政策，但移除您想要防止存取的儲存貯體行：  

   ```
   {
     "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/*"
         ]
       }
     ]
   }
   ```
**注意**  
如果您想要搭配 CodeDeploy 使用 [ IAM 授權](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)或 Amazon Virtual Private Cloud (VPC) 端點，則需要新增更多許可。如需詳細資訊，請參閱[搭配 Amazon Virtual Private Cloud 使用 CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints)。

1. 從相同的目錄中，**CodeDeployDemo-EC2-Instance-Profile**根據第一個檔案中的資訊，呼叫 **create-role**命令來建立名為 的 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** 命令，根據第二個檔案中的資訊，將許可提供給名為 **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**以提供角色 Amazon EC2 Systems Manager 許可，讓 SSM 可以安裝 CodeDeploy 代理程式。如果您計劃使用命令列從公有 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**命令，以建立名為 的 IAM 執行個體描述檔**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 執行個體描述檔的名稱，請參閱《 *AWS CLI 參考*》IAM 區段中的 [list-instance-profiles-for-role](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html)。

您現在已建立要連接至 Amazon EC2 執行個體的 IAM 執行個體描述檔。如需詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [IAM roles for Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。

## 為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔 （主控台）
<a name="getting-started-create-iam-instance-profile-console"></a>

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在 IAM 主控台的導覽窗格中，選擇**政策**，然後選擇**建立政策**。

1. 在**指定許可**頁面上，選擇 **JSON**。

1. 移除範例`JSON`程式碼。

1. 貼上以下程式碼：

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```
**注意**  
建議您將此政策限制為只有 Amazon EC2 執行個體必須存取的 Amazon S3 儲存貯體。 Amazon EC2 請務必讓 存取包含 CodeDeploy 代理程式的 Amazon S3 儲存貯體。否則，在執行個體上安裝或更新 CodeDeploy 代理程式時，可能會發生錯誤。若要僅授予 IAM 執行個體描述檔對 Amazon S3 中某些 CodeDeploy 資源套件儲存貯體的存取權，請使用下列政策，但移除您想要防止存取的儲存貯體行：  

   ```
   {
     "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/*"
         ]
       }
     ]
   }
   ```
**注意**  
如果您想要搭配 CodeDeploy 使用 [ IAM 授權](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)或 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.  (選用) 針對 **Description (描述)**，輸入政策的描述。

1. 選擇**建立政策**。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

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**)，然後選擇**建立角色**。

   您也可以在角色描述中輸入此服務**角色的描述**。

您現在已建立要連接至 Amazon EC2 執行個體的 IAM 執行個體描述檔。如需詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [IAM roles for Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。