## Intrinsic functions !Ref ResourceName { "Fn::Ref": "ResourceName" } !GetAtt ResourceName.AttributeName { "Fn::GetAtt": [ "ResourceName", "AttributeName" ] } !Sub "something:with:${Variable}" { "Fn:Sub": "something:with:${Variable}" } !Sub - something:with:${Variable} - { Variable: "foo" } { "Fn:Sub": [ "something:with:${Variable}", { "Variable": "foo" } ] } ### Syntax | Yaml form | Yaml Shorthand | Original JSON | | --------- | -------------- | -------------------- | | Fn::Ref arg | !Ref arg | { "Fn::Ref": arg } | Intrinsic functions can be nested, but take care with the shorthand yaml form as that cannot be nested consecutively. Ok: `Fn::GetAZs: !Ref 'AWS::Region'` Not Ok: `!GetAZs !Ref 'AWS::Region'` ## Global variables AWS::Region AWS::AccountId