步骤 4:为您的 Amazon IAM 实例创建EC2实例配置文件 - AWS CodeDeploy

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

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

注意

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

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

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

注意

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

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

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

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

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

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

    我们建议您将此政策限制为仅适用于您的亚马逊EC2实例必须访问的 Amazon S3 存储桶。确保允许访问包含 CodeDeploy 代理的 Amazon S3 存储桶。否则,在实例上安装或更新 CodeDeploy 代理时可能会出现错误。要仅向IAM实例配置文件授予对 Amazon S3 中某些 CodeDeploy 资源套件存储桶的访问权限,请使用以下策略,但要删除要阻止访问的存储桶的行:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "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-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
    注意

    如果您想使用IAM授权或 Amazon Virtual Private Cloud (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 在首次启动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有关更多信息,请参阅亚马逊EC2用户指南EC2中的亚马逊IAM角色

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

  1. 登录 AWS 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": "*" } ] }
    注意

    我们建议您将此政策限制为仅适用于您的亚马逊EC2实例必须访问的 Amazon S3 存储桶。确保允许访问包含 CodeDeploy 代理的 Amazon S3 存储桶。否则,在实例上安装或更新 CodeDeploy 代理时可能会出现错误。要仅向IAM实例配置文件授予对 Amazon S3 中某些 CodeDeploy 资源套件存储桶的访问权限,请使用以下策略,但要删除要阻止访问的存储桶的行:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "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-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
    注意

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

  6. 选择下一步

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

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

  9. 选择创建策略

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

  11. 在 “用例” 下,选择EC2用例。

  12. 选择下一步

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

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

  15. 选择下一步

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

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

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