La création d'un ALB Groupe Cible dans CloudFormation
Je suis en train de créer une Application à l'Équilibrage de la Charge dans CloudFormation, avec un groupe cible qui achemine le trafic des instances EC2. Voici les extrait, où ELBSubnets, ECSCluster, taskdefinition, et VpcId sont passés en paramètres:
"EcsElasticLoadBalancer" : {
"Type" : "AWS::ElasticLoadBalancingV2::LoadBalancer",
"Properties" : {
"Subnets" : { "Ref" : "ELBSubnets" },
"SecurityGroups": [
{ "Ref": "ELBAccessSecurityGroup" }
]
}
},
"LoadBalancerListener": {
"Type": "AWS::ElasticLoadBalancingV2::Listener",
"Properties": {
"DefaultActions": [{
"Type": "forward",
"TargetGroupArn": { "Ref": "TargetGroup" }
}],
"LoadBalancerArn": { "Ref": "EcsElasticLoadBalancer" },
"Port": 80,
"Protocol": "HTTP"
}
},
"TargetGroup": {
"Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
"Properties": {
"Name": { "Fn::Join": [ "-", [ { "Ref": "AWS::StackName" }, "TargetGroup" ] ] },
"Port": 80,
"Protocol": "HTTP",
"VpcId": { "Ref": "VpcId" }
},
"DependsOn": [ "EcsElasticLoadBalancer" ]
},
"service": {
"Type": "AWS::ECS::Service",
"Properties" : {
"Cluster": { "Ref": "ECSCluster" },
"DesiredCount": "1",
"LoadBalancers": [
{
"ContainerName": "main-app",
"ContainerPort": 3000,
"TargetGroupArn": { "Ref": "TargetGroup" }
}
],
"Role" : {"Ref":"ECSServiceRole"},
"TaskDefinition" : {"Ref":"taskdefinition"}
}
},
"ECSServiceRole": {
"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:Describe*",
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
"ec2:Describe*",
"ec2:AuthorizeSecurityGroupIngress"
],
"Resource": "*"
}
]
}
}
]
}
}
J'obtiens l'erreur suivante lors de la création du service:
Le groupe cible avec targetGroupArn arn:aws:elasticloadbalancing:us-east-1:xxxxxxxx:targetgroup/AlbServiceStack-TargetGroup/6ba9c037c26cdb36 ne sont pas associés à un programme d'équilibrage de charge.
Ce qui me manque? Dans la documentation il ne semble pas être un moyen de spécifier un programme d'équilibrage de charge pour le groupe cible.
Vous devez vous connecter pour publier un commentaire.
Ai eu de travail - le problème était double:
"elasticloadbalancing:DeregisterTargets"
"elasticloadbalancing:RegisterTargets"
"DependsOn": [ "LoadBalancerListener" ]
comme un attribut supplémentaire.Modèle mis à jour ressemble à ceci:
AWS::ECS::Service
doit avoir unDependsOn
avec les deuxLoadBalancerListener
et leAWS::ElasticLoadBalancingV2::TargetGroup
doit avoirDependsOn
avecEcsElasticLoadBalancer
, que vous ne faites pas appel à votre double réponse. Aussi, je vous suggère d'utiliser la langue officielle AWS PolicyDocumentarn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole
plutôt que de créer votre propre.