第 4 步:为您的 Amazon EC2 实例创建 IAM 实例配置文件 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

第 4 步:为您的 Amazon EC2 实例创建 IAM 实例配置文件

注意

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

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

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

注意

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

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

在这些步骤中,我们假定您已遵循开始使用 CodeDeploy中前三步的说明。

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

    { "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" } ] }
  2. 在相同的目录中,创建一个名为 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:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
    注意

    如果您想使用IAM 授权或 Amazon Virtual Private Cloud (VPC) 终端节点,您将需要添加更多权限。请参阅将代码与 Amazon Virtual Private Cloud 结合使用了解更多信息。

  3. 从同一目录调用create-role命令创建命名为的 IAM 角色CodeDeployDemo-EC2-Instance-Profile,根据第一个文件中的信息:

    重要

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

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

    aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
  5. 调用attach-role-policy以授予该角色 Amazon EC2 Systems Manager 权限,以便 SSM 可以安装 CodeDeploy 代理。如果您计划使用命令行从公用 Amazon S3 存储桶安装代理,则不需要此策略。了解有关 的更多信息安装 CodeDeploy 代理

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile
  6. 调用create-instance-profile命令,后跟add-role-to-instance-profile命令创建命名为的 IAM 实例配置文件CodeDeployDemo-EC2-Instance-Profile。实例配置文件允许 Amazon EC2 传递名为CodeDeployDemo-EC2-Instance-Profile当该实 Amazon EC2 首次启动时:

    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 部分Amazon CLI参考

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

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

  1. 登录到 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

  3. 创建策略页面上的 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:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
    注意

    如果您想使用IAM 授权或 Amazon Virtual Private Cloud (VPC) 终端节点,您将需要添加更多权限。请参阅将代码与 Amazon Virtual Private Cloud 结合使用了解更多信息。

  4. 选择查看策略

  5. 创建策略页面上,在CodeDeployDemo-EC2-Permissions策略名称框中键入

  6. (可选) 对于描述,键入策略的描述。

  7. 选择 Create Policy

  8. 在导航窗格中,选择角色,然后选择创建角色

  9. 创建角色页面上,选择 Amazon 服务,然后从选择将使用此角色的服务列表中,选择 EC2

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

  11. 选择 Next:。Permissions (下一步:权限)

  12. 在策略列表中,选中刚创建的策略 (CodeDeployDemo-EC2-Permissions) 旁边的复选框。如有必要,请使用搜索框查找该策略。

  13. 要使用 Systems Manager 安装或配置 CodeDeploy 代理,请选中 AmazonSSMManagedInstanceCore 旁边的框。此 Amazon 托管策略使实例能够使用 Systems Manager 服务核心功能。如有必要,请使用搜索框查找该策略。如果您计划使用命令行从公用 Amazon S3 存储桶安装代理,则不需要此策略。了解有关 的更多信息安装 CodeDeploy 代理

  14. 选择 Next:。标签

  15. 离开添加标签(可选)页面未更改,然后选择后续:审核

  16. 在存储库的审核页, 在Role name (角色名称)中,输入服务角色的名称(例如,CodeDeployDemo-EC2-Instance-Profile),然后选择创建角色

    您还可以输入此服务角色的描述:角色描述

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