J'essaie de lier mon LoadBalancer et TargetGroup avec DeploymentGroup, lorsque j'exécute le modèle, il indique " La propriété LoadBalancerInfo ne peut pas être spécifiée." voici un instantané de mon modèle. mon modèle est-il correct ?

EC2TargetGroup:
 Type: AWS::ElasticLoadBalancingV2::TargetGroup
 Properties:
   HealthCheckIntervalSeconds: 30
   HealthCheckProtocol: HTTP
   HealthCheckTimeoutSeconds: 15
   HealthyThresholdCount: 5
   Matcher:
     HttpCode: '200'
   Name: !Ref EC2TargetGroupName
   Port: 80
   Protocol: HTTP
   TargetGroupAttributes:
   - Key: deregistration_delay.timeout_seconds
     Value: '20'
   UnhealthyThresholdCount: 3
   VpcId: !Ref VPC

ApplicationLoadBalancer:
 Type: AWS::ElasticLoadBalancingV2::LoadBalancer
 Properties:
   Scheme: internet-facing
   SecurityGroups:
   - Ref: ELBSecurityGroup
   Subnets: !Ref Subnets

myAutoScalingGroup:
 Type: AWS::AutoScaling::AutoScalingGroup
 Properties:
  AutoScalingGroupName: !Ref ScalingGroupName
  MinSize: "1"
  MaxSize: !Ref MaxSize
  HealthCheckGracePeriod: 300
  LaunchTemplate:
    LaunchTemplateId: !Ref launchTemplate
    Version: !GetAtt launchTemplate.LatestVersionNumber

MyDeploymentGroup:
 Type: AWS::CodeDeploy::DeploymentGroup
 Properties:
  ApplicationName: !Ref ApplicationName
  DeploymentConfigName: CodeDeployDefault.AllAtOnce
  ServiceRoleArn: !GetAtt [PipelineRole, Arn]
  LoadBalancerInfo:
    TargetGroupInfoList:
      - Name: !Ref EC2TargetGroupName ############  ERROR ######
  DeploymentStyle:
    DeploymentType: BLUE_GREEN
    DeploymentOption: WITH_TRAFFIC_CONTROL
2
Hector 5 févr. 2020 à 01:09

1 réponse

Meilleure réponse

Malheureusement, pour le moment, CodeDeploy dans CloudFormation ne prend en charge que les déploiements bleu/vert sur la plate-forme Lambda, mais la configuration de déploiement "CodeDeployDefault.AllAtOnce" dans votre modèle est pour la plate-forme EC2.

La raison pour laquelle la plate-forme EC2 n'est pas encore prise en charge dans CloudFormation est que les déploiements Blue/Green CodeDeploy sont fondamentalement en contradiction avec la gestion des ressources effectuée par CloudFormation. À la base, la fonctionnalité bleu/vert de CodeDeploy créera des groupes Auto Scaling au nom du client en clonant les ASG existants et une fois le déploiement terminé et stabilisé, elle supprimera l'ASG source. Ce type de création/suppression hors bande est quelque chose qui va fondamentalement à l'encontre de la fonction principale de CloudFormation où toutes les opérations de ressources proviennent de CloudFormation lui-même.

Comme solution de contournement, je vous recommande de jeter un œil à cet article de blog et à l'exemple associé sur la configuration des déploiements bleu/vert avec CodeDeploy [1, 2].

[1] https://aws.amazon.com/blogs/devops/performing-bluegreen-deployments-with-aws-codedeploy-and-auto-scaling-groups/

[2] https://github.com/awslabs/codedeploy-blue-green

2
shariqmaws 5 févr. 2020 à 11:36