我可以通过 CloudFormation 在同一模板中使用 AWS::ElasticBeanstalk::Environment 和 AWS::ElasticBeanstalk::ApplicationVersion 部署 EB 环境
这很好,但如果 beanstalk 应用部署失败,CloudFormation 不会失败 - 堆栈/环境通常会成功创建。因此,CloudFormation 部署成功,Beanstalk 应用程序版本部署失败,Beanstalk 回滚到以前的版本,并返回到健康状态,我知道它失败的唯一方法是查看控制台或执行一些奇怪的操作,例如尝试检查当前应用程序部署后的版本。
嵌套堆栈 AWS::ElasticBeanstalk::Environment 创建,但是如果应用程序版本部署失败,确实似乎会失败,但我找不到链接这两者的方法,这非常烦人。
我需要以编程方式识别 AWS::ElasticBeanstalk::Environment 在 CloudFormation 完成后创建的嵌套堆栈,并可以检查该嵌套堆栈的状态以查看 Beanstalk 部署是否确实成功
编辑
至少它们标有环境名称。我真的不喜欢这个,但它似乎有效,但对更好的选择感到好奇:
aws cloudformation describe-stacks --query 'Stacks[?Tags[?Key == `elasticbeanstalk:environment-name` && Value == `myenvname`]].{StackName: StackName}' --output text
最佳答案
从技术上讲,它不是嵌套堆栈,而是完全独立于 AWS::ElasticBeanstalk::Environment
的堆栈。
尽管如此,获取堆栈名称的一种方法是通过 custom resource在 CFN 中。
在 CFN 中,您将有一个 lambda,它将使用 describe-environments使用您的环境,获取 EB 堆栈名称,并将其返回到您的堆栈以进行进一步处理。
查询的结果之一是EnvironmentId
。例如
"EnvironmentId": "e-ctpmqpqwjm"
EB 生成的堆栈的名称格式如下:
awseb-<EnvironmentId>-stack
遗憾的是,我找不到任何相关引用资料。这是基于我自己的观察。因此,如果您选择探索此选项,则必须验证命名约定是否与您相同。
关于amazon-web-services - 是否有任何东西将 AWS::ElasticBeanstalk::Environment 链接到它创建的嵌套堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62782772/