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

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

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

注意

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

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

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

注意

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

为 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:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
    注意

    如果您想将 IAM 授权或亚马逊虚拟私有云 (VPC) 终端节点 CodeDeploy与一起使用,则需要添加更多权限。有关更多信息,请参阅 CodeDeploy 与 Amazon Virtual Private Cloud 配合使用

  3. 从同一目录调用 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
  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 命令,创建名为 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中的- role。

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

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

  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在 IAM 控制台的导航窗格中,选择策略,然后选择创建策略

  3. 指定权限页面上,选择 JSON

  4. 删除示例 JSON 代码。

  5. 粘贴以下代码:

    { "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:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
    注意

    如果您想将 IAM 授权或亚马逊虚拟私有云 (VPC) 终端节点 CodeDeploy与一起使用,则需要添加更多权限。有关更多信息,请参阅 CodeDeploy 与 Amazon Virtual Private Cloud 配合使用

  6. 选择下一步

  7. 审核和创建页面上的策略名称框中,键入 CodeDeployDemo-EC2-Permissions

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

  9. 选择 创建策略

  10. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

  11. 使用案例下,选择 EC2 使用案例。

  12. 选择下一步

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

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

  15. 选择下一步

  16. 命名、查看和创建页面上的角色名称中,输入服务角色的名称(例如,CodeDeployDemo-EC2-Instance-Profile),然后选择创建角色

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

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