在您的集群中未找到任何容器实例

Posted

技术标签:

【中文标题】在您的集群中未找到任何容器实例【英文标题】:No Container Instances were found in your cluster 【发布时间】:2019-07-10 14:52:33 【问题描述】:

service cc-ui-service 无法放置任务,因为没有容器实例满足其所有要求。原因:。

【问题讨论】:

我遇到了这个问题。这里的答案为我解决了这个问题:***.com/questions/36523282/… AWS ECS Error when running task: No Container Instances were found in your cluster的可能重复 【参考方案1】:

我也遇到了这个错误,从一开始甚至没有集群。所以也许你可以利用我的努力(用 Fargate 完成,但其中一些也适用于 ec2)。

Parameters:

  Image:
    Description: The docker image
    Type: String
    Default: f00b4r

  ImageVersion:
    Description: The docker image version
    Type: String
    Default: "1.0.42"

  LogGroupName:
    Description: The CloudWatch log group
    Type: String
    Default: f00b4r-logs

Resources:

  AvTestCluster:
    Type: AWS::ECS::Cluster
    Properties: 
      ClusterName: NewCluster

  ServiceTaskRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Sub "$AWS::StackName-TaskRole"
      Path: "/"
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - ecs-tasks.amazonaws.com
            Action:
              - sts:AssumeRole
      Policies:
        - PolicyName: !Sub "$AWS::StackName-TaskRolePolicy"
          PolicyDocument:
            Statement:
              - Effect: Allow
                Action:
                  - s3:*
                  - dynamodb:*
                Resource: "*" # TODO: Set to least privilege

  ExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: ExecutionRoleFargate
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: ecs-tasks.amazonaws.com
            Action: 'sts:AssumeRole'
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy'

  ServiceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: vpc-02d42422a429042
      GroupDescription: Access to the ECS Service
      SecurityGroupIngress:
        - CidrIp: 42.42.42.42/16
          IpProtocol: -1

  EcsService:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !Ref 'TestCluster'
      DesiredCount: '1'
      LaunchType: FARGATE
      DeploymentConfiguration:
        MaximumPercent: 100
        MinimumHealthyPercent: 0
      NetworkConfiguration:
        AwsvpcConfiguration:
          AssignPublicIp: DISABLED
          SecurityGroups:
            - !Ref ServiceSecurityGroup
          Subnets: 
            - subnet-0345b4296042a84
            - subnet-02f3452b9c142de

      TaskDefinition: !Ref 'TaskDefinition'

  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: new-latest
      NetworkMode: awsvpc
      RequiresCompatibilities:
        - FARGATE
      Cpu: 256
      Memory: 0.5GB
      ExecutionRoleArn: !Ref ExecutionRole
      TaskRoleArn: !GetAtt ServiceTaskRole.Arn
      ContainerDefinitions:
        - Name: new-latest
          Essential: true
          Image:
            Fn::Join:
              - ""
              - - "84272424226"
                - ".dkr.ecr.eu-west-1.amazonaws.com/"
                - !Ref Image
                - ":"
                - !Ref ImageVersion
          LogConfiguration:
              LogDriver: awslogs
              Options:
                awslogs-group:
                  !Ref LogGroupName
                awslogs-region: !Ref AWS::Region
                awslogs-stream-prefix: new-latest
          Memory: 128         
          Command: ["sh", "-c", !Join [ "", [ "echo HelloFromFargate" ] ] ]

  RestoreUptimeQuotationDDBECSRole:
   Type: AWS::IAM::Role
   Properties:
     AssumeRolePolicyDocument:
       Version: 2012-10-17
       Statement:
         - Effect: Allow
           Principal:
             Service:
               - events.amazonaws.com
           Action:
             - sts:AssumeRole
     Path: /
     Policies:
       - PolicyName: NewPolicy
         PolicyDocument:
           Version: 2012-10-17
           Statement:
             - Effect: Allow
               Action: 'ecs:RunTask'
               Resource: !Ref TaskDefinition

  LogGroup:
    Type: "AWS::Logs::LogGroup"
    Properties:
      RetentionInDays: 30
      LogGroupName:
        !Ref LogGroupName

【讨论】:

以上是关于在您的集群中未找到任何容器实例的主要内容,如果未能解决你的问题,请参考以下文章

Cloudformation 未能创建 ecs 服务(在您的集群中未找到任何容器实例。)

AWS EC2 ECS 在您的集群中未找到任何容器实例

服务无法放置任务

Terraform 列出 ECS 集群容器实例

正确处理在您的应用程序的另一个实例中使用 iCloud 删除 UIDocument

如何在Python AWS boto API中获取EC2实例ID的容器实例列表