AWS ECS:通过Cloudformation创建ECS服务时,与IAM相关的错误

时间:2018-09-10 14:44:19

标签: amazon-web-services amazon-cloudformation amazon-ecs

我正在尝试通过以下清单创建ECS服务:

---
AWSTemplateFormatVersion: 2010-09-09
Description: 'CloudFormation template for ui service definition'
Resources:

  UIService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !ImportValue MyCSClusterName
      DesiredCount: 1
      LaunchType: EC2
      LoadBalancers:
        - ContainerName: !ImportValue UIContainerName
          ContainerPort: '80'
          TargetGroupArn: !ImportValue UITGArn
      Role: !Ref UIServiceRole
      ServiceName: ui-service
      ServiceRegistries:
       - RegistryArn: arn:aws:servicediscovery:eu-west-1:4309430903:service/srv-oh45959hj55yesez7
      TaskDefinition: !ImportValue UITaskArn


  UIServiceRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Statement:
        - Effect: Allow
          Principal:
            Service: [ecs.amazonaws.com]
          Action: ['sts:AssumeRole']
      Path: /
      Policies:
      - PolicyName: ecs-service
        PolicyDocument:
          Statement:
          - Effect: Allow
            Action: ['elasticloadbalancing:DeregisterInstancesFromLoadBalancer', 'elasticloadbalancing:DeregisterTargets',
              'elasticloadbalancing:Describe*', 'elasticloadbalancing:RegisterInstancesWithLoadBalancer',
              'elasticloadbalancing:RegisterTargets', 'ec2:Describe*', 'ec2:AuthorizeSecurityGroupIngress']
            Resource: '*'

通过亚马逊控制台创建失败,并显示以下错误,我不知道这是怎么回事。

  

您不能为需要服务链接角色的服务指定IAM角色。

2 个答案:

答案 0 :(得分:0)

根据this terraform github issue,有些人通过从清单(Role: !Ref UIServiceRole)中删除IAM角色来解决此错误。也许值得一试?

答案 1 :(得分:0)

在大多数情况下,当您创建需要执行某些 ECS 活动的集群或角色时,ECS 服务会生成 IAM 角色 AWSServiceRoleForECS。 Cloudformation 有时会遇到时间问题;解决这个问题的两种方法

(1) 在您的 cloudformation 中,确保 ECSCluster 依赖于可以访问 ecs 服务的 IAM 角色;在您的示例中 DependsOn: UIServiceRole

另一种看起来更“正确”的方法 (2) 在您的 cloudformation 中添加一个新资源 IAM Service Linked Role as

  ECSServiceLinkedRole:
    Type: 'AWS::IAM::ServiceLinkedRole'
    Properties:
      AWSServiceName: ecs.amazonaws.com
      Description: ECS Service Linked Role

注意:服务相关角色是否已存在于帐户中并且您定义了必须确保描述匹配的结构(Cloudformation 将不支持更改描述)

Unable to assume service linked role when using ecs-cli有关