

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

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