将AWSEBAutoScalingGroup与CreationPolicy一起使用时的循环依赖

时间:2019-05-20 16:46:47

标签: amazon-web-services amazon-ec2 amazon-cloudformation amazon-elastic-beanstalk autoscaling

我试图将我的Elastic Beanstalk环境设置为具有自动缩放组,该组具有创建和更新策略,该策略等待来自任何新实例的信号。不幸的是,我在使它起作用方面遇到问题,并且我相信这是由于循环依赖。我在.ebextensions中有一个带有自动缩放配置的配置文件:

Resources:
  AWSEBAutoScalingGroup:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      HealthCheckType: ELB
      HealthCheckGracePeriod: 300
    UpdatePolicy:
      ResourceSignal:
        Timeout: PT30M
    CreationPolicy:
      ResourceSignal:
        Timeout: PT30M

我还有另一个配置文件,该文件应该运行cfn-signal脚本,该脚本将允许自动伸缩组完成创建或更新:

commands:
  "01cfn-bootstrap-update":
    command: yum update -y aws-cfn-bootstrap
  "02cfn-signal":
    env:
      stackName:
        Ref: AWS::StackName
      region:
        Ref: AWS::Region
    command: /opt/aws/bin/cfn-signal -e $? --stack ${stackName} --resource AWSEBAutoScalingGroup --region ${region}

创建环境时,将创建自动缩放组并等待信号。但是,实例永远不会发送信号。我进入该实例,然后查看日志,发现cfn-signal命令(或.ebextensions中的任何命令)没有执行。

我相信这是因为Elastic Beanstalk一次处理一个.ebextensions,所以直到自动缩放配置文件完成后,它才处理cfn-signal配置文件。因为此资源等待相同的信号,所以它永远不会完成,并且signal命令永远不会运行。我还尝试了完全删除自动缩放配置文件,并且在这种情况下cfn-signal命令能够运行(尽管由于自动缩放组未等待信号而失败了)。我还尝试过重命名文件,以便cfn信号文件位于按字母顺序自动缩放配置文件之前,但这没有任何区别。我的理解正确吗,这里存在循环依赖?有什么解决方法吗?

0 个答案:

没有答案