Skip to content

Commit 1dc6de8

Browse files
troyreadyphobologic
authored andcommitted
add ssm param types (#692)
1 parent b2bb9d7 commit 1dc6de8

2 files changed

Lines changed: 56 additions & 3 deletions

File tree

docs/blueprints.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,10 @@ CFNType
244244

245245
The ``CFNType`` can be used to signal that a variable should be submitted
246246
to CloudFormation as a Parameter instead of only available to the
247-
Blueprint when rendering. This is useful if you want to leverage AWS
248-
specific Parameter types like ``List<AWS::EC2::Image::Id>``. See
249-
``stacker.blueprints.variables.types`` for available subclasses of the
247+
Blueprint when rendering. This is useful if you want to leverage AWS-
248+
Specific Parameter types (e.g. ``List<AWS::EC2::Image::Id>``) or Systems
249+
Manager Parameter Store values (e.g. ``AWS::SSM::Parameter::Value<String>``).
250+
See ``stacker.blueprints.variables.types`` for available subclasses of the
250251
``CFNType``.
251252

252253
Example

stacker/blueprints/variables/types.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,14 @@ def __init__(self, parameter_type):
127127
self.parameter_type = parameter_type
128128

129129

130+
# General CFN types
130131
CFNString = CFNType("String")
131132
CFNNumber = CFNType("Number")
132133
CFNNumberList = CFNType("List<Number>")
133134
CFNCommaDelimitedList = CFNType("CommaDelimitedList")
135+
136+
# AWS-Specific Parameter Types
137+
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#aws-specific-parameter-types
134138
EC2AvailabilityZoneName = CFNType("AWS::EC2::AvailabilityZone::Name")
135139
EC2ImageId = CFNType("AWS::EC2::Image::Id")
136140
EC2InstanceId = CFNType("AWS::EC2::Instance::Id")
@@ -151,3 +155,51 @@ def __init__(self, parameter_type):
151155
EC2VolumeIdList = CFNType("List<AWS::EC2::Volume::Id>")
152156
EC2VPCIdList = CFNType("List<AWS::EC2::VPC::Id>")
153157
Route53HostedZoneIdList = CFNType("List<AWS::Route53::HostedZone::Id>")
158+
159+
# SSM Parameter Types
160+
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#aws-ssm-parameter-types
161+
SSMParameterName = CFNType("AWS::SSM::Parameter::Name")
162+
SSMParameterValueString = CFNType("AWS::SSM::Parameter::Value<String>")
163+
SSMParameterValueStringList = CFNType(
164+
"AWS::SSM::Parameter::Value<List<String>>")
165+
SSMParameterValueCommaDelimitedList = CFNType(
166+
"AWS::SSM::Parameter::Value<CommaDelimitedList>")
167+
# Each AWS-specific type here is repeated from the the list above
168+
SSMParameterValueEC2AvailabilityZoneName = CFNType(
169+
"AWS::SSM::Parameter::Value<AWS::EC2::AvailabilityZone::Name>")
170+
SSMParameterValueEC2ImageId = CFNType(
171+
"AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>")
172+
SSMParameterValueEC2InstanceId = CFNType(
173+
"AWS::SSM::Parameter::Value<AWS::EC2::Instance::Id>")
174+
SSMParameterValueEC2KeyPairKeyName = CFNType(
175+
"AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>")
176+
SSMParameterValueEC2SecurityGroupGroupName = CFNType(
177+
"AWS::SSM::Parameter::Value<AWS::EC2::SecurityGroup::GroupName>")
178+
SSMParameterValueEC2SecurityGroupId = CFNType(
179+
"AWS::SSM::Parameter::Value<AWS::EC2::SecurityGroup::Id>")
180+
SSMParameterValueEC2SubnetId = CFNType(
181+
"AWS::SSM::Parameter::Value<AWS::EC2::Subnet::Id>")
182+
SSMParameterValueEC2VolumeId = CFNType(
183+
"AWS::SSM::Parameter::Value<AWS::EC2::Volume::Id>")
184+
SSMParameterValueEC2VPCId = CFNType(
185+
"AWS::SSM::Parameter::Value<AWS::EC2::VPC::Id>")
186+
SSMParameterValueRoute53HostedZoneId = CFNType(
187+
"AWS::SSM::Parameter::Value<AWS::Route53::HostedZone::Id>")
188+
SSMParameterValueEC2AvailabilityZoneNameList = CFNType(
189+
"AWS::SSM::Parameter::Value<List<AWS::EC2::AvailabilityZone::Name>>")
190+
SSMParameterValueEC2ImageIdList = CFNType(
191+
"AWS::SSM::Parameter::Value<List<AWS::EC2::Image::Id>>")
192+
SSMParameterValueEC2InstanceIdList = CFNType(
193+
"AWS::SSM::Parameter::Value<List<AWS::EC2::Instance::Id>>")
194+
SSMParameterValueEC2SecurityGroupGroupNameList = CFNType(
195+
"AWS::SSM::Parameter::Value<List<AWS::EC2::SecurityGroup::GroupName>>")
196+
SSMParameterValueEC2SecurityGroupIdList = CFNType(
197+
"AWS::SSM::Parameter::Value<List<AWS::EC2::SecurityGroup::Id>>")
198+
SSMParameterValueEC2SubnetIdList = CFNType(
199+
"AWS::SSM::Parameter::Value<List<AWS::EC2::Subnet::Id>>")
200+
SSMParameterValueEC2VolumeIdList = CFNType(
201+
"AWS::SSM::Parameter::Value<List<AWS::EC2::Volume::Id>>")
202+
SSMParameterValueEC2VPCIdList = CFNType(
203+
"AWS::SSM::Parameter::Value<List<AWS::EC2::VPC::Id>>")
204+
SSMParameterValueRoute53HostedZoneIdList = CFNType(
205+
"AWS::SSM::Parameter::Value<List<AWS::Route53::HostedZone::Id>>")

0 commit comments

Comments
 (0)