Amazon ECS 容器实例 IAM 角色 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon ECS 容器实例 IAM 角色

Amazon ECS 容器实例(包括 Amazon EC2 和外部实例)运行 Amazon ECS 容器代理,并需要服务的 IAM 角色,以便了解属于您的代理。在启动容器实例并将其注册到集群之前,必须为容器实例创建 IAM 角色以供使用。该角色在您用于登录控制台或运行 Amazon CLI 命令的账户中创建。

重要

如果要将外部实例注册到集群,则您使用的 IAM 角色也需要 Systems Manager 权限。有关更多信息,请参阅外部实例所需的 IAM 权限

Amazon ECS 提供 AmazonEC2ContainerServiceforEC2Role 托管 IAM policy,该策略包含使用完整 Amazon ECS 功能集所需的权限。此托管策略可以附加到 IAM 角色并与您的容器实例相关联。或者,您可以在创建要使用的自定义策略时使用托管策略作为指导。容器实例角色为 Amazon ECS 容器代理和 Docker 守护进程提供代表您调用 Amazon API 所需的权限。有关托管策略的更多信息,请参阅 AmazonEC2ContainerServiceforEC2Role

验证 Amazon ECS 容器实例 IAM 角色

完成 Amazon ECS 控制台首次运行体验时将自动为您创建 Amazon ECS 实例角色。但是,您应手动为容器实例创建角色附加托管 IAM policy,以便 Amazon ECS 能够在引入未来功能和增强功能时添加这些功能的权限。使用以下过程检查并确定您的账户是否已拥有 Amazon ECS 容器实例 IAM 角色并且附加托管 IAM policy (如果需要)。

在 IAM 控制台中检查 ecsInstanceRole

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles(角色)。

  3. Filter roles(筛选角色)搜索框中,输入 ecsInstanceRole。如果该角色不存在,请创建该角色。有关更多信息,请参阅创建 Amazon ECS 容器实例 IAM 角色

    如果角色存在,请选择角色以查看附加的策略。

  4. 请选择 Permissions 选项卡。

  5. Permissions policies(权限策略)部分中,确认 AmazonEC2ContainerServiceforEC2Role 托管策略或等效的自定义策略已附加到该角色。如果附加该策略,则将正确配置容器实例角色。否则,请执行以下子步骤来附加策略。

    重要

    AmazonEC2ContainerServiceforEC2Role 托管策略应附加到容器实例 IAM 角色,否则使用 Amazon Web Services Management Console 创建集群时将收到错误。

    1. 在导航窗格中,选择 Policies (策略)

    2. Filter policies(筛选策略)搜索框中,输入 AmazonEC2ContainerServiceforEC2Role,然后选择该策略。

    3. 选择 Attach (附加)

    4. Filter roles(筛选角色)搜索框中,输入 ecsInstanceRole

    5. 选中 ecsInstanceRole 角色左侧的框,然后选择 Attach policy(附加策略)。

    6. 在导航窗格中,选择 Roles(角色)。

    7. Filter roles(筛选角色)搜索框中,输入 ecsInstanceRole

  6. 选择 Trust relationships (信任关系) 选项卡,然后选择 Edit trust relationship (编辑信任关系)

  7. 验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel。如果信任关系不匹配,请将策略复制到 Policy Document(策略文档)窗口中,然后选择 Update Trust Policy(更新可信策略)。

    { "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

创建 Amazon ECS 容器实例 IAM 角色

重要

如果要将外部实例注册到集群,请参阅 外部实例所需的 IAM 权限

完成 Amazon ECS 控制台首次运行体验时将自动为您创建 Amazon ECS 实例角色。但是,您应手动为容器实例创建角色附加托管 IAM policy,以便 Amazon ECS 能够在引入未来功能和增强功能时添加这些功能的权限。使用以下过程检查并确定您的账户是否已拥有 Amazon ECS 容器实例 IAM 角色并且附加托管 IAM policy (如果需要)。

为容器实例创建 ecsInstanceRole IAM 角色

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

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

  3. 选择 Amazon 服务角色类型,然后选择 Elastic Container Service

  4. 选择 EC2 Role for Elastic Container Service(Elastic Container Service 的 EC2 角色)使用案例,然后选择 Next: Permissions(下一步:权限)。

  5. Permissions policies(权限策略)部分,确认是否选择了 AmazonEC2ContainerServiceforEC2Role 策略,然后选择 Next(下一步)。

    重要

    AmazonEC2ContainerServiceforEC2Role 托管策略应附加到容器实例 IAM 角色,否则使用 Amazon Web Services Management Console 创建集群时将收到错误。

  6. 对于 Role name(角色名称),输入 ecsInstanceRole,或者输入描述。

  7. 对于 Add tags (optional) [添加标签(可选)],指定要与策略关联的任何自定义标签,然后选择 Next: Review(下一步:审核)。

  8. 检查您的角色信息,然后选择 Create role 以完成操作。

使用 Amazon CLI 为容器实例创建 ecsInstanceRole IAM 角色

  1. 使用 create-instance-profile 命令创建名为 ecsInstanceRole-profile 的实例配置文件。

    aws iam create-instance-profile --instance-profile-name ecsInstanceRole-profile

    响应示例

    { "InstanceProfile": { "InstanceProfileId": "AIPAJTLBPJLEGREXAMPLE", "Roles": [], "CreateDate": "2022-04-12T23:53:34.093Z", "InstanceProfileName": "ecsInstanceRole-profile", "Path": "/", "Arn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole-profile" } }
  2. ecsInstanceRole 角色添加到 ecsInstanceRole-profile 实例配置文件。

    aws iam add-role-to-instance-profile \ --instance-profile-name ecsInstanceRole-profile \ --role-name ecsInstanceRole

向容器实例 IAM 角色添加 Amazon S3 只读访问权限

将配置信息存储在 Amazon S3 中的私有存储桶中并向您的容器实例 IAM 角色授予只读访问权限,这是一个允许在启动时配置容器实例的安全方便的方法。您可以将 ecs.config 文件的副本存储在私有存储桶中,使用 Amazon CLI Amazon EC2 用户数据安装 ,然后在实例启动时将配置信息复制到 /etc/ecs/ecs.config

有关创建 ecs.config 文件,将该文件存储在 Amazon S3, 中并使用此配置启动实例的更多信息,请参阅 将容器实例配置存储在 Amazon S3 中

为容器实例角色授予 Amazon S3 只读访问权限

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Policies (策略)

  3. Filter policies(筛选策略)搜索框中,输入 AmazonS3ReadOnlyAccess,然后选择该策略。

    注意

    此策略允许对所有 Amazon S3 资源进行只读访问。有关更多限制性存储桶策略的示例,请参阅 Amazon Simple Storage Service 用户指南中的存储桶策略示例

  4. 选择 Attach (附加)

  5. Filter roles(筛选角色)搜索框中,输入 ecsInstanceRole

  6. 选中 ecsInstanceRole 角色左侧的框,然后选择 Attach policy(附加策略)。