This collection of AWS CloudFormation resource types allow Cloudflare to be controlled using AWS CloudFormation.
See the end-user documentation including:
There is also developer documentation available if you are interested in building or contributing.
Resource | Description | Documentation |
---|---|---|
Cloudflare::Dns::Record | This resource type manages a Cloudflare Dns Record | /Cloudflare-Dns-Record |
Cloudflare::LoadBalancer:LoadBalancer | This resource type manages a Cloudflare LoadBalancer | /Cloudflare-LoadBalancer-LoadBalancer |
Cloudflare::LoadBalancer::Monitor | This resource type manages a Cloudflare LoadBalancer Monitor | /Cloudflare-LoadBalancer-Monitor |
Cloudflare::LoadBalancer::Pool | This resource type manages a Cloudflare LoadBalancer Pool | /Cloudflare-LoadBalancer-Pool |
To get started:
Sign in to the AWS Management Console with your account and navigate to CloudFormation.
Select "Public extensions" from the left hand pane and filter Publisher by "Third Party".
Use the search bar to filter by the "Cloudflare" prefix.
Note: All official Cloudflare resources begin with Cloudflare::
and specify that they are Published by Cloudflare
.
Select the desired resource name to view more information about its schema, and click Activate.
On the Extension details page, specify:
In your terminal, specify the configuration data for the registered Cloudflare CloudFormation resource type, in the given account and region by using the SetTypeConfiguration operation:
For example:
$ aws cloudformation set-type-configuration \z`
--region us-west-2 --type RESOURCE \
--type-name Cloudflare::LoadBalancer::Pool \
--configuration-alias default \
--configuration "{ \"CloudflareAccess\":{\"Url\":\"https://dash.cloudflare.com/uuid\",\"ApiKey\":\"YOURAPIKEY\"}}"
After you have your resource configured, create your AWS stack that includes any of the activated Cloudflare resources.
For more information about available commands and workflows, see the official AWS documentation.
The Cloudflare CloudFormation resources are available on the CloudFormation Public Registry in the following regions:
Code | Name |
---|---|
us-east-1 | US East (N. Virginia) |
us-east-2 | US East (Ohio) |
us-west-1 | US West (N. California) |
us-west-2 | US West (Oregon) |
ap-south-1 | Asia Pacific (Mumbai) |
ap-northeast-1 | Asia Pacific (Tokyo) |
ap-northeast-2 | Asia Pacific (Seoul) |
ap-southeast-1 | Asia Pacific (Singapore) |
ap-southeast-2 | Asia Pacific (Sydney) |
ca-central-1 | Canada (Central) |
eu-central-1 | Europe (Frankfurt) |
eu-west-1 | Europe (Ireland) |
eu-west-2 | Europe (London) |
eu-west-3 | Europe (Paris) |
eu-north-1 | Europe (Stockholm) |
sa-east-1 | South America (São Paulo) |
Note: To privately register a resource in any other region, use the provided packages.
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a Dns Record in Cloudflare
Resources:
MySampleProject:
Type: Cloudflare::Dns::Record
Properties:
ZoneId: 0012345678123,
Type: A,
Name: example.app.com,
Content: 11.116.111.1,
Proxied: false,
Ttl: 600
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create an LoadBalancer in Cloudflare
Resources:
Type: Cloudflare::LoadBalancer:LoadBalancer
MySampleProject:
ZoneId: !Ref ZoneId
Proxied: true
Name: !Ref DomainName
SessionAffinity: none
SessionAffinityAttributes:
ZeroDowntimeFailover: none
SteeringPolicy: off
RandomSteering:
DefaultWeight: 1
DefaultPools:
- !GetAtt Pool.Id
FallbackPool: !GetAtt Pool.Id
Enabled: true
---
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to set a LoadBalancer Monitor in Cloudflare.
Resources:
AgentConfigurationSample:
Type: Cloudflare::LoadBalancer::Monitor
Properties:
ExpectedCodes: 200
Method: GET
Timeout: 5
Path: /
Interval: 60
Retries: 2
Description: GET over HTTPS - expect 200
Type: http
Port: 80
AccountIdentifier: !Ref AccountId
FollowRedirects: false
AllowInsecure: false
ProbeZone: ""
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Shows how to create a static LoadBalancer Pool in Cloudflare
Resources:
SampleNrqlCondition:
Type: Cloudflare::LoadBalancer::Pool
Properties:
AccountIdentifier: !Ref AccountId
MinimumOrigins: 1
CheckRegions:
- WEU
NotificationEmail: email@example.com
NotificationFilter:
Pool:
Healthy: false
Origins:
- Enabled: true
Address: <IP Address>
Name: server-1
Weight: 0.9
- Weight: 0.1
Enabled: true
Name: server-2
Address: <IP Address>
Name: Servers
Description: Region Pool
Monitor: !GetAtt Monitor.IdALL
Priority: CRITICAL