AWS CloudFormation Concepts Intrinsic Functions

From NovaOrdis Knowledge Base
Revision as of 00:43, 28 March 2019 by Ovidiu (talk | contribs) (→‎GetAtt)
Jump to navigation Jump to search

External

Intrinsic Function Reference

Internal

Ref

Ref

The intrinsic function Ref returns the value of the object it refers to, such as a parameter or resource. When a parameter logical name is specified, it returns the value of the parameter. When a resource logical name is specified, it returns a value that can be typically used to refer to that resource, such as a physical ID.

!Ref AWS::StackName
!Ref MyParameter
!Ref MyResourceName

GetAtt

GetAtt

An intrinsic function that returns arbitrary attributes of a resource (Ref returns just important value associated with the resource). The function takes two parameters: the logical name of the resource and the attribute to be retrieved, as an array.

Using GetAtt to Configure the ARN of a Resource Created by the Template

Resources:

  # this resource has an ARN
  AccessLogGroup:
    Type: AWS::Logs::LogGroup
    ...

  ...
  
  # this resource needs the ARN
  Stage:
    Type: AWS::ApiGateway::Stage
    Properties:
      ...
      AccessLogSetting:
        DestinationArn: !GetAtt AccessLogGroup.Arn
        ...

Join

Join

The Fn::Join function takes two parameters, a delimiter that separates the values you want to concatenate and an array of values in the order that you want them to appear.

!Join [ delimiter, [ comma-delimited list of values ] ]
!Join ['-', [ a, b, c ]]

returns "a:b:c"

Split

Split
!Split ['.', "www.example.com"]

returns ["www", "example", "com"].

Select

Select

Sub

Sub

Sub substitutes variables in an input string with specified values.

If only template parameters, resource logical IDs and resource attributes are substituted in the String parameter, no variable map is required:

!Sub '${TemplateParameterA} is a ${TemplateParameterB}'
!Sub '${AWS::Region}-something'

ImportValue

ImportValue

The Fn::ImportValue returns the value of an output exported by another stack. The function is used to create cross-stack references.

Can be used as a key in a YAML structure:

...
ServiceRole:
  Fn::ImportValue: ...

or a value:

...
EnvironmentVariables:
  - Name: TARGET_BUCKET
     Value:
       Fn::ImportValue: !Sub '${AWS::Region}-BuildBucket'

FindInMap

!FindInMap [ MapName, TopLevelKey, SecondLevelKey ]