amazon-web-services - 需要使用 aws cli 或 api 从命令行获取用于部署 ec2 的 cloudformation 模板的名称

标签 amazon-web-services amazon-ec2 command-line-interface aws-cloudformation

我使用了cloudformation模板来创建ec2实例。除了标记之外,还有什么方法可以通过命令行获取 cloudformation 模板的名称吗?

最佳答案

方法一:标记

标记将是获取该数据的最干净、最简单的方法。您确实需要做一些预先工作,这不适用于现有实例,但它将快速且可靠。

方法2:交叉引用

如果您有实例 ID,您可以要求 Cloudformation 搜索其同级堆栈资源,从中您可以推断出堆栈名称、ID 等。

c = boto.cloudformation.connect_to_region('us-east-1')
c.describe_stack_resources(physical_resource_id='i-830e2869')[0].stack_name

如果实例不是堆栈的一部分,您将收到Stack for i-830e2869 does not exit 400 错误。

方法3:用户数据

我承认 - 这非常有创意,所以对你的想法表示赞赏。

curl http://169.254.169.254/latest/user-data | grep 'cfn-init -s' | awk '{print $3}'

这样做的原因是 Cloudformation 创建的实例需要运行 /opt/aws/bin/cfn-init 来安装软件包和 /opt/aws/bin/cfn-signal 以报告其成功创建,参数之一是堆栈名称。

如果有人编辑用户数据,它就会失败,但尽管感觉有点hacky,但它看起来相当可靠。我仍然不建议在产品中使用它,因为它对脚本参数的依赖很脆弱。

关于amazon-web-services - 需要使用 aws cli 或 api 从命令行获取用于部署 ec2 的 cloudformation 模板的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516595/

相关文章:

npm - 如何使用 "yarn"或 "npm"列出特定类型的依赖项

oracle - Ubuntu:oci:找不到命令

amazon-web-services - 当我停止并启动一个 ec2 cent os 实例时,我会丢失哪些数据

amazon-web-services - 如何过滤来自 AWS CLI 命令的结果

amazon-web-services - 如何将 AWS SecureTokenService 与 Spring Cloud AWS 结合使用

amazon-web-services - AWS - HA NFS - 最佳实践

amazon-web-services - AWS Lambda SAM,指定多个策略

amazon-ec2 - Spot 实例终止

php - 如何使用 Amazon PHP SDK 2 获取 EC2 实例列表?

javascript - 在 NodeJS CLI 应用程序中将参数传递给可执行文件