AWS CloudFormation如何获取移除固定前缀后的子字符串
CloudFormation 字符串截取解决方案

现有写法修正
你尝试的拆分思路是可行的,但索引选择有误:用固定前缀作为分隔符拆分字符串时,拆分结果的第一个元素为空字符串,第二个元素才是你需要的目标内容,正确写法如下:
# 针对前缀为abcd/的场景 Fn::Select: - 1 - Fn::Split: - 'abcd/' - ${string}
上述代码就可以直接得到123xx/OBcs/azy_cd的结果。
通用无固定前缀截取方案
如果需要去掉任意第一个/之前的所有内容(比如第一个示例中的redundant_value/、第二个示例中的abcd/都可以统一处理,不需要修改分隔符),可以使用切片选择 + 拼接的方案:
Fn::Join: - '/' - Fn::Select: # "1:" 代表取索引1到末尾的所有数组元素 - "1:" - Fn::Split: - '/' - ${string}
以你第一个示例字符串redundant_value/12b4/xyz/succes为例,拆分后得到数组["redundant_value", "12b4", "xyz", "succes"],取索引1之后的所有元素拼接后即可得到12b4/xyz/succes。
Fn::Sub 函数用法说明
Fn::Sub 不用于字符串截取,它的核心能力是替换字符串中的变量,适合将参数、资源属性嵌入到固定字符串的场景,基础用法如下:
基础变量替换
直接引用模板中已定义的参数、资源属性:
# 假设已有参数Environment取值为prod Fn::Sub: "https://${Environment}.example.com" # 输出结果:https://prod.example.com
自定义变量替换
可以临时定义变量用于替换:
Fn::Sub: - "arn:aws:s3:::${BucketName}/${DataPrefix}" - BucketName: !Ref MyS3Bucket DataPrefix: "business/logs"
内容的提问来源于stack exchange,提问作者Brian Huynh
相关产品推荐
相关产品推荐

