在 CloudFormation 中使用 Join 函数不断出错
Keep getting errors using Join function in CloudFormation
使用 CFN 中的 Join
功能让我抓狂。
它有时有效,有时无效,而且我使用的语法似乎没有任何问题,错误并不一致。模板的验证总是 returns 好的,但在堆栈创建的最后一步,它失败了,有时会在创建资源时抛出错误(因为名称格式不正确)或给我这个错误消息 every Fn::Join object requires two parameters, (1) a string delimiter and (2) a list of strings to be joined or a function that returns a list of strings (such as Fn::GetAZs) to be joined.
.
是否有调试它而不是一直创建资源的好方法?
例如,这个语法有什么问题?
BucketName: !Join
- ''
- - !FindInMap
- Naming
- BasicPrefix
- Name
- '-'
- !Ref BusinessUnitName
- '-'
- !Ref EnvType
或者,为什么不能使用类似下面的语法来获得相同的结果?
BucketName: !Join
- '-'
- - !FindInMap
- Naming
- BasicPrefix
- Name
- !Ref BusinessUnitName
- !Ref EnvType
或者这个shorthand一个:
BucketName: !Join ['-', [!FindInMap [Naming, BasicPrefix, Name], !Ref BusinessUnitName, !Ref EnvType]]
None 会起作用。我必须不断尝试不同的方法,直到 CFN 接受它。好累。
请帮忙。
您的语法看起来正确,但需要完整的模板才能确定错误原因。
但是对于您的情况,Fn::Sub 是比 Fn::Join 更好的选择,请尝试使用 Fn::Sub 和如下映射
BucketName: !Sub
- ${MapResult}-${BU}-${Env}
- { MapResult: !FindInMap [Naming, BasicPrefix, Name] }
- { BU: !Ref BusinessUnitName }
- { Env: !Ref EnvType }
使用 CFN 中的 Join
功能让我抓狂。
它有时有效,有时无效,而且我使用的语法似乎没有任何问题,错误并不一致。模板的验证总是 returns 好的,但在堆栈创建的最后一步,它失败了,有时会在创建资源时抛出错误(因为名称格式不正确)或给我这个错误消息 every Fn::Join object requires two parameters, (1) a string delimiter and (2) a list of strings to be joined or a function that returns a list of strings (such as Fn::GetAZs) to be joined.
.
是否有调试它而不是一直创建资源的好方法?
例如,这个语法有什么问题?
BucketName: !Join
- ''
- - !FindInMap
- Naming
- BasicPrefix
- Name
- '-'
- !Ref BusinessUnitName
- '-'
- !Ref EnvType
或者,为什么不能使用类似下面的语法来获得相同的结果?
BucketName: !Join
- '-'
- - !FindInMap
- Naming
- BasicPrefix
- Name
- !Ref BusinessUnitName
- !Ref EnvType
或者这个shorthand一个:
BucketName: !Join ['-', [!FindInMap [Naming, BasicPrefix, Name], !Ref BusinessUnitName, !Ref EnvType]]
None 会起作用。我必须不断尝试不同的方法,直到 CFN 接受它。好累。
请帮忙。
您的语法看起来正确,但需要完整的模板才能确定错误原因。
但是对于您的情况,Fn::Sub 是比 Fn::Join 更好的选择,请尝试使用 Fn::Sub 和如下映射
BucketName: !Sub
- ${MapResult}-${BU}-${Env}
- { MapResult: !FindInMap [Naming, BasicPrefix, Name] }
- { BU: !Ref BusinessUnitName }
- { Env: !Ref EnvType }