CodeDeploy не развертывается в новую группу ASG из-за порядка создания ресурсов CloudFormation - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь разработать всю архитектуру AWS только с помощью CloudFormation, однако у меня возникают некоторые проблемы с интеграцией CodeDeploy с CloudFormation и AutoScaling Group.

Проблема заключается в том, что мне нужно связатьCodeDeploy DeploymentGroup для группы автоматического масштабирования, чтобы автоматическое развертывание работало, CloudFormation распознает группу как необходимую перед созданием группы развертывания.

Что происходит, когда создается ASG, экземпляры начинают вращатьсяДО создания группы развертывания, это означает, что эти экземпляры никогда не будут развернуты.Я пытался придумать лямбда-функцию для принудительного развертывания этих экземпляров, однако проблема сохраняется, поскольку группа развертывания CodeDeploy по-прежнему недоступна, но, скорее всего, или, если это так, ненадежна.

Только эта проблемапроисходит, когда стек создается впервые.

Это мой шаблон CloudFormation:

[...]

UpdateApiAutoscalingGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    AutoScalingGroupName:
      Fn::Join:
        - ''
        - - !ImportValue UpdateApiCodeDeployApplication
          - -autoscaling-group
          - !Ref Environment
    DesiredCapacity: !Ref MinimumApiAmount
    HealthCheckGracePeriod: 30
    HealthCheckType: ELB
    LaunchConfigurationName: !Ref UpdateApiAutoscalingLaunchConfiguration
    TargetGroupARNs:
      - !Ref UpdateApiTargetGroup
    MaxSize: !Ref MaximumApiAmount
    MinSize: !Ref MinimumApiAmount
    VPCZoneIdentifier:
      - Fn::Select:
        - 0
        - !Split
          - ","
          - Fn::ImportValue:
              !Sub "PrivateSubnets-${Environment}"
    Tags:
      - Key: Environment
        Value: !Ref Environment
        PropagateAtLaunch: true
      - Key: CompanySshAccess
        Value: 1
        PropagateAtLaunch: true
      - Key: Application
        Value: update-api
        PropagateAtLaunch: true

# Defines how the Update API servers should be provisioned in the scaling group.
UpdateApiAutoscalingLaunchConfiguration:
  Type: AWS::AutoScaling::LaunchConfiguration
  Properties:
    AssociatePublicIpAddress: false
    IamInstanceProfile: !Ref UpdateApiInstanceRole
    ImageId: !FindInMap [Api, Image, !Ref Environment]
    InstanceType: !FindInMap [Api, InstanceType, !Ref Environment]
    LaunchConfigurationName: !Sub 'update-api-launchconfig-${Environment}'
    SecurityGroups:
      - Fn::ImportValue: !Sub 'InternalBastionSecurityGroupId-${Environment}'
      - !GetAtt LoadBalancerProtectedSecurityGroup.GroupId

UpdateApiCodeDeploymentGroup:
  Type: AWS::CodeDeploy::DeploymentGroup
  Properties:
    DeploymentGroupName: !Ref Environment
    DeploymentConfigName: "atleast-one-instance-online"
    ServiceRoleArn: !Ref CodeDeployServiceRoleArn # TODO: create CodeDeployServiceRole using CloudFormation
    ApplicationName: !ImportValue UpdateApiCodeDeployApplication
    LoadBalancerInfo:
      ElbInfoList:
        - Name: !GetAtt UpdateApiLoadBalancer.LoadBalancerName
    DeploymentStyle:
      DeploymentOption: !FindInMap [Api, DeploymentStyleOption, !Ref Environment]
      DeploymentType: !FindInMap [Api, DeploymentStyleType, !Ref Environment]
    AutoScalingGroups:
      - !Ref UpdateApiAutoscalingGroup

[...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...