

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 入门 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/注册。](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，启用并创建管理用户，这样您就不会使用 root 用户执行日常任务。

**保护你的 AWS 账户根用户**

1.  选择 **Root 用户**并输入您的 AWS 账户 电子邮件地址，以账户所有者的身份登录。[AWS 管理控制台](https://console.aws.amazon.com/)在下一页上，输入您的密码。

   要获取使用根用户登录方面的帮助，请参阅《AWS 登录 用户指南》**中的 [Signing in as the root user](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 为您的根用户启用多重身份验证（MFA）。

   有关说明，请参阅 I [A *M* 用户指南中的为 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 目录 作为身份源的教程，请参阅《[用户*指南》 IAM Identity Center 目录中的使用默认设置配置AWS 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 用户指南》**中的 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 将用户分配到一个组，然后为该组分配单点登录访问权限。

   有关说明，请参阅《AWS IAM Identity Center 用户指南》**中的 [Add groups](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_cn/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_cn/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_cn/codedeploy/latest/userguide/getting-started-setting-up.html)  | 

**重要**  
我们强烈建议您将 CodeDeploy 管理员用户配置为员工身份（在 IAM Identity Center 中管理的用户），使用。 AWS CLI本指南中的许多步骤都假设您使用 AWS CLI 来执行配置。

**重要**  
如果您配置了 AWS CLI，则系统可能会提示您指定 AWS 区域。选择《AWS 一般参考》**的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的受支持区域之一。

# 步骤 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/create-launch-template.html)和[启动模板支持](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-launch-template-permissions.html)。

对于 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 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**，然后选择**创建角色**。

1. 选择**AWS 服务**，然后在**用例**下的下拉列表中选择**CodeDeploy**。

1. 选择您的使用案例：
   +  对于 EC2/本地部署，请选择。**CodeDeploy**
   +  对于 AWS Lambda 部署，请选择 **CodeDeploy Lambda**。
   +  对于 Amazon ECS 部署，请选择 **CodeDeploy -ECS**。

1. 选择**下一步**。

1. 在**添加权限**页面上，将显示该使用案例的正确权限策略。选择**下一步**。

1. 在**命名、查看和创建**页面上的**角色名称**中，输入服务角色的名称（例如，**CodeDeployServiceRole**），然后选择**创建角色**。

   您还可以在**角色描述**中输入此服务角色的描述。

1. 如果您希望此服务角色有权访问所有当前支持的终端节点，则您已完成了此过程。

   要限制此服务角色访问某些端点，请继续执行此过程中的其余步骤。

1. 在角色列表中搜索并选择您刚刚创建的角色（`CodeDeployServiceRole`）。

1. 选择 **Trust relationships（信任关系）**选项卡。

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://`。此命令中需要该项。

   在命令输出中，记录 `Arn` 对象下方 `Role` 条目的值。稍后创建部署组时将需要它。如果您忘记了值，请按照[获取服务角色 ARN（CLI）](#getting-started-get-service-role-cli)中的说明操作。

1. 您使用的托管策略取决于计算平台。
   + 如果您要部署到 EC2/本地计算平台，请：

     调用 **attach-role-policy** 命令以根据名为 **AWSCodeDeployRole** 的 IAM 托管策略向名为 **CodeDeployServiceRole** 的服务角色授予权限。例如：

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

     调用 **attach-role-policy** 命令以根据名为 **AWSCodeDeployRoleForLambda** 或 **AWSCodeDeployRoleForLambdaLimited** 的 IAM 托管策略向名为 **CodeDeployServiceRole** 的服务角色授予权限。例如：

     ```
     aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
     ```
   + 如果您要部署到 Amazon ECS 计算平台，请：

     调用 **attach-role-policy** 命令以根据名为 **AWSCodeDeployRoleForECS** 或 **AWSCodeDeployRoleForECSLimited** 的 IAM 托管策略向名为 **CodeDeployServiceRole** 的服务角色授予权限。例如：

     ```
     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 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**。

1. 在**筛选条件**框中，键入 **CodeDeployServiceRole**，然后按 Enter。

1. 选择 **CodeDeployServiceRole**。

1. 记下 **Role ARN（角色 ARN）**字段的值。

## 获取服务角色 ARN（CLI）
<a name="getting-started-get-service-role-cli"></a>

要使用获取服务角色的 ARN，请对名为的服务角色调用**get-role**命令： AWS CLI **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 管理控制台 并打开 AWS IAM Identity Center 控制台，网址为[https://console.aws.amazon.com/singlesignon/](https://console.aws.amazon.com/singlesignon/)。

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 模板启动与兼容的 Amazon EC2 实例 CodeDeploy。要使用 CloudFormation 模板创建应用程序、部署组或部署配置，必须通过向 CodeDeploy 管理用户的权限策略添加权限来提供访问`cloudformation:*`权限 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. 在注销之前，请确保您拥有 CodeDeploy 管理员 AWS 用户的访问门户 URL 以及用户名和一次性密码。
**注意**  
如果您没有这些信息，请前往 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 库的权限。要启动与兼容的 Amazon EC2 实例 CodeDeploy，您必须创建其他 IAM 角色，即*实例配置文件*。这些说明向您介绍如何创建 IAM 实例配置文件以附加到 Amazon EC2 实例。此角色授予 CodeDeploy 代理访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库的权限。

您可以使用 AWS CLI、IAM 控制台或 IAM 创建 IAM 实例配置文件 APIs。

**注意**  
您可以将 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 存储桶。确保允许访问包含 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/*"
         ]
       }
     ]
   }
   ```
**注意**  
如果您想[将 IAM 授权](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)或亚马逊虚拟私有云 (VPC) 终端节点 CodeDeploy与一起使用，则需要添加更多权限。有关更多信息，请参阅[ CodeDeploy 与 Amazon Virtual Private Cloud 配合使用](https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints)。

1. 从同一目录调用 **create-role** 命令，根据第一个文件中的信息创建名为 的 **CodeDeployDemo-EC2-Instance-Profile** 角色：
**重要**  
务必在文件名前包含 `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** 命令，创建名为 **CodeDeployDemo-EC2-Instance-Profile** 的 IAM 实例配置文件。此实例配置文件使 Amazon EC2 能够在 Amazon EC2 实例首次启动时将名为 **CodeDeployDemo-EC2-Instance-Profile** 的 IAM 角色传递给该实例：

   ```
   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中的-](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html) role。

现在，您已创建要附加到 Amazon EC2 实例的 IAM 实例配置文件。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[适用于 Amazon EC2 的 IAM 角色](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 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/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 存储桶。确保允许访问包含 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/*"
         ]
       }
     ]
   }
   ```
**注意**  
如果您想[将 IAM 授权](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)或亚马逊虚拟私有云 (VPC) 终端节点 CodeDeploy与一起使用，则需要添加更多权限。有关更多信息，请参阅[ CodeDeploy 与 Amazon Virtual Private Cloud 配合使用](https://docs.aws.amazon.com/codedeploy/latest/userguide/vpc-endpoints)。

1.  选择**下一步**。

1. 在**审核和创建**页面上的**策略名称**框中，键入 **CodeDeployDemo-EC2-Permissions**。

1.  （可选）对于**描述**，键入策略的描述。

1. 选择**创建策略**。

1. 在导航窗格中，选择 **Roles（角色）**，然后选择 **Create role（创建角色）**。

1. 在**使用案例**下，选择 **EC2** 使用案例。

1. 选择**下一步**。

1.  在策略列表中，选中您刚刚创建的策略旁边的复选框（**CodeDeployDemo-ec2-** Permissions）。如有必要，请使用搜索框查找该策略。

1.  要使用 Systems Manager 安装或配置 CodeDeploy 代理，请选中**亚马逊**旁边的复选框SSMManagedInstanceCore。此 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 用户指南》**中的[适用于 Amazon EC2 的 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。