amazon-web-services - 是否有任何东西将 AWS::ElasticBeanstalk::Environment 链接到它创建的嵌套堆栈?

标签 amazon-web-services amazon-elastic-beanstalk aws-cloudformation

我可以通过 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/

相关文章:

node.js - 直接从 Bitbucket 部署到 AWS Elastic Beanstalk

amazon-web-services - AWS ELB 监听器创建失败并出现验证异常

mysql - MariaDB 从站错误 - 字符串对于 MASTER_HOST 来说太长

node.js - Elastic Beanstalk 上传和部署错误 : Error: Cannot find module 'semver'

python - 用户无权担任 IAM 角色

amazon-web-services - 如何从aws上的无服务器框架输出资源路径?

amazon-web-services - ECS 中 EFS 挂载 "Failed to resolve"

amazon-web-services - 如何转义包含 ${aws :username} in "Resource" section? 的 HCL 字符串

amazon-web-services - 实际上,如何设置Amazon AWS以使其自动缩放?

aws-lambda - AWS Lambda 与 Elastic Beanstalk