CloudFormation Compatible Resource TypesAWS::AutoScaling::AutoScalingGroupAvailable since 2014.1 (Icehouse)PropertiesAvailabilityZonesNot Implemented.Updates cause replacement.Required property.CooldownCooldown period, in seconds.Can be updated without replacement.Optional property.DesiredCapacityDesired initial number of instances.Can be updated without replacement.Optional property.HealthCheckGracePeriodNot implemented.HealthCheckTypeNot implemented.InstanceIdThe ID of an existing instance to use to create the Auto Scaling group. If specify this property, will create the group use an existing instance instead of a launch configuration.Updates cause replacement.Optional property.Value must be of type nova.serverLaunchConfigurationNameThe reference to a LaunchConfiguration resource.Can be updated without replacement.Optional property.LoadBalancerNamesList of LoadBalancer resources.Updates cause replacement.Optional property.MaxSizeMaximum number of instances in the group.Can be updated without replacement.Required property.MinSizeMinimum number of instances in the group.Can be updated without replacement.Required property.TagsTags to attach to this group.Updates cause replacement.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:KeyUpdates cause replacement.Required property.ValueUpdates cause replacement.Required property.VPCZoneIdentifierUse only with Neutron, to list the internal subnet to which the instance will be attached; needed only if multiple exist; list length must be exactly 1.Updates cause replacement.Optional property.List contents:*UUID of the internal subnet to which the instance will be attached.Updates cause replacement.Optional property.AttributesInstanceListA comma-delimited list of server ip addresses. (Heat extension).HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::AutoScaling::AutoScalingGroup
properties:
AvailabilityZones: [Value, Value, ...]
Cooldown: Number
DesiredCapacity: Integer
InstanceId: String
LaunchConfigurationName: String
LoadBalancerNames: [Value, Value, ...]
MaxSize: Integer
MinSize: Integer
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
VPCZoneIdentifier: [String, String, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
AvailabilityZones: [Value, Value, ...]
Cooldown: Number
DesiredCapacity: Integer
InstanceId: String
LaunchConfigurationName: String
LoadBalancerNames: [Value, Value, ...]
MaxSize: Integer
MinSize: Integer
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
VPCZoneIdentifier: [String, String, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"AvailabilityZones": [Value, Value, ...],
"Cooldown": Number,
"DesiredCapacity": Integer,
"InstanceId": String,
"LaunchConfigurationName": String,
"LoadBalancerNames": [Value, Value, ...],
"MaxSize": Integer,
"MinSize": Integer,
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...],
"VPCZoneIdentifier": [String, String, ...]
}
}
}
}AWS::AutoScaling::LaunchConfigurationPropertiesBlockDeviceMappingsBlock device mappings to attach to instance.Updates cause replacement.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:DeviceNameA device name where the volume will be attached in the system at /dev/device_name.e.g. vdbUpdates cause replacement.Required property.EbsThe ebs volume to attach to the instance.Updates cause replacement.Optional property.Map properties:DeleteOnTerminationIndicate whether the volume should be deleted when the instance is terminated.Updates cause replacement.Optional property, defaults to "True".IopsNot implemented.SnapshotIdThe ID of the snapshot to create a volume from.Updates cause replacement.Optional property.Value must be of type cinder.snapshotVolumeSizeThe size of the volume, in GB. Must be equal or greater than the size of the snapshot. It is safe to leave this blank and have the Compute service infer the size.Updates cause replacement.Optional property.VolumeTypeNot implemented.NoDeviceNot implemented.VirtualNameNot implemented.ImageIdGlance image ID or name.Updates cause replacement.Optional property.Value must be of type glance.imageInstanceIdThe ID of an existing instance you want to use to create the launch configuration. All properties are derived from the instance with the exception of BlockDeviceMapping.Updates cause replacement.Optional property.Value must be of type nova.serverInstanceTypeNova instance type (flavor).Updates cause replacement.Optional property.Value must be of type nova.flavorKernelIdNot implemented.KeyNameOptional Nova keypair name.Updates cause replacement.Optional property.Value must be of type nova.keypairNovaSchedulerHintsScheduler hints to pass to Nova (Heat extension).Updates cause replacement.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:KeyUpdates cause replacement.Required property.ValueUpdates cause replacement.Required property.RamDiskIdNot implemented.SecurityGroupsSecurity group names to assign.Updates cause replacement.Optional property.UserDataUser data to pass to instance.Updates cause replacement.Optional property.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::AutoScaling::LaunchConfiguration
properties:
BlockDeviceMappings: [{"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, {"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, ...]
ImageId: String
InstanceId: String
InstanceType: String
KeyName: String
NovaSchedulerHints: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
SecurityGroups: [Value, Value, ...]
UserData: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
BlockDeviceMappings: [{"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, {"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, ...]
ImageId: String
InstanceId: String
InstanceType: String
KeyName: String
NovaSchedulerHints: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
SecurityGroups: [Value, Value, ...]
UserData: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"BlockDeviceMappings": [{"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, {"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, ...],
"ImageId": String,
"InstanceId": String,
"InstanceType": String,
"KeyName": String,
"NovaSchedulerHints": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...],
"SecurityGroups": [Value, Value, ...],
"UserData": String
}
}
}
}AWS::AutoScaling::ScalingPolicyPropertiesAdjustmentTypeType of adjustment (absolute or percentage).Can be updated without replacement.Required property.Allowed values: ChangeInCapacity, ExactCapacity, PercentChangeInCapacityAutoScalingGroupNameAutoScaling group name to apply policy to.Updates cause replacement.Required property.CooldownCooldown period, in seconds.Can be updated without replacement.Optional property.ScalingAdjustmentSize of adjustment.Can be updated without replacement.Required property.AttributesAlarmUrlA signed url to handle the alarm. (Heat extension).HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::AutoScaling::ScalingPolicy
properties:
AdjustmentType: String
AutoScalingGroupName: String
Cooldown: Number
ScalingAdjustment: NumberYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::AutoScaling::ScalingPolicy
Properties:
AdjustmentType: String
AutoScalingGroupName: String
Cooldown: Number
ScalingAdjustment: NumberJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::AutoScaling::ScalingPolicy",
"Properties": {
"AdjustmentType": String,
"AutoScalingGroupName": String,
"Cooldown": Number,
"ScalingAdjustment": Number
}
}
}
}AWS::CloudFormation::StackA Resource representing a child stack to allow composition of templates.PropertiesParametersThe set of parameters passed to this nested stack.Can be updated without replacement.Optional property.TemplateURLThe URL of a template that specifies the stack to be created as a resource.Can be updated without replacement.Required property.TimeoutInMinutesThe length of time, in minutes, to wait for the nested stack creation.Can be updated without replacement.Optional property.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::CloudFormation::Stack
properties:
Parameters: {...}
TemplateURL: String
TimeoutInMinutes: NumberYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::CloudFormation::Stack
Properties:
Parameters: {...}
TemplateURL: String
TimeoutInMinutes: NumberJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::CloudFormation::Stack",
"Properties": {
"Parameters": {...},
"TemplateURL": String,
"TimeoutInMinutes": Number
}
}
}
}AWS::CloudFormation::WaitConditionAvailable since 2014.1 (Icehouse)PropertiesCountThe number of success signals that must be received before the stack creation process continues.Can be updated without replacement.Optional property, defaults to "1".The value must be at least 1.HandleA reference to the wait condition handle used to signal this wait condition.Updates cause replacement.Required property.TimeoutThe number of seconds to wait for the correct number of signals to arrive.Updates cause replacement.Required property.The value must be in the range 1 to 43200.AttributesDataJSON serialized dict containing data associated with wait condition signals sent to the handle.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::CloudFormation::WaitCondition
properties:
Count: Number
Handle: String
Timeout: NumberYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::CloudFormation::WaitCondition
Properties:
Count: Number
Handle: String
Timeout: NumberJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::CloudFormation::WaitCondition",
"Properties": {
"Count": Number,
"Handle": String,
"Timeout": Number
}
}
}
}AWS::CloudFormation::WaitConditionHandleAvailable since 2014.1 (Icehouse)the main point of this class is to :
have no dependencies (so the instance can reference it)
generate a unique url (to be returned in the reference)
then the cfn-signal will use this url to post to and
WaitCondition will poll it to see if has been written to.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::CloudFormation::WaitConditionHandleYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::CloudFormation::WaitConditionHandleJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::CloudFormation::WaitConditionHandle"
}
}
}AWS::CloudWatch::AlarmPropertiesAlarmActionsCan be updated without replacement.Optional property.AlarmDescriptionCan be updated without replacement.Optional property.ComparisonOperatorCan be updated without replacement.Required property.Allowed values: GreaterThanOrEqualToThreshold, GreaterThanThreshold, LessThanThreshold, LessThanOrEqualToThresholdDimensionsCan be updated without replacement.Optional property.EvaluationPeriodsCan be updated without replacement.Required property.InsufficientDataActionsCan be updated without replacement.Optional property.MetricNameCan be updated without replacement.Required property.NamespaceCan be updated without replacement.Optional property.OKActionsCan be updated without replacement.Optional property.PeriodCan be updated without replacement.Required property.StatisticCan be updated without replacement.Required property.Allowed values: SampleCount, Average, Sum, Minimum, MaximumThresholdCan be updated without replacement.Required property.UnitsCan be updated without replacement.Optional property.Allowed values: Seconds, Microseconds, Milliseconds, Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Bits, Kilobits, Megabits, Gigabits, Terabits, Percent, Count, Bytes/Second, Kilobytes/Second, Megabytes/Second, Gigabytes/Second, Terabytes/Second, Bits/Second, Kilobits/Second, Megabits/Second, Gigabits/Second, Terabits/Second, Count/Second, NoneHOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::CloudWatch::Alarm
properties:
AlarmActions: [Value, Value, ...]
AlarmDescription: String
ComparisonOperator: String
Dimensions: [Value, Value, ...]
EvaluationPeriods: String
InsufficientDataActions: [Value, Value, ...]
MetricName: String
Namespace: String
OKActions: [Value, Value, ...]
Period: String
Statistic: String
Threshold: String
Units: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmActions: [Value, Value, ...]
AlarmDescription: String
ComparisonOperator: String
Dimensions: [Value, Value, ...]
EvaluationPeriods: String
InsufficientDataActions: [Value, Value, ...]
MetricName: String
Namespace: String
OKActions: [Value, Value, ...]
Period: String
Statistic: String
Threshold: String
Units: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"AlarmActions": [Value, Value, ...],
"AlarmDescription": String,
"ComparisonOperator": String,
"Dimensions": [Value, Value, ...],
"EvaluationPeriods": String,
"InsufficientDataActions": [Value, Value, ...],
"MetricName": String,
"Namespace": String,
"OKActions": [Value, Value, ...],
"Period": String,
"Statistic": String,
"Threshold": String,
"Units": String
}
}
}
}AWS::EC2::EIPPropertiesDomainSet to "vpc" to have IP address allocation associated to your VPC.Updates cause replacement.Optional property.Allowed values: vpcInstanceIdInstance ID to associate with EIP.Can be updated without replacement.Optional property.Value must be of type nova.serverAttributesAllocationIdID that AWS assigns to represent the allocation of the address for use with Amazon VPC. Returned only for VPC elastic IP addresses.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::EIP
properties:
Domain: String
InstanceId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::EIP
Properties:
Domain: String
InstanceId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::EIP",
"Properties": {
"Domain": String,
"InstanceId": String
}
}
}
}AWS::EC2::EIPAssociationPropertiesAllocationIdAllocation ID for VPC EIP address.Can be updated without replacement.Optional property.EIPEIP address to associate with instance.Can be updated without replacement.Optional property.InstanceIdInstance ID to associate with EIP specified by EIP property.Can be updated without replacement.Optional property.Value must be of type nova.serverNetworkInterfaceIdNetwork interface ID to associate with EIP.Can be updated without replacement.Optional property.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::EIPAssociation
properties:
AllocationId: String
EIP: String
InstanceId: String
NetworkInterfaceId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::EIPAssociation
Properties:
AllocationId: String
EIP: String
InstanceId: String
NetworkInterfaceId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::EIPAssociation",
"Properties": {
"AllocationId": String,
"EIP": String,
"InstanceId": String,
"NetworkInterfaceId": String
}
}
}
}AWS::EC2::InstancePropertiesAvailabilityZoneAvailability zone to launch the instance in.Updates cause replacement.Optional property.BlockDeviceMappingsBlock device mappings to attach to instance.Updates cause replacement.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:DeviceNameA device name where the volume will be attached in the system at /dev/device_name.e.g. vdbUpdates cause replacement.Required property.EbsThe ebs volume to attach to the instance.Updates cause replacement.Optional property.Map properties:DeleteOnTerminationIndicate whether the volume should be deleted when the instance is terminated.Updates cause replacement.Optional property, defaults to "True".IopsNot implemented.SnapshotIdThe ID of the snapshot to create a volume from.Updates cause replacement.Optional property.Value must be of type cinder.snapshotVolumeSizeThe size of the volume, in GB. Must be equal or greater than the size of the snapshot. It is safe to leave this blank and have the Compute service infer the size.Updates cause replacement.Optional property.VolumeTypeNot implemented.NoDeviceNot implemented.VirtualNameNot implemented.DisableApiTerminationNot implemented.ImageIdGlance image ID or name.Updates cause replacement.Required property.Value must be of type glance.imageInstanceTypeNova instance type (flavor).Can be updated without replacement.Required property.Value must be of type nova.flavorKernelIdNot implemented.KeyNameOptional Nova keypair name.Updates cause replacement.Optional property.Value must be of type nova.keypairMonitoringNot implemented.NetworkInterfacesNetwork interfaces to associate with instance.Can be updated without replacement.Optional property.NovaSchedulerHintsScheduler hints to pass to Nova (Heat extension).Updates cause replacement.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:KeyUpdates cause replacement.Required property.ValueUpdates cause replacement.Required property.PlacementGroupNameNot implemented.PrivateIpAddressNot implemented.RamDiskIdNot implemented.SecurityGroupIdsSecurity group IDs to assign.Updates cause replacement.Optional property.SecurityGroupsSecurity group names to assign.Updates cause replacement.Optional property.SourceDestCheckNot implemented.SubnetIdSubnet ID to launch instance in.Can be updated without replacement.Optional property.TagsTags to attach to instance.Can be updated without replacement.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:KeyUpdates cause replacement.Required property.ValueUpdates cause replacement.Required property.TenancyNot implemented.UserDataUser data to pass to instance.Updates cause replacement.Optional property.VolumesVolumes to attach to instance.Updates cause replacement.Optional property, defaults to "[]".List contents:*Updates cause replacement.Optional property.Map properties:DeviceThe device where the volume is exposed on the instance. This assignment may not be honored and it is advised that the path /dev/disk/by-id/virtio-<VolumeId> be used instead.Updates cause replacement.Required property.VolumeIdThe ID of the volume to be attached.Updates cause replacement.Required property.Value must be of type cinder.volumeAttributesAvailabilityZoneThe Availability Zone where the specified instance is launched.PrivateDnsNamePrivate DNS name of the specified instance.PrivateIpPrivate IP address of the specified instance.PublicDnsNamePublic DNS name of the specified instance.PublicIpPublic IP address of the specified instance.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::Instance
properties:
AvailabilityZone: String
BlockDeviceMappings: [{"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, {"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, ...]
ImageId: String
InstanceType: String
KeyName: String
NetworkInterfaces: [Value, Value, ...]
NovaSchedulerHints: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
SecurityGroupIds: [Value, Value, ...]
SecurityGroups: [Value, Value, ...]
SubnetId: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
UserData: String
Volumes: [{"Device": String, "VolumeId": String}, {"Device": String, "VolumeId": String}, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::Instance
Properties:
AvailabilityZone: String
BlockDeviceMappings: [{"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, {"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, ...]
ImageId: String
InstanceType: String
KeyName: String
NetworkInterfaces: [Value, Value, ...]
NovaSchedulerHints: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
SecurityGroupIds: [Value, Value, ...]
SecurityGroups: [Value, Value, ...]
SubnetId: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
UserData: String
Volumes: [{"Device": String, "VolumeId": String}, {"Device": String, "VolumeId": String}, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::Instance",
"Properties": {
"AvailabilityZone": String,
"BlockDeviceMappings": [{"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, {"DeviceName": String, "Ebs": {"DeleteOnTermination": Boolean, "VolumeSize": String, "SnapshotId": String}}, ...],
"ImageId": String,
"InstanceType": String,
"KeyName": String,
"NetworkInterfaces": [Value, Value, ...],
"NovaSchedulerHints": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...],
"SecurityGroupIds": [Value, Value, ...],
"SecurityGroups": [Value, Value, ...],
"SubnetId": String,
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...],
"UserData": String,
"Volumes": [{"Device": String, "VolumeId": String}, {"Device": String, "VolumeId": String}, ...]
}
}
}
}AWS::EC2::InternetGatewayPropertiesTagsUpdates cause replacement.Optional property.List contents:*Not implemented.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::InternetGateway
properties:
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::InternetGateway
Properties:
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::InternetGateway",
"Properties": {
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
}
}
}
}AWS::EC2::NetworkInterfacePropertiesDescriptionDescription for this interface.Updates cause replacement.Optional property.GroupSetList of security group IDs associated with this interface.Can be updated without replacement.Optional property.PrivateIpAddressUpdates cause replacement.Optional property.SourceDestCheckNot implemented.SubnetIdSubnet ID to associate with this interface.Updates cause replacement.Required property.Value must be of type neutron.subnetTagsUpdates cause replacement.Optional property.List contents:*Not implemented.AttributesPrivateIpAddressPrivate IP address of the network interface.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::NetworkInterface
properties:
Description: String
GroupSet: [Value, Value, ...]
PrivateIpAddress: String
SubnetId: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::NetworkInterface
Properties:
Description: String
GroupSet: [Value, Value, ...]
PrivateIpAddress: String
SubnetId: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::NetworkInterface",
"Properties": {
"Description": String,
"GroupSet": [Value, Value, ...],
"PrivateIpAddress": String,
"SubnetId": String,
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
}
}
}
}AWS::EC2::RouteTableAvailable since 2014.1 (Icehouse)PropertiesTagsUpdates cause replacement.Optional property.List contents:*Not implemented.VpcIdVPC ID for where the route table is created.Updates cause replacement.Required property.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::RouteTable
properties:
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
VpcId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::RouteTable
Properties:
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
VpcId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...],
"VpcId": String
}
}
}
}AWS::EC2::SecurityGroupPropertiesGroupDescriptionDescription of the security group.Updates cause replacement.Required property.SecurityGroupEgressCan be updated without replacement.Optional property.List contents:*List of security group egress rules.Updates cause replacement.Optional property.Map properties:CidrIpUpdates cause replacement.Optional property.FromPortUpdates cause replacement.Optional property.IpProtocolUpdates cause replacement.Optional property.SourceSecurityGroupIdUpdates cause replacement.Optional property.SourceSecurityGroupNameUpdates cause replacement.Optional property.SourceSecurityGroupOwnerIdNot implemented.ToPortUpdates cause replacement.Optional property.SecurityGroupIngressCan be updated without replacement.Optional property.List contents:*List of security group ingress rules.Updates cause replacement.Optional property.Map properties:CidrIpUpdates cause replacement.Optional property.FromPortUpdates cause replacement.Optional property.IpProtocolUpdates cause replacement.Optional property.SourceSecurityGroupIdUpdates cause replacement.Optional property.SourceSecurityGroupNameUpdates cause replacement.Optional property.SourceSecurityGroupOwnerIdNot implemented.ToPortUpdates cause replacement.Optional property.VpcIdPhysical ID of the VPC. Not implemented.Updates cause replacement.Optional property.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::SecurityGroup
properties:
GroupDescription: String
SecurityGroupEgress: [{"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, {"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, ...]
SecurityGroupIngress: [{"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, {"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, ...]
VpcId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: String
SecurityGroupEgress: [{"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, {"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, ...]
SecurityGroupIngress: [{"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, {"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, ...]
VpcId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"GroupDescription": String,
"SecurityGroupEgress": [{"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, {"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, ...],
"SecurityGroupIngress": [{"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, {"CidrIp": String, "SourceSecurityGroupId": String, "FromPort": String, "SourceSecurityGroupName": String, "ToPort": String, "IpProtocol": String}, ...],
"VpcId": String
}
}
}
}AWS::EC2::SubnetPropertiesAvailabilityZoneAvailability zone in which you want the subnet.Updates cause replacement.Optional property.CidrBlockCIDR block to apply to subnet.Updates cause replacement.Required property.TagsUpdates cause replacement.Optional property.List contents:*Not implemented.VpcIdRef structure that contains the ID of the VPC on which you want to create the subnet.Updates cause replacement.Required property.AttributesAvailabilityZoneAvailability Zone of the subnet.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::Subnet
properties:
AvailabilityZone: String
CidrBlock: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
VpcId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: String
CidrBlock: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
VpcId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"AvailabilityZone": String,
"CidrBlock": String,
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...],
"VpcId": String
}
}
}
}AWS::EC2::SubnetRouteTableAssociationPropertiesRouteTableIdRoute table ID.Updates cause replacement.Required property.SubnetIdSubnet ID.Updates cause replacement.Required property.Value must be of type neutron.subnetHOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::SubnetRouteTableAssociation
properties:
RouteTableId: String
SubnetId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: String
SubnetId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",
"Properties": {
"RouteTableId": String,
"SubnetId": String
}
}
}
}AWS::EC2::VPCPropertiesCidrBlockCIDR block to apply to the VPC.Updates cause replacement.Optional property.InstanceTenancyNot implemented.TagsUpdates cause replacement.Optional property.List contents:*Not implemented.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::VPC
properties:
CidrBlock: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::VPC
Properties:
CidrBlock: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": String,
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
}
}
}
}AWS::EC2::VPCGatewayAttachmentPropertiesInternetGatewayIdID of the InternetGateway.Updates cause replacement.Optional property.VpcIdVPC ID for this gateway association.Updates cause replacement.Required property.VpnGatewayIdNot implemented.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::VPCGatewayAttachment
properties:
InternetGatewayId: String
VpcId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: String
VpcId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::VPCGatewayAttachment",
"Properties": {
"InternetGatewayId": String,
"VpcId": String
}
}
}
}AWS::EC2::VolumePropertiesAvailabilityZoneThe availability zone in which the volume will be created.Updates are not supported. Resource update will fail on any attempt to update this property.Required property.SizeThe size of the volume in GB.Updates are not supported. Resource update will fail on any attempt to update this property.Optional property.The value must be at least 1.SnapshotIdIf specified, the backup used as the source to create the volume.Updates are not supported. Resource update will fail on any attempt to update this property.Optional property.TagsThe list of tags to associate with the volume.Updates are not supported. Resource update will fail on any attempt to update this property.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:KeyUpdates cause replacement.Required property.ValueUpdates cause replacement.Required property.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::Volume
properties:
AvailabilityZone: String
Size: Integer
SnapshotId: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::Volume
Properties:
AvailabilityZone: String
Size: Integer
SnapshotId: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::Volume",
"Properties": {
"AvailabilityZone": String,
"Size": Integer,
"SnapshotId": String,
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
}
}
}
}AWS::EC2::VolumeAttachmentPropertiesDeviceThe device where the volume is exposed on the instance. This assignment may not be honored and it is advised that the path /dev/disk/by-id/virtio-<VolumeId> be used instead.Updates are not supported. Resource update will fail on any attempt to update this property.Required property.Value must match pattern: /dev/vd[b-z]InstanceIdThe ID of the instance to which the volume attaches.Updates are not supported. Resource update will fail on any attempt to update this property.Required property.Value must be of type nova.serverVolumeIdThe ID of the volume to be attached.Updates are not supported. Resource update will fail on any attempt to update this property.Required property.Value must be of type cinder.volumeHOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::EC2::VolumeAttachment
properties:
Device: String
InstanceId: String
VolumeId: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::EC2::VolumeAttachment
Properties:
Device: String
InstanceId: String
VolumeId: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::EC2::VolumeAttachment",
"Properties": {
"Device": String,
"InstanceId": String,
"VolumeId": String
}
}
}
}AWS::ElasticLoadBalancing::LoadBalancerImplements a HAProxy-bearing instance as a nested stack.The template for the nested stack can be redefined with
loadbalancer_template option in heat.conf.Generally the image used for the instance must have the following
packages installed or available for installation at runtime:- heat-cfntools and its dependencies like python-psutil
- cronie
- socat
- haproxyCurrent default builtin template uses Fedora 21 x86_64 base cloud image
(https://getfedora.org/cloud/download/)
and apart from installing packages goes through some hoops
around SELinux due to pecularities of heat-cfntools.PropertiesAppCookieStickinessPolicyNot implemented.AvailabilityZonesThe Availability Zones in which to create the load balancer.Updates cause replacement.Required property.HealthCheckAn application health check for the instances.Updates cause replacement.Optional property.Map properties:HealthyThresholdThe number of consecutive health probe successes required before moving the instance to the healthy state.Updates cause replacement.Required property.IntervalThe approximate interval, in seconds, between health checks of an individual instance.Updates cause replacement.Required property.TargetThe port being checked.Updates cause replacement.Required property.TimeoutHealth probe timeout, in seconds.Updates cause replacement.Required property.UnhealthyThresholdThe number of consecutive health probe failures required before moving the instance to the unhealthy stateUpdates cause replacement.Required property.InstancesThe list of instance IDs load balanced.Can be updated without replacement.Optional property.LBCookieStickinessPolicyNot implemented.ListenersOne or more listeners for this load balancer.Updates cause replacement.Required property.List contents:*Updates cause replacement.Optional property.Map properties:InstancePortTCP port on which the instance server is listening.Updates cause replacement.Required property.LoadBalancerPortThe external load balancer port number.Updates cause replacement.Required property.PolicyNamesNot implemented.ProtocolThe load balancer transport protocol to use.Updates cause replacement.Required property.Allowed values: TCP, HTTPSSLCertificateIdNot implemented.SecurityGroupsNot implemented.SubnetsNot implemented.AttributesCanonicalHostedZoneNameThe name of the hosted zone that is associated with the LoadBalancer.CanonicalHostedZoneNameIDThe ID of the hosted zone name that is associated with the LoadBalancer.DNSNameThe DNS name for the LoadBalancer.SourceSecurityGroup.GroupNameThe security group that you can use as part of your inbound rules for your LoadBalancer's back-end instances.SourceSecurityGroup.OwnerAliasOwner of the source security group.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::ElasticLoadBalancing::LoadBalancer
properties:
AvailabilityZones: [Value, Value, ...]
HealthCheck: {"HealthyThreshold": Number, "Interval": Number, "Target": String, "Timeout": Number, "UnhealthyThreshold": Number}
Instances: [Value, Value, ...]
Listeners: [{"InstancePort": Number, "LoadBalancerPort": Number, "Protocol": String}, {"InstancePort": Number, "LoadBalancerPort": Number, "Protocol": String}, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::ElasticLoadBalancing::LoadBalancer
Properties:
AvailabilityZones: [Value, Value, ...]
HealthCheck: {"HealthyThreshold": Number, "Interval": Number, "Target": String, "Timeout": Number, "UnhealthyThreshold": Number}
Instances: [Value, Value, ...]
Listeners: [{"InstancePort": Number, "LoadBalancerPort": Number, "Protocol": String}, {"InstancePort": Number, "LoadBalancerPort": Number, "Protocol": String}, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"AvailabilityZones": [Value, Value, ...],
"HealthCheck": {"HealthyThreshold": Number, "Interval": Number, "Target": String, "Timeout": Number, "UnhealthyThreshold": Number},
"Instances": [Value, Value, ...],
"Listeners": [{"InstancePort": Number, "LoadBalancerPort": Number, "Protocol": String}, {"InstancePort": Number, "LoadBalancerPort": Number, "Protocol": String}, ...]
}
}
}
}AWS::IAM::AccessKeyPropertiesSerialNot implemented.StatusNot implemented.UserNameThe name of the user that the new key will belong to.Updates cause replacement.Required property.AttributesSecretAccessKeyKeypair secret key.UserNameUsername associated with the AccessKey.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::IAM::AccessKey
properties:
UserName: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::IAM::AccessKey
Properties:
UserName: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::IAM::AccessKey",
"Properties": {
"UserName": String
}
}
}
}AWS::IAM::UserPropertiesGroupsNot Implemented.Updates cause replacement.Optional property.LoginProfileA login profile for the user.Updates cause replacement.Optional property.Map properties:PasswordUpdates cause replacement.Optional property.PathNot Implemented.Updates cause replacement.Optional property.PoliciesAccess policies to apply to the user.Updates cause replacement.Optional property.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::IAM::User
properties:
Groups: [Value, Value, ...]
LoginProfile: {"Password": String}
Path: String
Policies: [Value, Value, ...]YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::IAM::User
Properties:
Groups: [Value, Value, ...]
LoginProfile: {"Password": String}
Path: String
Policies: [Value, Value, ...]JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::IAM::User",
"Properties": {
"Groups": [Value, Value, ...],
"LoginProfile": {"Password": String},
"Path": String,
"Policies": [Value, Value, ...]
}
}
}
}AWS::RDS::DBInstancePropertiesAllocatedStorageCan be updated without replacement.Required property.DBInstanceClassCan be updated without replacement.Required property.DBNameCan be updated without replacement.Required property.DBSecurityGroupsCan be updated without replacement.Optional property.EngineCan be updated without replacement.Required property.Allowed values: MySQLKeyNameCan be updated without replacement.Optional property.MasterUserPasswordCan be updated without replacement.Required property.MasterUsernameCan be updated without replacement.Required property.PortCan be updated without replacement.Optional property.AttributesEndpoint.Address???Endpoint.Port???HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::RDS::DBInstance
properties:
AllocatedStorage: String
DBInstanceClass: String
DBName: String
DBSecurityGroups: [Value, Value, ...]
Engine: String
KeyName: String
MasterUserPassword: String
MasterUsername: String
Port: StringYAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::RDS::DBInstance
Properties:
AllocatedStorage: String
DBInstanceClass: String
DBName: String
DBSecurityGroups: [Value, Value, ...]
Engine: String
KeyName: String
MasterUserPassword: String
MasterUsername: String
Port: StringJSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"AllocatedStorage": String,
"DBInstanceClass": String,
"DBName": String,
"DBSecurityGroups": [Value, Value, ...],
"Engine": String,
"KeyName": String,
"MasterUserPassword": String,
"MasterUsername": String,
"Port": String
}
}
}
}AWS::S3::BucketPropertiesAccessControlA predefined access control list (ACL) that grants permissions on the bucket.Updates cause replacement.Optional property.Allowed values: Private, PublicRead, PublicReadWrite, AuthenticatedRead, BucketOwnerRead, BucketOwnerFullControlTagsTags to attach to the bucket.Updates cause replacement.Optional property.List contents:*Updates cause replacement.Optional property.Map properties:KeyThe tag key name.Updates cause replacement.Required property.ValueThe tag value.Updates cause replacement.Required property.WebsiteConfigurationInformation used to configure the bucket as a static website.Updates cause replacement.Optional property.Map properties:ErrorDocumentThe name of the error document.Updates cause replacement.Optional property.IndexDocumentThe name of the index document.Updates cause replacement.Optional property.AttributesDomainNameThe DNS name of the specified bucket.WebsiteURLThe website endpoint for the specified bucket.HOT Syntaxheat_template_version: 2013-05-23
...
resources:
...
the_resource:
type: AWS::S3::Bucket
properties:
AccessControl: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
WebsiteConfiguration: {"IndexDocument": String, "ErrorDocument": String}YAML SyntaxHeatTemplateFormatVersion: '2012-12-12'
...
Resources:
...
TheResource:
Type: AWS::S3::Bucket
Properties:
AccessControl: String
Tags: [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...]
WebsiteConfiguration: {"IndexDocument": String, "ErrorDocument": String}JSON Syntax{
"AWSTemplateFormatVersion" : "2010-09-09",
...
"Resources" : {
"TheResource": {
"Type": "AWS::S3::Bucket",
"Properties": {
"AccessControl": String,
"Tags": [{"Value": String, "Key": String}, {"Value": String, "Key": String}, ...],
"WebsiteConfiguration": {"IndexDocument": String, "ErrorDocument": String}
}
}
}
}