

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

# 步骤 4：为 Amazon EC2 实例创建 IAM 实例配置文件
<a name="getting-started-create-iam-instance-profile"></a>

**注意**  
 如果您使用的是 Amazon ECS 或 Amazon Lambda 计算平台，请跳过此步骤。

您的 Amazon EC2 实例需要获得访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库的权限。要启动与兼容的 Amazon EC2 实例 CodeDeploy，您必须创建其他 IAM 角色，即*实例配置文件*。这些说明向您介绍如何创建 IAM 实例配置文件以附加到 Amazon EC2 实例。此角色授予 CodeDeploy 代理访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库的权限。

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

**注意**  
您可以将 IAM 实例配置文件附加到 Amazon EC2 实例（在启动该实例时）或之前启动的实例。有关更多信息，请参阅[实例配置文件](https://docs.amazonaws.cn/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 代理时可能会出现错误。例如：  

   ```
   {
       "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-cn-north-1/*",
                   "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*"
               ]
           }
       ]
   }
   ```
**注意**  
如果您想[将 IAM 授权](https://docs.amazonaws.cn/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)或亚马逊虚拟私有云 (VPC) 终端节点 CodeDeploy与一起使用，则需要添加更多权限。有关更多信息，请参阅[ CodeDeploy 与 Amazon Virtual Private Cloud 配合使用](https://docs.amazonaws.cn/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.amazonaws.cn/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 实例配置文件的名称，请参阅*Amazon CLI 参考*中 IAM 部分[list-instance-profiles-for中的-](https://docs.amazonaws.cn/cli/latest/reference/iam/list-instance-profiles-for-role.html) role。

现在，您已创建要附加到 Amazon EC2 实例的 IAM 实例配置文件。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[适用于 Amazon EC2 的 IAM 角色](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。

## 为您的 Amazon EC2 实例创建 IAM 实例配置文件（控制台）
<a name="getting-started-create-iam-instance-profile-console"></a>

1. 登录 Amazon Web Services 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/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 代理时可能会出现错误。例如：  

   ```
   {
       "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-cn-north-1/*",
                   "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*"
               ]
           }
       ]
   }
   ```
**注意**  
如果您想[将 IAM 授权](https://docs.amazonaws.cn/IAM/latest/UserGuide/intro-structure.html#intro-structure-authorization)或亚马逊虚拟私有云 (VPC) 终端节点 CodeDeploy与一起使用，则需要添加更多权限。有关更多信息，请参阅[ CodeDeploy 与 Amazon Virtual Private Cloud 配合使用](https://docs.amazonaws.cn/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。此 Amazon 托管策略使实例能够使用 Systems Manager 服务核心功能。如有必要，请使用搜索框查找该策略。如果您计划使用命令行从公用 Amazon S3 存储桶安装代理，则不需要此策略。了解有关[安装 CodeDeploy 代理](https://docs.amazonaws.cn/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)的详细信息。

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

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

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

现在，您已创建要附加到 Amazon EC2 实例的 IAM 实例配置文件。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[适用于 Amazon EC2 的 IAM 角色](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)。