如何在AWS CloudFormation部署过程中获取输出和调试信息?

6
使用AWS Cloudformation,我的aws cloudformation create-stack因某些不明原因而失败。对于这个问题来说,错误和解释并不相关,但我认为我正在传递一个使用--parameters参数的参数,在CloudFormation模板中没有得到正确处理,或者在模板中评估表达式或引用变量时出现错误。
无论如何,我真的很想能够在模板的评估期间输出一些调试语句或表达式;堆栈的供应。 CloudFormation中等价于logging.debug(some-expression)将表达式输出到CloudWatch Logs或其他输出通道的是什么? CloudFormation Stacks中的事件日志显示了错误(在我的情况下),但不幸的是,它没有显示我需要修复错误的细节。它不显示变量或CloudFormation表达式在执行/提供期间的值,并且(据我所知)我无法创建事件,以显示变量或表达式的值。CloudWatch日志为空,关于供应任务。 aws cloudformation validate-template未显示任何错误,因此CloudFormation模板在语法上是正确的。

1
也许可以使用自定义资源,将您的日志消息作为参数发送到某个地方?甚至可以只是打印它,以便在 CloudWatch 中可用。 - kichik
好的,但是使用自定义资源来收集表达式的值,然后将该资源包含在模板的输出中... 这确实是一个相当大的绕路 :-D - Jochem Schulenklopper
1个回答

2
“logging.debug(some-expression)”在CloudFormation中的等效功能是什么,可以将表达式输出到CloudWatch Logs或其他输出渠道吗?
很遗憾,AWS没有提供这样的功能。 AWS提供的唯一工具是aws cloudformation validate-template。如何使用模板验证的一般信息在最近的AWS博客中有描述: 然而,某种程度的调试来自于创建更改集, 但这仅适用于更新现有堆栈。
你也可以找一些第三方工具,例如yaml检查器或CloudFormation模板检查器,来检查你的模板。许多这样的工具都列在this SO问题中。
最终,要确保模板能够正常工作,你必须尝试部署它。

谢谢。我执行了validate-template,但那主要是语法检查(并非执行期间的日志记录)。我还发现了其他StackOverflow问题和其中的参考资料,但错过了一个有关在提供期间动态输出消息的工具。 - Jochem Schulenklopper
3
最终,要确保你的模板能够正常工作,你必须尝试部署它。是的,这就是我正在做的。这有点像在生产环境中进行调试,但没有能力记录执行期间的输出语句 :-) - Jochem Schulenklopper
1
@JochemSchulenklopper 我理解你的痛苦。建议是保持你的模板尽可能小。如果一个模板只包含一个或两个资源,那么弄清楚其中发生的事情会容易得多。 - Marcin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接