

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

# CodeDeploy 入門
<a name="getting-started-codedeploy"></a>

**Topics**
+ [步驟 1：設定](getting-started-setting-up.md)
+ [步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)
+ [步驟 3：限制 CodeDeploy 使用者的許可](getting-started-policy.md)
+ [步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)

# 步驟 1：設定
<a name="getting-started-setting-up"></a>

 AWS CodeDeploy 第一次使用 之前，您必須先完成設定步驟。這些步驟涉及建立 AWS 帳戶 （如果您還沒有帳戶），以及具有程式設計存取權的管理使用者。

在本指南中，管理使用者稱為 **CodeDeploy 管理使用者**。

## 註冊 AWS 帳戶
<a name="sign-up-for-aws"></a>

如果您沒有 AWS 帳戶，請完成下列步驟來建立一個。

**註冊 AWS 帳戶**

1. 開啟 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 請遵循線上指示進行。

   部分註冊程序需接收來電或簡訊，並在電話鍵盤輸入驗證碼。

   當您註冊 時 AWS 帳戶，*AWS 帳戶根使用者*會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務，請將管理存取權指派給使用者，並且僅使用根使用者來執行[需要根使用者存取權的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時登錄 [https://aws.amazon.com/](https://aws.amazon.com/) 並選擇**我的帳戶**，以檢視您目前的帳戶活動並管理帳戶。

## 建立具有管理存取權的使用者
<a name="create-an-admin"></a>

註冊 後 AWS 帳戶，請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center和建立管理使用者，以免將根使用者用於日常任務。

**保護您的 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[AWS 管理主控台](https://console.aws.amazon.com/)身分登入 。在下一頁中，輸入您的密碼。

   如需使用根使用者登入的說明，請參閱 *AWS 登入 使用者指南*中的[以根使用者身分登入](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

   如需說明，請參閱《*IAM 使用者指南*》中的[為您的 AWS 帳戶 根使用者 （主控台） 啟用虛擬 MFA 裝置](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**建立具有管理存取權的使用者**

1. 啟用 IAM Identity Center。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[啟用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，將管理存取權授予使用者。

   如需使用 IAM Identity Center 目錄 做為身分來源的教學課程，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用預設值設定使用者存取 IAM Identity Center 目錄](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理存取權的使用者身分登入**
+ 若要使用您的 IAM Identity Center 使用者簽署，請使用建立 IAM Identity Center 使用者時傳送至您電子郵件地址的簽署 URL。

  如需使用 IAM Identity Center 使用者登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[登入 AWS 存取入口網站](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**指派存取權給其他使用者**

1. 在 IAM Identity Center 中，建立一個許可集來遵循套用最低權限的最佳實務。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[建立許可集](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 將使用者指派至群組，然後對該群組指派單一登入存取權。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[新增群組](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

您現在已建立並登入為 **CodeDeploy 管理使用者**。

## 授與程式設計存取權
<a name="getting-started-setting-up-programmatic"></a>

如果使用者想要與 AWS 外部互動，則需要程式設計存取權 AWS 管理主控台。授予程式設計存取權的方式取決於正在存取的使用者類型 AWS。

若要授予使用者程式設計存取權，請選擇下列其中一個選項。


****  

| 哪個使用者需要程式設計存取權？ | 到 | 根據 | 
| --- | --- | --- | 
| IAM | （建議） 使用主控台登入資料做為臨時登入資料，以簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/getting-started-setting-up.html)  | 
|  人力資源身分 (IAM Identity Center 中管理的使用者)  | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/getting-started-setting-up.html)  | 
| IAM | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs | 遵循《IAM 使用者指南》中[將臨時登入資料與 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)搭配使用的指示。 | 
| IAM | (不建議使用)使用長期憑證簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/getting-started-setting-up.html)  | 

**重要**  
我們強烈建議您使用 將 CodeDeploy 管理使用者設定為人力資源身分 （在 IAM Identity Center 中管理的使用者） AWS CLI。本指南中的許多程序假設您使用 AWS CLI 來執行組態。

**重要**  
如果您設定 AWS CLI，系統可能會提示您指定 AWS 區域。在 中選擇區域[和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個支援的區域*AWS 一般參考*。

# 步驟 2：建立 CodeDeploy 的服務角色
<a name="getting-started-create-service-role"></a>

在 中 AWS，服務角色用於授予 AWS 服務的許可，以便其可以存取 AWS 資源。您連接到服務角色的政策會決定服務可存取哪些資源，以及該服務可以如何處理這些資源。

您為 CodeDeploy 建立的服務角色必須獲得運算平台所需的許可。如果您部署到多個運算平台，請為每個平台建立一個服務角色。若要新增許可，請連接下列一或多個 AWS 提供的政策：

對於 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 使用者指南》中的 [步驟 2：建立服務角色](#getting-started-create-service-role)、建立 Auto Scaling 群組的啟動範本，以及[啟動範本支援](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-launch-template-permissions.html)。 [ Auto Scaling ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) *Amazon EC2 Auto Scaling * 

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

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

1. 若您希望此服務角色擁有存取目前所有支援端點的許可，您即已完成此程序。

   若要限制此服務角色無法存取某些端點，請繼續此程序中的其餘步驟。

1. 在角色清單中，搜尋並選擇您剛建立的角色 (`CodeDeployServiceRole`)。

1. 選擇**信任關係**標籤。

1. 選擇**編輯信任政策**。

   您應該會看到以下政策，提供服務角色所有支援端點的存取許可：

   ```
   {
       "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://`。這是此命令必要項目。

   在命令的輸出中，記下 `Role` 物件下 `Arn` 項目的值。您稍後將需要它來建立部署群組。若您忘記該值，請遵循[取得服務角色 ARN (CLI)](#getting-started-get-service-role-cli) 中的說明。

1. 您使用的受管政策取決於運算平台。
   + 如果您的部署是部署到 EC2/現場部署運算平台：

     呼叫 **attach-role-policy**命令，根據名為 的 IAM 受管政策**CodeDeployServiceRole**，為名為 的服務角色提供許可**AWSCodeDeployRole**。例如：

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
     ```
   + 如果您的部署是到 AWS Lambda 運算平台：

     呼叫 **attach-role-policy**命令，根據名為 **AWSCodeDeployRoleForLambda**或 的 IAM 受管政策**CodeDeployServiceRole**，為名為 的服務角色提供許可**AWSCodeDeployRoleForLambdaLimited**。例如：

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
     ```
   + 如果您的部署是 Amazon ECS 運算平台：

     呼叫 **attach-role-policy**命令，根據名為 **AWSCodeDeployRoleForECS**或 的 IAM 受管政策**CodeDeployServiceRole**，為名為 的服務角色提供許可**AWSCodeDeployRoleForECSLimited**。例如：

     ```
     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：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**角色**。

1. 在 **Filter (篩選條件)** 方塊中，輸入 **CodeDeployServiceRole**，然後按 Enter 鍵。

1. 選擇 **CodeDeployServiceRole**。

1. 記下 **Role ARN (角色 ARN)** 欄位的值。

## 取得服務角色 ARN (CLI)
<a name="getting-started-get-service-role-cli"></a>

若要使用 AWS CLI 取得服務角色的 ARN，請針對名為 的服務角色呼叫 **get-role**命令**CodeDeployServiceRole**：

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

傳回的值即為服務角色的 ARN。

# 步驟 3：限制 CodeDeploy 使用者的許可
<a name="getting-started-policy"></a>

基於安全考量，建議您將您在 中建立的管理使用者許可限制[步驟 1：設定](getting-started-setting-up.md)為在 CodeDeploy 中建立和管理部署所需的許可。

使用下列一系列程序來限制 CodeDeploy 管理使用者的許可。

**開始之前**
+ 請確定您已依照 中的指示，在 IAM Identity Center 中建立 CodeDeploy 管理使用者[步驟 1：設定](getting-started-setting-up.md)。

**建立許可集合**

您稍後會將此許可集指派給 CodeDeploy 管理使用者。

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

1. 在導覽窗格中，選擇**許可集**，然後選擇**建立許可集**。

1. 選擇**自訂許可集**。

1. 選擇**下一步**。

1. 選擇**內嵌政策**。

1. 移除範例程式碼。

1. 新增下列政策代碼：

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CodeDeployAccessPolicy",
               "Effect": "Allow",
               "Action": [
                   "autoscaling:*",
                   "codedeploy:*",
                   "ec2:*",
                   "lambda:*",
                   "ecs:*",
                   "elasticloadbalancing:*",
                   "iam:AddRoleToInstanceProfile",
                   "iam:AttachRolePolicy",
                   "iam:CreateInstanceProfile",
                   "iam:CreateRole",
                   "iam:DeleteInstanceProfile",
                   "iam:DeleteRole",
                   "iam:DeleteRolePolicy",
                   "iam:GetInstanceProfile",
                   "iam:GetRole",
                   "iam:GetRolePolicy",
                   "iam:ListInstanceProfilesForRole",
                   "iam:ListRolePolicies",
                   "iam:ListRoles",
                   "iam:PutRolePolicy",
                   "iam:RemoveRoleFromInstanceProfile",
                   "s3:*",
                   "ssm:*"
               ],
               "Resource": "*"
           },
           {
               "Sid": "CodeDeployRolePolicy",
               "Effect": "Allow",
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::111122223333:role/CodeDeployServiceRole"
           }
       ]
   }
   ```

------

   在此政策中，將 *arn：aws：iam：：account-ID：role/CodeDeployServiceRole* 取代為您在 中建立的 CodeDeploy 服務角色的 ARN 值[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。您可以在 IAM 主控台的服務角色詳細資訊頁面中找到 ARN 值。

   上述政策可讓您將應用程式部署至 AWS Lambda 運算平台、EC2/現場部署運算平台和 Amazon ECS 運算平台。

   您可以使用本文件中提供的 CloudFormation 範本來啟動與 CodeDeploy 相容的 Amazon EC2 執行個體。若要使用 CloudFormation 範本建立應用程式、部署群組或部署組態，您必須將 `cloudformation:*` 許可新增至 CodeDeploy 管理使用者的許可政策，以提供對 的存取權 CloudFormation，以及 CloudFormation 依賴 AWS 的服務和動作，如下所示：

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "cloudformation:*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 選擇**下一步**。

1. 在**許可集名稱**中，輸入：

   ```
   CodeDeployUserPermissionSet
   ```

1. 選擇**下一步**。

1. 在**檢閱和建立**頁面上，檢閱資訊，然後選擇**建立**。

**將許可集指派給 CodeDeploy 管理使用者**

1. 在導覽窗格中，選擇 **AWS 帳戶**，然後選取 AWS 帳戶 您目前登入之 旁的核取方塊。

1. 選擇**指派使用者或群組**按鈕。

1. 選擇**使用者**索引標籤。

1. 選取 CodeDeploy 管理使用者旁的核取方塊。

1. 選擇**下一步**。

1. 選取 旁的核取方塊`CodeDeployUserPermissionSet`。

1. 選擇**下一步**。

1. 檢閱資訊，然後選擇**提交**。

   您現在已將 CodeDeploy 管理使用者 和 `CodeDeployUserPermissionSet` 指派給您的 AWS 帳戶，並將其繫結在一起。

**以 CodeDeploy 管理使用者身分登出並重新登入**

1. 登出之前，請確定您擁有 AWS 存取入口網站 URL 以及 CodeDeploy 管理使用者的使用者名稱和一次性密碼。
**注意**  
如果您沒有此資訊，請前往 IAM Identity Center 中的 CodeDeploy 管理使用者詳細資訊頁面，選擇**重設密碼**、**產生一次性密碼 【...】** 和再次**重設密碼**，以在畫面上顯示資訊。

1. 登出 AWS。

1. 將 AWS 存取入口網站 URL 貼到瀏覽器的地址列。

1. 以 CodeDeploy 管理使用者身分登入。

   畫面上會出現一個**AWS 帳戶**方塊。

1. 選擇 **AWS 帳戶**，然後選擇 AWS 帳戶 您指派 CodeDeploy 管理使用者和許可集的 名稱。

1. 在 旁`CodeDeployUserPermissionSet`，選擇 **管理主控台**。

    AWS 管理主控台 隨即出現。您現在以具有有限許可的 CodeDeploy 管理使用者身分登入。您現在可以以此使用者身分執行 CodeDeploy 相關操作，以及*僅*執行 CodeDeploy 相關操作。

# 步驟 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)。