这个问题可能是由于部署期间 CodeDeploy 表现不佳导致的,因为 CodeDeploy 负责管理 AutoScalingGroups。解决此问题的一种方法是通过修改应用程序规范中 CodeDeploy 的配置来限制 Traffic_routing_config 中 AutoScalingGroups 的数量。
下面是一个示例配置:
Resources:
CodeDeployRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- "codedeploy.us-east-1.amazonaws.com"
Action:
- "sts:AssumeRole"
Path: "/"
Policies:
- PolicyName: "CodeDeployAutoScalingPolicy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- "s3:Get*"
- "s3:List*"
Resource:
- !Sub "arn:aws:s3:::${CodeDeployBucket}"
- Effect: Allow
Action:
- "autoscaling:CreateInstanceRefresh"
- "autoscaling:DeleteAutoScalingGroup"
- "autoscaling:CreateAutoScalingGroup"
- "autoscaling:UpdateAutoScalingGroup"
- "autoscaling:Describe*"
- "autoscaling:SuspendProcesses"
Resource:
- "*"
Applications:
App:
Type: "AWS::Serverless::Application"
Properties:
...
AutoScaling:
MinCapacity: 1
MaxCapacity: 3
TargetValue: 60
Cooldown: 300
CustomAdvancedConfig:
Traffic_routing_config:
Canary_size: 1
Type: AllAtOnce
Step_percentage: 50
Wait_time_with_no_traffic: "5m"
AutoRollbackOnFailure:
Enabled: false
EnableBlueGreenDeployment: true
TerminateBlueInstancesOnDeploymentSuccess: true
TerminateBlueInstancesOnDeploymentFailure: false
BlueInstanceIdSelector:
tags:
-