===========
troposphere
.. image:: https://img.shields.io/pypi/v/troposphere.svg
:target: https://pypi.python.org/pypi/troposphere
:alt: PyPI Version
.. image:: https://travis-ci.org/cloudtools/troposphere.svg?branch=master
:target: https://travis-ci.org/cloudtools/troposphere
:alt: Build Status
.. image:: https://img.shields.io/pypi/l/troposphere.svg
:target: https://opensource.org/licenses/BSD-2-Clause
:alt: license: New BSD license
.. image:: https://readthedocs.org/projects/troposphere/badge/?version=latest
:target: https://troposphere.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
About
troposphere - library to create AWS CloudFormation
_ descriptions
The troposphere library allows for easier creation of the AWS CloudFormation JSON
_ by writing Python code to describe the AWS resources. troposphere also
includes some basic support for OpenStack resources
_ via Heat.
To facilitate catching CloudFormation or JSON errors early the library has
property and type checking built into the classes.
Installation
troposphere can be installed using the pip distribution system for Python by
issuing:
.. code:: sh
$ pip install troposphere
To install troposphere with awacs <https://github.com/cloudtools/awacs>
_
(recommended soft dependency):
.. code:: sh
$ pip install troposphere[policy]
Alternatively, you can run use setup.py to install by cloning this repository
and issuing:
.. code:: sh
$ python setup.py install # you may need sudo depending on your python installation
Examples
A simple example to create an instance would look like this:
.. code:: python
>>> from troposphere import Ref, Template
>>> import troposphere.ec2 as ec2
>>> t = Template()
>>> instance = ec2.Instance("myinstance")
>>> instance.ImageId = "ami-951945d0"
>>> instance.InstanceType = "t1.micro"
>>> t.add_resource(instance)
<troposphere.ec2.Instance object at 0x101bf3390>
>>> print(t.to_json())
{
"Resources": {
"myinstance": {
"Properties": {
"ImageId": "ami-951945d0",
"InstanceType": "t1.micro"
},
"Type": "AWS::EC2::Instance"
}
}
}
>>> print(t.to_yaml())
Resources:
myinstance:
Properties:
ImageId: ami-951945d0
InstanceType: t1.micro
Type: AWS::EC2::Instance
Alternatively, parameters can be used instead of properties:
.. code:: python
>>> instance = ec2.Instance("myinstance", ImageId="ami-951945d0", InstanceType="t1.micro")
>>> t.add_resource(instance)
<troposphere.ec2.Instance object at 0x101bf3550>
And add_resource()
returns the object to make it easy to use with Ref()
:
.. code:: python
>>> instance = t.add_resource(ec2.Instance("myinstance", ImageId="ami-951945d0", InstanceType="t1.micro"))
>>> Ref(instance)
<troposphere.Ref object at 0x101bf3490>
Examples of the error checking (full tracebacks removed for clarity):
Incorrect property being set on AWS resource:
.. code:: python
>>> import troposphere.ec2 as ec2
>>> ec2.Instance("ec2instance", image="i-XXXX")
Traceback (most recent call last):
...
AttributeError: AWS::EC2::Instance object does not support attribute image
Incorrect type for AWS resource property:
.. code:: python
>>> ec2.Instance("ec2instance", ImageId=1)
Traceback (most recent call last):
...
TypeError: ImageId is <type 'int'>, expected <type 'basestring'>
Missing required property for the AWS resource:
.. code:: python
>>> from troposphere import Template
>>> import troposphere.ec2 as ec2
>>> t = Template()
>>> t.add_resource(ec2.Instance("ec2instance", InstanceType="m3.medium"))
<troposphere.ec2.Instance object at 0x109ee2e50>
>>> print(t.to_json())
Traceback (most recent call last):
...
ValueError: Resource ImageId required in type AWS::EC2::Instance
Currently supported AWS resource types
AWS::AccessAnalyzer
_AWS::AmazonMQ
_AWS::Amplify
_AWS::ApiGateway
_AWS::ApiGatewayV2
_AWS::AppMesh
_AWS::AppStream
_AWS::AppSync
_AWS::ApplicationAutoScaling
_AWS::Athena
_AWS::AutoScaling
_AWS::AutoScalingPlans
_AWS::Batch
_AWS::Budgets
_AWS::CertificateManager
_AWS::Cloud9
_AWS::CloudFormation
_AWS::CloudFront
_AWS::CloudTrail
_AWS::CloudWatch
_AWS::CodeBuild
_AWS::CodeCommit
_AWS::CodeDeploy
_AWS::CodePipeline
_AWS::CodeStar
_AWS::CodeStarNotifications
_AWS::Cognito
_AWS::Config
_AWS::DAX
_AWS::DLM
_AWS::DMS
_AWS::DataPipeline
_AWS::DirectoryService
_AWS::DocDB
_AWS::DynamoDB
_AWS::EC2
_AWS::ECR
_AWS::ECS
_AWS::EFS
_AWS::EKS
_AWS::EMR
_AWS::ElastiCache
_AWS::ElasticBeanstalk
_AWS::ElasticLoadBalancing
_AWS::ElasticLoadBalancingV2
_AWS::Elasticsearch
_AWS::Events
_AWS::EventSchemas
_AWS::FSx
_AWS::GameLift
_AWS::Glue
_AWS::Greengrass
_AWS::GuardDuty
_AWS::IAM
_AWS::Inspector
_AWS::IoT
_AWS::IoT1Click
_AWS::IoTAnalytics
_AWS::IoTEvents
_AWS::KMS
_AWS::Kinesis
_AWS::KinesisAnalytics
_AWS::KinesisAnalyticsV2
_AWS::KinesisFirehose
_AWS::LakeFormation
_AWS::Lambda
_AWS::Logs
_AWS::ManagedBlockchain
_AWS::MediaConvert
_AWS::MediaLive
_AWS::MediaStore
_AWS::MSK
_AWS::Neptune
_AWS::OpsWorks
_AWS::OpsWorksCM
_AWS::Pinpoint
_AWS::PinpointEmail
_AWS::QLDB
_AWS::RAM
_AWS::RDS
_AWS::Redshift
_AWS::RoboMaker
_AWS::Route53
_AWS::Route53Resolver
_AWS::S3
_AWS::SDB
_AWS::SES
_AWS::SNS
_AWS::SQS
_AWS::SSM
_AWS::SageMaker
_AWS::SecretsManager
_AWS::SecurityHub
_AWS::Serverless
_AWS::ServiceCatalog
_AWS::ServiceDiscovery
_AWS::StepFunctions
_AWS::Transfer
_AWS::WAF
_AWS::WAFRegional
_AWS::WAFv2
_AWS::WorkSpaces
_
Currently supported OpenStack resource types
OS::Neutron::Firewall
_OS::Neutron::FirewallPolicy
_OS::Neutron::FirewallRule
_OS::Neutron::FloatingIP
_OS::Neutron::FloatingIPAssociation
_- OS::Neutron::HealthMonitor
- OS::Neutron::Pool
- OS::Neutron::LoadBalancer
OS::Neutron::Net
_- OS::Neutron::PoolMember
OS::Neutron::Port
_OS::Neutron::SecurityGroup
_- OS::Nova::FloatingIP
- OS::Nova::FloatingIPAssociation
OS::Nova::KeyPair
_OS::Nova::Server
_
Duplicating a single instance sample would look like this
.. code:: python
# Converted from EC2InstanceSample.template located at:
# http://aws.amazon.com/cloudformation/aws-cloudformation-templates/
from troposphere import Base64, FindInMap, GetAtt
from troposphere import Parameter, Output, Ref, Template
import troposphere.ec2 as ec2
template = Template()
keyname_param = template.add_parameter(Parameter(
"KeyName",
Description="Name of an existing EC2 KeyPair to enable SSH "
"access to the instance",
Type="String",
))
template.add_mapping('RegionMap', {
"us-east-1": {"AMI": "ami-7f418316"},
"us-west-1": {"AMI": "ami-951945d0"},
"us-west-2": {"AMI": "ami-16fd7026"},
"eu-west-1": {"AMI": "ami-24506250"},
"sa-east-1": {"AMI": "ami-3e3be423"},
"ap-southeast-1": {"AMI": "ami-74dda626"},
"ap-northeast-1": {"AMI": "ami-dcfa4edd"}
})
ec2_instance = template.add_resource(ec2.Instance(
"Ec2Instance",
ImageId=FindInMap("RegionMap", Ref("AWS::Region"), "AMI"),
InstanceType="t1.micro",
KeyName=Ref(keyname_param),
SecurityGroups=["default"],
UserData=Base64("80")
))
template.add_output([
Output(
"InstanceId",
Description="InstanceId of the newly created EC2 instance",
Value=Ref(ec2_instance),
),
Output(
"AZ",
Description="Availability Zone of the newly created EC2 instance",
Value=GetAtt(ec2_instance, "AvailabilityZone"),
),
Output(
"PublicIP",
Description="Public IP address of the newly created EC2 instance",
Value=GetAtt(ec2_instance, "PublicIp"),
),
Output(
"PrivateIP",
Description="Private IP address of the newly created EC2 instance",
Value=GetAtt(ec2_instance, "PrivateIp"),
),
Output(
"PublicDNS",
Description="Public DNSName of the newly created EC2 instance",
Value=GetAtt(ec2_instance, "PublicDnsName"),
),
Output(
"PrivateDNS",
Description="Private DNSName of the newly created EC2 instance",
Value=GetAtt(ec2_instance, "PrivateDnsName"),
),
])
print(template.to_json())
Community
We have a Google Group, cloudtools-dev_, where you can ask questions and
engage with the troposphere community. Issues and pull requests are always
welcome!
Licensing
troposphere is licensed under the BSD 2-Clause license
.
See LICENSE
for the troposphere full license text.
.. _AWS CloudFormation
: http://aws.amazon.com/cloudformation
.. _AWS CloudFormation JSON
: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html
.. _OpenStack resources
: http://docs.openstack.org/developer/heat/template_guide/openstack.html
.. _cloudtools-dev: https://groups.google.com/forum/#!forum/cloudtools-dev
.. _LICENSE
: https://github.com/cloudtools/troposphere/blob/master/LICENSE
.. _BSD 2-Clause license
: http://opensource.org/licenses/BSD-2-Clause
.. _AWS::AccessAnalyzer
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AccessAnalyzer.html
.. _AWS::AmazonMQ
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AmazonMQ.html
.. _AWS::Amplify
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Amplify.html
.. _AWS::ApiGateway
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ApiGateway.html
.. _AWS::ApiGatewayV2
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ApiGatewayV2.html
.. _AWS::AppMesh
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AppMesh.html
.. _AWS::AppStream
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AppStream.html
.. _AWS::AppSync
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AppSync.html
.. _AWS::ApplicationAutoScaling
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ApplicationAutoScaling.html
.. _AWS::Athena
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Athena.html
.. _AWS::AutoScaling
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AutoScaling.html
.. _AWS::AutoScalingPlans
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_AutoScalingPlans.html
.. _AWS::Batch
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Batch.html
.. _AWS::Budgets
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Budgets.html
.. _AWS::CertificateManager
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CertificateManager.html
.. _AWS::Cloud9
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Cloud9.html
.. _AWS::CloudFormation
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CloudFormation.html
.. _AWS::CloudFront
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CloudFront.html
.. _AWS::CloudTrail
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CloudTrail.html
.. _AWS::CloudWatch
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CloudWatch.html
.. _AWS::CodeBuild
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CodeBuild.html
.. _AWS::CodeCommit
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CodeCommit.html
.. _AWS::CodeDeploy
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CodeDeploy.html
.. _AWS::CodePipeline
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CodePipeline.html
.. _AWS::CodeStarNotifications
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CodeStarNotifications.html
.. _AWS::CodeStar
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_CodeStar.html
.. _AWS::Cognito
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Cognito.html
.. _AWS::Config
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Config.html
.. _AWS::DAX
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DAX.html
.. _AWS::DLM
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DLM.html
.. _AWS::DMS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DMS.html
.. _AWS::DataPipeline
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DataPipeline.html
.. _AWS::DirectoryService
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DirectoryService.html
.. _AWS::DocDB
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DocDB.html
.. _AWS::DynamoDB
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_DynamoDB.html
.. _AWS::EC2
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_EC2.html
.. _AWS::ECR
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ECR.html
.. _AWS::ECS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ECS.html
.. _AWS::EFS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_EFS.html
.. _AWS::EKS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_EKS.html
.. _AWS::EMR
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_EMR.html
.. _AWS::ElastiCache
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElastiCache.html
.. _AWS::ElasticBeanstalk
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElasticBeanstalk.html
.. _AWS::ElasticLoadBalancing
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElasticLoadBalancing.html
.. _AWS::ElasticLoadBalancingV2
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ElasticLoadBalancingV2.html
.. _AWS::Elasticsearch
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Elasticsearch.html
.. _AWS::Events
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Events.html
.. _AWS::EventSchemas
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_EventSchemas.html
.. _AWS::FSx
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_FSx.html
.. _AWS::GameLift
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_GameLift.html
.. _AWS::Glue
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Glue.html
.. _AWS::Greengrass
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Greengrass.html
.. _AWS::GuardDuty
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_GuardDuty.html
.. _AWS::IAM
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_IAM.html
.. _AWS::Inspector
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Inspector.html
.. _AWS::IoT
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_IoT.html
.. _AWS::IoT1Click
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_IoT1Click.html
.. _AWS::IoTAnalytics
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_IoTAnalytics.html
.. _AWS::IoTEvents
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_IoTEvents.html
.. _AWS::KMS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_KMS.html
.. _AWS::Kinesis
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Kinesis.html
.. _AWS::KinesisAnalytics
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_KinesisAnalytics.html
.. _AWS::KinesisAnalyticsV2
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_KinesisAnalyticsV2.html
.. _AWS::KinesisFirehose
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_KinesisFirehose.html
.. _AWS::LakeFormation
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_LakeFormation.html
.. _AWS::Lambda
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Lambda.html
.. _AWS::Logs
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Logs.html
.. _AWS::ManagedBlockchain
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ManagedBlockchain.html
.. _AWS::MediaConvert
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_MediaConvert.html
.. _AWS::MediaLive
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_MediaLive.html
.. _AWS::MediaStore
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_MediaStore.html
.. _AWS::MSK
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_MSK.html
.. _AWS::Neptune
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Neptune.html
.. _AWS::OpsWorks
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_OpsWorks.html
.. _AWS::OpsWorksCM
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_OpsWorksCM.html
.. _AWS::Pinpoint
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Pinpoint.html
.. _AWS::PinpointEmail
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_PinpointEmail.html
.. _AWS::QLDB
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_QLDB.html
.. _AWS::RAM
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RAM.html
.. _AWS::RDS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RDS.html
.. _AWS::Redshift
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Redshift.html
.. _AWS::RoboMaker
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RoboMaker.html
.. _AWS::Route53
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Route53.html
.. _AWS::Route53Resolver
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Route53Resolver.html
.. _AWS::S3
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_S3.html
.. _AWS::SDB
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SDB.html
.. _AWS::SES
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SES.html
.. _AWS::SNS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SNS.html
.. _AWS::SQS
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SQS.html
.. _AWS::SSM
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SSM.html
.. _AWS::SageMaker
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SageMaker.html
.. _AWS::SecretsManager
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SecretsManager.html
.. _AWS::SecurityHub
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SecurityHub.html
.. _AWS::Serverless
: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-resources-and-properties.html
.. _AWS::ServiceCatalog
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ServiceCatalog.html
.. _AWS::ServiceDiscovery
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ServiceDiscovery.html
.. _AWS::StepFunctions
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_StepFunctions.html
.. _AWS::Transfer
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Transfer.html
.. _AWS::WAF
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_WAF.html
.. _AWS::WAFRegional
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_WAFRegional.html
.. _AWS::WAFv2
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_WAFv2.html
.. _AWS::WorkSpaces
: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_WorkSpaces.html
.. _OS::Neutron::Firewall
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::Firewall
.. _OS::Neutron::FirewallPolicy
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::FirewallPolicy
.. _OS::Neutron::FirewallRule
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::FirewallRule
.. _OS::Neutron::FloatingIP
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::FloatingIP
.. _OS::Neutron::FloatingIPAssociation
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::FloatingIPAssociation
.. _OS::Neutron::Net
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::Net
.. _OS::Neutron::Port
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::Port
.. _OS::Neutron::SecurityGroup
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::SecurityGroup
.. _OS::Nova::KeyPair
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Nova::KeyPair
.. _OS::Nova::Server
: https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Nova::Server