步骤 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 实例 (CLI) 创建 IAM 实例配置文件

在这些步骤中,我们假定您已遵循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 授权或亚马逊虚拟私有云 (VPC) 终端节点 CodeDeploy与一起使用,则需要添加更多权限。有关更多信息,请参阅 CodeDeploy 与 Amazon Virtual Private Cloud 配合使用

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

    重要

    务必在文件名前包含 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将名为的 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。

现在,您已经创建了一个 IAM 实例配置文件以附加到您的 Amazon EC2 实例。有关更多信息,请参阅《亚马逊 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:::replace-with-your-s3-bucket-name/*", "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. 选择 Create policy(创建策略)

  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),然后选择创建角色

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

现在,您已经创建了一个 IAM 实例配置文件以附加到您的 Amazon EC2 实例。有关更多信息,请参阅《亚马逊 EC2 用户指南》中的 Amazon EC2 的 IAM 角色