AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

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

您的 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 实例配置文件。

注意

您必须在启动 Amazon EC2 实例时向其附加 IAM 实例配置文件。您无法向已启动的 Amazon EC2 实例附加 IAM 实例配置文件。有关更多信息,请参阅实例配置文件

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

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

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

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

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

    注意

    我们建议您将此策略仅限定用于您的 Amazon EC2 实例必须访问的 Amazon S3 存储桶。确保提供对包含 AWS CodeDeploy 代理的 Amazon S3 存储桶的访问权限。否则,在实例上安装或更新 AWS CodeDeploy 代理时可能会出现错误。例如:

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::codedeploydemobucket/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "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-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*", "arn:aws-cn:s3:::aws-codedeploy-cn-north-1/*" ] } ] }
  3. 从同一目录中调用 create-role 命令,以基于第一个文件中的信息创建一个名为 CodeDeployDemo-EC2-Instance-Profile 的 IAM 角色:

    重要

    务必在文件名前包含 file://。此命令中需要该项。

    Copy
    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 的角色授予权限:

    重要

    务必在文件名前包含 file://。此命令中需要该项。

    Copy
    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 角色传递给该实例:

    Copy
    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 实例配置文件的名称,请参阅获取 IAM 实例配置文件名称 (CLI)

现在,您已创建要附加到 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 框中,粘贴以下内容:

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

    注意

    我们建议您将此策略仅限定用于您的 Amazon EC2 实例必须访问的 Amazon S3 存储桶。确保提供对包含 AWS CodeDeploy 代理的 Amazon S3 存储桶的访问权限。否则,在实例上安装或更新 AWS CodeDeploy 代理时可能会出现错误。例如:

    Copy
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::codedeploydemobucket/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "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-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*", "arn:aws-cn:s3:::aws-codedeploy-cn-north-1/*" ] } ] }
  6. 选择 Create Policy

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

  8. Role Name 框中,为 IAM 实例配置文件提供一个名称(如 CodeDeployDemo-EC2-Instance-Profile),然后选择 Next Step

  9. Select Role Type 页上,选择 Amazon EC2 旁的 Select

  10. Attach Policy 页上,选中 CodeDeployDemo-EC2-Permissions 旁的框,然后选择 Next Step

  11. 选择 Create Role

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

获取 IAM 实例配置文件名称 (CLI)

要获取您创建的 IAM 实例配置文件的名称,请对名为 CodeDeployDemo-EC2-Instance-Profile 的 IAM 角色调用 list-instance-profiles-for-role 命令:

Copy
aws iam list-instance-profiles-for-role --role-name CodeDeployDemo-EC2-Instance-Profile --query "InstanceProfiles[0].InstanceProfileName" --output text

返回的值为 IAM 实例配置文件名称。

注意

您无法使用 IAM 控制台获取 IAM 实例配置文件名称。