是否可以从 CloudFormation 检索作为参数传入的值以用于其他用途?

Can values passed in as parameters be retrieved from CloudFormation for other uses?

我有 Windows 用户帐户凭据作为 CloudFormation 模板中的参数传递。使用 SSM/EC2Config 我将需要在与此模板关联的我的实例上执行命令,但由于 Windows 上只有一个特定用户帐户被授予访问我需要的资源的权限,我需要在以下情况下指定这些相同的凭据我通过 SSM 执行我的 Powershell 命令(因为 运行 宁作为管理员将没有适当的访问权限)。

这些命令将在 运行 之后,而不是在实例启动时。我有什么办法可以从 CloudFormation 获取这些凭据吗?或者任何其他方式来实现这个或类似的东西?

只要有问题的参数没有NoEcho 属性明确设置为true(默认为false),那么你可以检索使用来自任何各种工具(例如 AWS API、CLI 或您选择的 SDK)的 describe-stacks 调用的参数值。如果 NoEcho 设置为 true,您将无法检索这些参数值。

对于 运行 命令,您需要从 运行 具有正确权限调用 describe-stacks,或者该工具已配置具有权限的 AWS 安全凭证(即 Access Key IdSecret Access Key)。

AWS CLI 示例:

aws cloudformation describe-stacks --region <region> --stack-name <stack-name>

默认情况下,您会注意到参数嵌入在 JSON 响应中,还有一堆关于堆栈的其他信息。为了在脚本中更有用,您可以使用 JMESPath 查询将返回的数据缩小为仅参数的值:

aws cloudformation describe-stacks --region <region> --stack-name <stack-name> --query 'Stacks[*].Parameters[?ParameterKey == `<parameter-name>`].ParameterValue' --output text