AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

步骤 4:为 Amazon EC2 实例创建 IAM 实例配置文件

注意

如果您正在使用 AWS Lambda 计算平台,请跳过此步骤。AWS Lambda 部署会部署一个无服务器的 Lambda 函数版本,因此不需要 Amazon EC2 实例的实例配置文件。

您的 Amazon EC2 实例需要权限才能访问用于存储将由 AWS CodeDeploy 部署的应用程序的 Amazon S3 存储桶或 GitHub 存储库。要启动与 AWS CodeDeploy 兼容的 Amazon EC2 实例,您必须创建附加 IAM 角色(实例配置文件)。这些说明向您介绍如何创建 IAM 实例配置文件以附加到 Amazon EC2 实例。此角色向 AWS CodeDeploy 授予对存储应用程序的 Amazon S3 存储桶或 GitHub 存储库的访问权限。

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

注意

您可以将 IAM 实例配置文件附加到 Amazon EC2 实例 (在启动该实例时) 或之前启动的实例。有关更多信息,请参阅实例配置文件

为 Amazon EC2 实例创建 IAM 实例配置文件 (CLI)

在这些步骤中,我们假定您已遵循AWS CodeDeploy 入门中前三步的说明。

  1. 在您的开发计算机上,创建一个名为 CodeDeployDemo-EC2-Trust.json 的文本文件。粘贴以下内容,这将允许 Amazon EC2 代表您工作:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "ec2.cn-north-1.amazonaws.com.cn", "ec2.cn-northwest-1.amazonaws.com.cn" ] }, "Action": "sts:AssumeRole" } ] }
  2. 在相同的目录中,创建一个名为 CodeDeployDemo-EC2-Permissions.json 的文本文件。粘贴以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }

    注意

    We recommend that you restrict this policy to only those Amazon S3 buckets your Amazon EC2 instances must access. Make sure to give access to the Amazon S3 buckets that contain the AWS CodeDeploy agent. Otherwise, an error may occur when the AWS CodeDeploy agent is installed or updated on the instances. For example:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws-cn:-cn:s3:::codedeploydemobucket/*", "arn:aws-cn:-cn:s3:::aws-codedeploy-cn-north-1/*", "arn:aws-cn:-cn:s3:::aws-codedeploy-cn-northwest-1/* ] } ] }
  3. 从同一目录中调用 create-role 命令,以基于第一个文件中的信息创建一个名为 CodeDeployDemo-EC2-Instance-Profile 的 IAM 角色:

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json
  4. 从同一目录中调用 put-role-policy 命令,以基于第二个文件中的信息向名为 CodeDeployDemo-EC2-Instance-Profile 的角色提供权限:

    重要

    Be sure to include file:// before the file name. It is required in this command.

    aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
  5. 在调用 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-role

现在,您已创建要附加到 Amazon EC2 实例的 IAM 实例配置文件。有关更多信息,请参阅 Amazon EC2 用户指南 中的 Amazon EC2 的 IAM 角色

为 Amazon EC2 实例创建 IAM 实例配置文件(控制台)

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 在 IAM 控制台的导航窗格中,选择 Policies,然后选择 Create policy。(如果 Get Started 按钮出现,选择此按钮,然后选择 Create Policy。)

  3. Create Your Own Policy 旁,选择 Select

  4. Policy Name 框中,键入 CodeDeployDemo-EC2-Permissions

  5. Policy Document 框中,粘贴以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }

    注意

    We recommend that you restrict this policy to only those Amazon S3 buckets your Amazon EC2 instances must access. Make sure to give access to the Amazon S3 buckets that contain the AWS CodeDeploy agent. Otherwise, an error may occur when the AWS CodeDeploy agent is installed or updated on the instances. For example:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws-cn:-cn:s3:::codedeploydemobucket/*", "arn:aws-cn:-cn:s3:::aws-codedeploy-cn-north-1/*", "arn:aws-cn:-cn:s3:::aws-codedeploy-cn-northwest-1/* ] } ] }
  6. 选择 Create Policy

  7. 在导航窗格中,选择 Roles,然后选择 Create Role

  8. Select role type 页面上,选择 AWS service,然后从 Choose the service that will use this role 列表中,选择 EC2

  9. 选择您的使用案例列表中,选择 EC2

  10. 选择 Next: Permissions

  11. Attached permissions policy 页面上,如果有一个框紧挨着 CodeDeployDemo-EC2-Permissions,选择它,然后选择 Next: Review

  12. Review 页面上的 Role name 中,键入服务角色 (例如, CodeDeployDemo-EC2-Instance-Profile), and then choose Create role.

    您还可以在 Deployment Description 框中键入此服务角色的说明。

现在,您已创建要附加到 Amazon EC2 实例的 IAM 实例配置文件。有关更多信息,请参阅 Amazon EC2 用户指南 中的 Amazon EC2 的 IAM 角色