如何解决在 aws cloudformation 中,当我尝试一起使用 !sub 和 !join 函数时出错
嗨,我正在 cfn 模板中尝试以下操作:
ManagedPolicyArns:
- !Ref kinesiss3logpolicy
PermissionsBoundary: !Sub
- !Join [ '',[ 'arn:aws:iam::${AWS::AccountId}:policy/',!Ref AdminPolicy ] ]
其中 AdminPolicy 是一个参数。
我收到以下错误:
*[error]ValidationError: Template error: One or more Fn::Sub intrinsic functions don't specify expected arguments. Specify a string as first argument,and an optional second argument to specify a mapping of values to replace in the string*
有人可以帮我解决这个问题吗?
解决方法
根据 docs 有多种使用 Sub 的方法。
您必须提供到 Sub
的值映射,除非您仅使用可直接替换的参数。
您已将 !Sub
的参数定义为列表,因为您使用的是 -
。
PermissionsBoundary: !Sub
- !Join [ '',[ 'arn:aws:iam::${AWS::AccountId}:policy/',!Ref AdminPolicy ] ]
这不起作用。如果您使用 Sub
的列表,则必须提供值映射。
那么您应该在一行中使用 !Sub
,因为您只使用伪参数和您自己的参数。
那你就得这样用了,但是这个有语法错误。但想法是一样的。
PermissionsBoundary: !Sub !Join [ '',!Ref AdminPolicy ] ]
然后您可以使用 Fn
表示法,而不是速记表示法。
PermissionsBoundary: { Fn::Sub: {Fn::Join: [ '',!Ref AdminPolicy ] ] } }
正如评论中提到的,您可以删除 !Join
并仅使用 !Sub
。
PermissionsBoundary: !Sub "arn:aws:iam::${AWS::AccountId}:policy/${AdminPolicy}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。