当前位置: 首页 > 知识库问答 >
问题:

AWS ECS服务定义:角色属性

欧奇希
2023-03-14

我正在使用云形成和yaml语法设置AWS ECS服务。

在某个时候,在相关的留档中有一个名为Role的属性,其定义如下:

角色

AWS标识和访问管理(IAM)角色的名称或ARN,该角色允许Amazon ECS容器代理调用负载平衡器。

注意:在某些情况下,可能需要添加对服务角色策略的依赖关系。有关详细信息,请参阅DependsOn属性中的IAM角色策略。必需:无类型:字符串更新需要:替换

由于我打算将特定服务置于应用型负载均衡之后,是否需要此属性?

如果是,我是否需要创建一个新的策略,或者是否有任何预定义的策略可用于此目的?

如果我只是在EC2容器实例级别上添加角色/策略(例如,将其附加到创建Amazon提供的ECS集群的相关模板中),这是否足够?

如果有任何示例或用例,我将非常感激,因为文档在这个主题上是模糊和不完整的。

共有2个答案

缪风史
2023-03-14

要向应用程序负载平衡器注册您的服务,您需要服务本身的角色,但ECS容器需要一些权限才能向集群注册。

Amazon弹性容器服务使用AWS身份和访问管理(IAM)服务链接角色。服务链接角色是直接链接到Amazon ECS的唯一IAM角色类型。服务链接角色由Amazon ECS预定义,包括服务代表您调用其他AWS服务所需的所有权限。

服务链接角色使设置Amazon ECS变得更容易,因为您不必手动添加必要的权限。Amazon ECS定义其服务链接角色的权限,除非另有定义,否则只有Amazon ECS可以承担其角色。定义的权限包括信任策略和权限策略,并且该权限策略不能附加到任何其他IAM实体。

所以如果你选中这个角色,它包含属性

"elasticloadbalancing:RegisterInstancesWithLoadBalancer",

若要调试或删除要服务的角色,它将不会注册。

如果默认情况下使用控制台创建服务,它会附加角色。

在创建和停止任务时,Amazon ECS需要使用html" target="_blank">负载均衡器注册和注销容器实例的权限。

在大多数情况下,亚马逊ECS服务角色是在亚马逊ECS控制台首次运行体验中自动为您创建的。您可以使用以下过程检查您的帐户是否已具有亚马逊ECS服务角色。

这管理的政策由AWS有ARN

arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole
Policy ARN

ARN: aws: iam::aws:策略/service-角色/Amazon EC2ContainerServiceRole描述Amazon ECS服务角色的默认策略。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:Describe*",
                "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:Describe*",
                "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
                "elasticloadbalancing:RegisterTargets"
            ],
            "Resource": "*"
        }
    ]
}

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/check-service-role.html

这就是它的样子

如果您不将角色分配给ECS容器实例,它将永远不会显示在您的ECS集群中,并将抛出一个错误

2018-09-06T15:26:22Z [ERROR] Could not register: NoCredentialProviders: no valid providers in chain. Deprecated.
    For verbose messaging see aws.Config.CredentialsChainVerboseErrors

/var/logs/ecs

tail -f ecs-agent.log.2018-09-06

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html

周翰池
2023-03-14

如果要将应用程序负载平衡器ECS服务一起使用,则需要角色属性。根据描述,该角色允许您的ECS服务代理连接到负载平衡器。如果不使用负载平衡器,则该字段是可选的。

也不需要在EC2实例级别上设置角色。因为有一些策略与ECS服务相关,所以在实例级角色中添加它是无效的。

请查看以下AWS管理策略来创建角色:

{
"AttachedPolicies": [
    {
        "PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceAutoscaleRole",
        "PolicyName": "AmazonEC2ContainerServiceAutoscaleRole"
    },
    {
        "PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role",
        "PolicyName": "AmazonEC2ContainerServiceforEC2Role"
    },
    {
        "PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole",
        "PolicyName": "AmazonEC2ContainerServiceRole"
    }
 ]
}

信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
 类似资料:
  • 问题内容: 我是一个有角的新手,正在构建一个应用程序,让我感到困惑的是,有几种方法定义了服务,我从此链接中了解了更多:如何定义服务, 然后似乎没有太大的区别定义服务的方式。 但我只是注意到我认为是不同的一个不同之处: 看到我从这里得到的这项服务http://jsfiddle.net/2by3X/5/ 如果我使用如下所示的“工厂”定义此服务,则一个功能不能调用该服务的其他功能。 我将在浏览器控制台中

  • 自定义角色:只有团队负责人、团队管理员和地图管理员三个角色可以创建自定义角色,可以自定义角色的名称和权限。 自定义角色分为: 自定义地图角色:对地图级别进行权限设置 自定义图层角色:对图层级别进行权限设置 自定义子图层角色:对子图层级别进行权限设置 自定义业务流角色:对业务流层级进行权限设置 1.创建自定义角色: 以地图角色创建为例,点击“创建新角色”,出现创建创建新角色的弹框。点击“地图角色”。

  • 配置1如下所示。配置2如下所示。 问题始于access_token: 我创建了一个名为moderator的新用户,并使用角色moderator,当我登录到该用户时,我接收我在选项卡“服务帐户角色”中设置的角色(resource_access.efairy-backend.roles),但我希望获得我在角色映射选项卡中声明的角色。 答复: access_token:“EYJHBGCIO...AJBA

  • 我开发了以下代码,用于自动执行我的一些实例的启动/停止任务,这些实例不需要一直运行,而是在特定范围内运行。 这是我的代码:https://github.com/maartinpii/gcp-shst 我按照谷歌云平台指南(参考:https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.

  • 我目前正在使用KubernetesPodoperator在库伯内特斯集群上运行Pod。我收到以下错误: 库伯内特斯。客户RestApiException:(403)原因:禁止 HTTP响应标头:HTTPHeaderDict({'Auding-Id': '', 'Cache-Control':'no-cache, Private','Content-Type':'Application/json',

  • 【注意】Azure SQL Database 不支持服务器角色。 在“成员”选项卡,指定已选择的登录成为此服务器角色的成员。