如何用CloudFormation语法移除ARN末尾的通配符部分?
如何移除CloudFormation日志组ARN末尾的
:*部分? 嘿,很高兴看到你已经找到了解决方案!我把这个方法梳理得更清楚些,方便其他碰到同样问题的小伙伴参考:
当我们通过Fn::GetAtt: [LogsGroup, Arn]获取日志组ARN时,返回的结果会自带末尾的:*通配符,比如:
arn:aws:logs:us-east-1:123456789012:log-group:/log-group-1234:*
而我们需要的是不带这个通配符的纯净ARN,最精准的做法就是用Fn::Split配合Fn::Select来实现:
Fn::Select: - '0' - Fn::Split: - ":*" - Fn::GetAtt: [LogsGroup, Arn]
简单解释下逻辑:
Fn::Split: [":*", ...]:把返回的ARN字符串以:*为分隔符拆分成两个部分,拆分后第一部分就是我们需要的不带通配符的ARN,第二部分是空字符串;Fn::Select: ['0', ...]:选择拆分后的第一个片段(索引从0开始),直接得到目标ARN。
对比你之前尝试用:拆分再选第8个片段的方法,这个方案更可靠——毕竟如果日志组名称里包含冒号的话,按冒号拆分的索引就会乱掉,而用:*作为分隔符是精准定位到要移除的末尾部分,不会受日志组名称结构影响。
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

