如何在 cloudformation“Fn::Sub”中转义“$”
Posted
技术标签:
【中文标题】如何在 cloudformation“Fn::Sub”中转义“$”【英文标题】:How to escape "$" in cloudformations "Fn::Sub"如何在 cloudformation“Fn::Sub”中转义“$” 【发布时间】:2017-11-11 12:02:38 【问题描述】:我希望此资源与 !Sub
(或 Fn::Sub
)内在函数一起使用
Resource: !Sub 'arn:aws:iam::$AWS::AccountId:user/$aws:username'
aws:username
是一个不能被替换的pollicy variable。
一种解决方案是改用Fn::Join
并编写更多样板代码。
更好:你能逃脱$aws:username
以便!Sub
可以在这里工作吗? 很遗憾,documentation 没有提及任何关于转义的内容。
【问题讨论】:
【参考方案1】:您实际上可以使用$!
转义$
字符。
所以你的资源应该是这样的:
Resource: !Sub 'arn:aws:iam::$AWS::AccountId:user/$!aws:username'
在字符串参数部分的docs中有提到。
要按字面意思书写美元符号和花括号 ($),请添加 左大括号后的感叹号 (!),例如 $!Literal。 AWS CloudFormation 将此文本解析为 $Literal。
【讨论】:
是的,它在文档中。我现在感觉很傻。 这是一种奇怪的逃避方式 @mana 不要觉得自己很傻。有 10 亿个 AWS 文档页面 - 很容易错过。以上是关于如何在 cloudformation“Fn::Sub”中转义“$”的主要内容,如果未能解决你的问题,请参考以下文章
如何知道 sam/cloudformation 堆栈 lambda 正在执行啥
Cloudformation - 如何在代码中设置 SNS 订阅的过滤策略?
如何使用 CloudFormation 添加用户池的资源服务器?
如何使用单个 cloudformation 模板创建多个 Elasticbeanstalk 环境