The ‘alfred’ helper and the AWS CloudFormation parameter files
CfCT provides you with a mechanism known as the alfred helper to get the value for an SSM Parameter Store key that's defined in the AWS CloudFormation template. Using the alfred helper, you can use values that are stored in the SSM Parameter Store and without updating the AWS CloudFormation template. For more information, see What is an AWS CloudFormation template? in the AWS CloudFormation User Guide.
Important
The alfred helper has two limitations. Parameters are available only in the home region of the AWS Control Tower management account. As a best practice, consider working with values that don't change from stack instance to stack instance. When the 'alfred' helper retreives parameters, it chooses a random stack instance from the stack set that exports the variable.
Example
Suppose that you have two AWS CloudFormation stack sets. Stack set 1 has one
stack instance and deploys to one account in one Region. It creates an Amazon VPC and subnets
in an availability zone, and the VPC ID
and subnet ID
must be
passed into stack set 2 as parameter values. Before the VPC
ID
and subnet ID
can be passed to stack set 2,
the VPC ID
and subnet ID
must be stored in stack set
1 using AWS:::SSM::Parameter
. For more information, see AWS:::SSM::Parameter
in the AWS CloudFormation User
Guide.
AWS CloudFormation stack set 1:
In the following snippet, the alfred helper can gets value for
the VPC ID
and subnet ID
from the parameter store and pass them
as input to the StackSet state machine.
VpcIdParameter: Type: AWS::SSM::Parameter Properties: Name: '/stack_1/vpc/id' Description: Contains the VPC id Type: String Value: !Ref MyVpc SubnetIdParameter: Type: AWS::SSM::Parameter Properties: Name: '/stack_1/subnet/id' Description: Contains the subnet id Type: String Value: !Ref MySubnet
AWS CloudFormation stack set 2:
The snippet shows the parameters that are specified in the AWS CloudFormation stack 2
manifest.yaml
file.
parameters: - parameter_key: VpcId parameter_value: $[alfred_ssm_/stack_1/vpc/id] - parameter_key: SubnetId parameter_value: $[alfred_ssm_/stack_1/subnet/id]
AWS CloudFormation stack set 2.1:
The snippet shows that you can list alfred_ssm
properties to support
parameters of type CommaDelimitedList. For more
information, see Parameters
in the AWS CloudFormation User Guide.
parameters: - parameter_key: VpcId # Type: String parameter_value: $[alfred_ssm_/stack_1/vpc/id'] - parameter_key: SubnetId # Type: String parameter_value: $[ alfred_ssm_/stack_1/subnet/id'] - parameter_key: AvailablityZones # Type: CommaDelimitedList parameter_value: - "$[alfred_ssm_/availability_zone_1]" - "$[alfred_ssm_/availability_zone_2]"