我试图将我的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信号文件位于按字母顺序自动缩放配置文件之前,但这没有任何区别。我的理解正确吗,这里存在循环依赖?有什么解决方法吗?