Cloudformation中的ecs服务问题:提供的目标组具有目标类型实例,该实例类型与awsvpc网络不兼容

时间:2019-04-11 16:51:43

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

我正在创建具有cloudformation的架构,在创建ECS服务时,出现错误,表明我的均衡器实例与awsvpc模式不兼容

我尝试了几种方法,但都没有一种适合我,我已经看过aws指南,并且所有内容都相应对应,请尽可能解决该问题

"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {

    "LoadBalancerQA01": {
        "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
        "Properties": {
           "SecurityGroups": [
                {
                    "Ref": "SecurityGroupPublic01"
                }
            ],
            "Subnets": [
                {
                    "Ref": "SubnetPublicQATestUno"
                },
                {
                    "Ref": "SubnetPublicQATestDos"
                }
            ],
            "Name": "LoadBalancerQA01"
        }
    },
    "LoadBalancerListener": {
      "Type": "AWS::ElasticLoadBalancingV2::Listener",
      "Properties": {
        "DefaultActions": [{
          "Type": "forward",
          "TargetGroupArn": { "Ref": "TargetGroupQA" }
        }],
        "LoadBalancerArn": { "Ref": "LoadBalancerQA01" },
        "Port": 8080,
        "Protocol": "HTTP"
      }
    },
    "TargetGroupQA": {
      "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
      "Properties": {
        "Name": "TargetGroupQA",
        "Port": 8080,
        "Protocol": "HTTP",
        "VpcId": { "Ref": "VPCQA" }
      },
      "DependsOn": [ "LoadBalancerQA01" ]
    },
    "ClusterQA": {
        "Type": "AWS::ECS::Cluster",
        "Properties": {},
        "DependsOn": [
            "SubnetPrivateQATestUno",
            "SubnetPrivateQATestDos"
        ]
    },
    "TaskQA": {
        "Type": "AWS::ECS::TaskDefinition",
        "Properties": {
            "RequiresCompatibilities": ["FARGATE"],
            "Cpu" : "1024",
            "TaskRoleArn" : "arn:aws:iam::683574420318:role/ecsTaskExecutionRole",
            "ExecutionRoleArn" : "arn:aws:iam::683574420318:role/ecsTaskExecutionRole",
            "Memory": "2048",
            "NetworkMode" : "awsvpc",
             "ContainerDefinitions" : [{ 
                        "Image": "683574420318.dkr.ecr.us-west-1.amazonaws.com/mto:latest",
                        "Cpu": "1024",
                        "Memory": "2048",  
                        "Name":"ContenedorName",
                        "PortMappings":[{ "ContainerPort": 8080,"HostPort": 8080}]

            }]
        }
    },
    "ServiceQA": {
      "Type": "AWS::ECS::Service",
      "DependsOn": [ "LoadBalancerQA01" ],
      "Properties" : {
        "NetworkConfiguration" : {
              "AwsvpcConfiguration" : {
              "AssignPublicIp" : "ENABLED",
              "SecurityGroups" : [
                {
                    "Ref": "SecurityGroupPublic01"
                }
            ],"Subnets": [
                {
                    "Ref": "SubnetPublicQATestUno"
                },
                {
                    "Ref": "SubnetPublicQATestDos"
                }
            ]}
         },
        "Cluster": { "Ref": "ClusterQA" },
        "DesiredCount": "1",
        "LoadBalancers": [
          {
            "ContainerName": "ContenedorName",
            "ContainerPort": 8080,
            "TargetGroupArn": { "Ref": "TargetGroupQA" }
          }
        ],
        "TaskDefinition" : {"Ref":"TaskQA"}
    }      
}     

1 个答案:

答案 0 :(得分:0)

据我所知,您在没有TargetType的情况下定义了TargetGroup,这意味着默认情况下将其设置为instance。 ECS服务需要将TargetType设置为ip,这是awsvpc支持的唯一选项。在您的CloudFormation中,只需添加:

"TargetType": "ip",

这应该可以解决您的问题。如果仍然有问题,请从CloudFormation控制台提供错误。