Chr*_*her 70 amazon-web-services aws-cloudformation
CloudFormation是一个功能强大的AWS产品,它允许程序创建AWS资源堆栈,如的应用程序的Web层,一个高性能计算集群,或整个应用程序堆栈,用一个单一的API调用.它非常强大.使用它肯定被认为是一种很好的AWS实践,特别是当它与Chef, Puppet或cloud-init结合使用时.调试它让我感到恶心.
举一个生产示例:股票mongodb集群模板对我不起作用.我不知道为什么.我确信这很简单,因为它几乎总是如此.我的问题不在于我无法弄清楚出了什么问题.这就是它需要20到30分钟的堆栈才能失败,然后再删除三到四分钟,假设它完全正确地删除了资源.
我错过了什么?我知道--disable-rollback旗帜并像氧气一样使用它.我很久以前就学会了将退出信息包起来cfn-signal并将它们像一艘正在下沉的船上的压舱物一样扔掉.如何更快地完成模板调试过程,或者在我制作它们半小时后我是否永远注意到我的错误?
小智 39
使用aws cloudformation validate-templateAWS CLI工具中的命令.它仅验证您的模板是有效的JSON还是YAML,而不是您的密钥和值是否正确(例如,不检查密钥中的拼写错误)
wjo*_*dan 10
如何使模板调试过程更快,还是让我在犯错半小时后才注意到错误?
以下是一些最佳实践建议,重点是提高复杂CloudFormation模板开发的迭代速度:
AWS已经在其自己的“ 最佳实践”文档中概述了这些内容,因此,我不再赘述:
该步骤的重点是在实际执行堆栈创建/更新之前捕获明显的语法或逻辑错误。
在复杂的堆栈中使用任何单独的CloudFormation资源之前,请确保通过在较小的独立堆栈中测试其行为,确保全面了解该资源的创建/更新/删除行为的全部范围,包括使用限制和典型的启动/拆卸时间。第一。
AWS::CloudFront::Distribution资源有时可能需要30-60分钟来创建/更新/删除,而AWS::EC2::SecurityGroup更新只需几秒钟。执行堆栈创建/更新时,任何单个资源的故障都将导致堆栈回退整个资源更改集,这可能不必要地破坏其他成功创建的资源,并且在构建具有较长时间的复杂堆栈时会花费很长时间。相关资源的依赖关系图。
解决方案是以较小的Update批次增量构建堆栈,一次添加一个(或几个)资源。这样,如果/在资源创建/更新中发生故障时,回滚不会导致您整个Stack的资源被破坏,而只会在最新的Update中更改资源集。
确保在执行创建/更新时通过查看堆栈的事件来监视堆栈更新的进度。这将是调试各个资源的其他问题的起点。
您是否查看了AWS Toolkit for Eclipse中包含的AWS CloudFormation模板编辑器 ?它具有语法突出显示,语句完成和AWS CloudFormation部署.
该AWS CloudFormation棉短绒提供了额外的静态分析超越aws cloudformation validate-template
它将通知您哪些资源类型和实例类型在某些区域不可用,根据允许的值验证属性值,捕获循环资源依赖项、语法错误、模板限制等
除了 CLI 之外,记住运行 linter 的最流行机制之一是安装编辑器插件,例如Visual Studio Code 扩展,该插件在每个文件保存时运行
此处描述了其他机制,如预提交 Git 钩子
晚会晚了,但我可能还要补充一点,值得花一些时间来配置和学习您的编辑器。我知道这听起来很基础,但是请尝试一下。
就我而言,使用vim,一旦花了一些时间安装json语法插件,并且(最终)了解了可轻松导航大型CF文件的折叠技术,我的性能就会好得多。我的人现在建议打错字(不要在这里打逗号,等等),突出显示颜色可以节省大量时间,提供清晰的视觉线索。
这可能有助于减轻语法错误,但是其他工具可以更好地解决模板内逻辑错误。希望有一天CF会出现“预览”模式。
| 归档时间: |
|
| 查看次数: |
32033 次 |
| 最近记录: |