amazon-web-services - cfn-signal UPDATE_ROLLBACK_COMPLETE 状态且无法发出信号

标签 amazon-web-services amazon-ec2 aws-cloudformation

有时,cfn-signal 命令会崩溃并显示以下消息:

ValidationError: Stack arn:aws:cloudformation:eu-west-1:XXXXX:stack/XXX/XXXXX is in UPDATE_ROLLBACK_COMPLETE state and cannot be signaled

使用此命令:

/usr/local/bin/cfn-signal -e 0 \ 
  --stack arn:aws:cloudformation:eu-west-1:XXX:stack/XXX/XXXX \
  --resource AutoScalingGroup \
  --region eu-west-1

我不明白为什么CloudFormation状态是相关的?我相信 AutoScalingGroup 正在等待生命周期事件?

当我手动完成实例生命周期时,没有问题:

aws autoscaling complete-lifecycle-action \
  --auto-scaling-group-name XXXX \
  --lifecycle-hook-name CodeDeploy-managed-automatic-launch-deployment-hook-XX \
  --instance-id i-XX \
  --lifecycle-action-result CONTINUE \
  --region eu-west-1

UserData 脚本的一部分:

 UserData:
    Fn::Base64: !Sub |
      [...]
      # Setup CodeDeploy
      sudo /home/ubuntu/install-codedeploy-agent auto
      rm /home/ubuntu/install-codedeploy-agent

      # Install the files and packages from the metadata
      /usr/local/bin/cfn-init -v \
        --stack ${AWS::StackId} \
        --resource LaunchConfiguration \
        --region ${AWS::Region}

      # All done so signal success to CloudFormation
      /usr/local/bin/cfn-signal -e $? \
        --stack ${AWS::StackId} \
        --resource AutoScalingGroup \
        --region ${AWS::Region}

      # Start CodeDeploy agent
      sudo service codedeploy-agent start
      sudo service codedeploy-agent status

AutoScaling 组定义:

AutoScalingGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    AvailabilityZones:
      Fn::GetAZs: !Ref AWS::Region
    LaunchConfigurationName: !Ref LaunchConfiguration
    MinSize: 1
    MaxSize: 2
    DesiredCapacity: 1
    TargetGroupARNs:
      - !Ref ElasticLoadBalancerTargetGroup
    HealthCheckType: ELB
    HealthCheckGracePeriod: 600 # in seconds
  CreationPolicy:
    ResourceSignal:
      Count: 1
      Timeout: PT15M # 15 minutes
  UpdatePolicy:
    AutoScalingRollingUpdate:
      PauseTime: PT15M # 15 minutes
      WaitOnResourceSignals: true

最佳答案

据我所知cfn-signal与自动缩放生命周期 Hook 完全无关。

其目的是向 CloudFormation 发出信号,告知给定自动缩放组中的实例已准备就绪。当 CloudFormation 收到一定数量的成功信号时,它会认为 ASG 为 CREATE_COMPLETEUPDATE_COMPLETE 。如果应该接收信号的堆栈由于模板中的一些其他问题而回滚,cfn-signal将失败,因为其信号不再与 _COMPLETE 中的堆栈相关。状态。

关于amazon-web-services - cfn-signal UPDATE_ROLLBACK_COMPLETE 状态且无法发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49072883/

相关文章:

python - s3 存储桶返回 NoneType

ios - 使用 Alamofire 将文件上传到 amazon s3

amazon-web-services - Amazon Elastic Beanstalk 配置问题

mysql - 如何将mysql用户连接到服务器AWS EC2?

amazon-web-services - 我们可以使用云形成模板将 RDS 只读副本升级为主吗?

amazon-web-services - CloudFormation - 如何在服务中引用子网 ID

amazon-web-services - 将角色/用户添加到 AWS 服务目录组合

ruby-on-rails - 为什么 Postgres DUMP 数据数据库连接在 Amazon RDS 上丢失?

amazon-web-services - 由于私有(private) IP [AWS CloudFormation],AWS 堆栈中出现循环依赖

amazon-web-services - LoadBalancer 中的 AWS 实例显示 "OutOfService"