

This is the new *Amazon CloudFormation Template Reference Guide*. Please update your bookmarks and links. For help getting started with CloudFormation, see the [Amazon CloudFormation User Guide](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/Welcome.html).

# Resource spec and schemas reference
Resource spec and schemas

The following topics contain compressed files (zip files) that include resource specifications and schemas for each resource type. They also contain a combined JSON "resource spec" file containing resource specifications for all resource types that Amazon CloudFormation supports. The resource spec is a machine-readable specification that you can use to build tools for creating CloudFormation templates.

**Topics**
+ [

# CloudFormation resource specification
](cfn-resource-specification.md)
+ [

# CloudFormation resource provider schemas
](resource-type-schemas.md)

# CloudFormation resource specification
Resource specification

The Amazon CloudFormation resource specification is a JSON-formatted text file that defines the resources and properties that CloudFormation supports. The document is a machine-readable, strongly typed specification that you can use to build tools for creating CloudFormation templates. For example, you can use the specification to build auto completion and validation functionality for CloudFormation templates in your IDE (integrated development environment).

The resource specification is organized as both a single file and as a series of files, where each file contains the definition of one resource type. The single and separated files contain identical information. Depending on the tool and your implementation, use the file or files that work for you.

To download the resource specification, see the following table.

Resource availability may vary by region. To check the availability of a resource in a given region, refer to the resource specification for that region.


|  Region name  |  Region  |  Single file  |  All files  | 
| --- | --- | --- | --- | 
|  US East (Ohio)  |  `us-east-2`  |  [.json](https://dnwj8swjjbsbt.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://dnwj8swjjbsbt.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  US East (N. Virginia)  |  `us-east-1`  |  [.json](https://d1uauaxba7bl26.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d1uauaxba7bl26.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  US West (N. California)  |  `us-west-1`  |  [.json](https://d68hl49wbnanq.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d68hl49wbnanq.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  US West (Oregon)  |  `us-west-2`  |  [.json](https://d201a2mn26r7lk.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d201a2mn26r7lk.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Africa (Cape Town)  |  `af-south-1`  |  [.json](https://cfn-resource-specifications-af-south-1-prod.s3.af-south-1.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-af-south-1-prod.s3.af-south-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Hong Kong)  |  `ap-east-1`  |  [.json](https://cfn-resource-specifications-ap-east-1-prod.s3.ap-east-1.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ap-east-1-prod.s3.ap-east-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Hyderabad)  |  `ap-south-2`  |  [.json](https://cfn-resource-specifications-ap-south-2-prod.s3.ap-south-2.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ap-south-2-prod.s3.ap-south-2.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Jakarta)  |  `ap-southeast-3`  |  [.json](https://cfn-resource-specifications-ap-southeast-3-prod.s3.ap-southeast-3.amazonaws.com/latest/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ap-southeast-3-prod.s3.ap-southeast-3.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Melbourne)  |  `ap-southeast-4`  |  [.json](https://cfn-resource-specifications-ap-southeast-4-prod.s3.ap-southeast-4.amazonaws.com/latest/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ap-southeast-4-prod.s3.ap-southeast-4.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Malaysia)  |  `ap-southeast-5`  |  [.json](https://cfn-resource-specifications-ap-southeast-5-prod.s3.ap-southeast-5.amazonaws.com/latest/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ap-southeast-5-prod.s3.ap-southeast-5.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Taipei)  |  `ap-east-2`  |  [.json](https://cfn-resource-specifications-ap-east-2-975050364454-prod.s3.ap-east-2.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ap-east-2-975050364454-prod.s3.ap-east-2.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Thailand)  |  `ap-southeast-7`  |  [.json](https://cfn-resource-specifications-ap-southeast-7-767397843873-prod.s3.ap-southeast-7.amazonaws.com/latest/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ap-southeast-7-767397843873-prod.s3.ap-southeast-7.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Mumbai)  |  `ap-south-1`  |  [.json](https://d2senuesg1djtx.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d2senuesg1djtx.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Osaka)  |  `ap-northeast-3`  |  [.json](https://d2zq80gdmjim8k.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d2zq80gdmjim8k.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Seoul)  |  `ap-northeast-2`  |  [.json](https://d1ane3fvebulky.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d1ane3fvebulky.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Singapore)  |  `ap-southeast-1`  |  [.json](https://doigdx0kgq9el.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://doigdx0kgq9el.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Sydney)  |  `ap-southeast-2`  |  [.json](https://d2stg8d246z9di.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d2stg8d246z9di.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Asia Pacific (Tokyo)  |  `ap-northeast-1`  |  [.json](https://d33vqc0rt9ld30.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d33vqc0rt9ld30.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Canada (Central)  |  `ca-central-1`  |  [.json](https://d2s8ygphhesbe7.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d2s8ygphhesbe7.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Canada West (Calgary)  |  `ca-west-1`  |  [.json](https://cfn-resource-specifications-ca-west-1-prod.s3.ca-west-1.amazonaws.com/latest/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-ca-west-1-prod.s3.ca-west-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  China (Beijing)  |  `cn-north-1`  |  [.json](https://cfn-resource-specifications-cn-north-1-prod.s3.cn-north-1.amazonaws.com.cn/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-cn-north-1-prod.s3.cn-north-1.amazonaws.com.cn/latest/CloudFormationResourceSpecification.zip)  | 
|  China (Ningxia)  |  `cn-northwest-1`  |  [.json](https://cfn-resource-specifications-cn-northwest-1-prod.s3.cn-northwest-1.amazonaws.com.cn/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-cn-northwest-1-prod.s3.cn-northwest-1.amazonaws.com.cn/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (Frankfurt)  |  `eu-central-1`  |  [.json](https://d1mta8qj7i28i2.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d1mta8qj7i28i2.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (Ireland)  |  `eu-west-1`  |  [.json](https://d3teyb21fexa9r.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d3teyb21fexa9r.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (London)  |  `eu-west-2`  |  [.json](https://d1742qcu2c1ncx.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d1742qcu2c1ncx.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (Milan)  |  `eu-south-1`  |  [.json](https://cfn-resource-specifications-eu-south-1-prod.s3.eu-south-1.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-eu-south-1-prod.s3.eu-south-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (Paris)  |  `eu-west-3`  |  [.json](https://d2d0mfegowb3wk.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d2d0mfegowb3wk.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (Spain)  |  `eu-south-2`  |  [.json](https://cfn-resource-specifications-eu-south-2-prod.s3.eu-south-2.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-eu-south-2-prod.s3.eu-south-2.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (Stockholm)  |  `eu-north-1`  |  [.json](https://diy8iv58sj6ba.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://diy8iv58sj6ba.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Europe (Zurich)  |  `eu-central-2`  |  [.json](https://cfn-resource-specifications-eu-central-2-prod.s3.eu-central-2.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-eu-central-2-prod.s3.eu-central-2.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Israel (Tel Aviv)  |  `il-central-1`  |  [.json](https://cfn-resource-specifications-il-central-1-prod.s3.il-central-1.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-il-central-1-prod.s3.il-central-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Middle East (Bahrain)  |  `me-south-1`  |  [.json](https://cfn-resource-specifications-me-south-1-prod.s3.me-south-1.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-me-south-1-prod.s3.me-south-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Middle East (UAE)  |  `me-central-1`  |  [.json](https://cfn-resource-specifications-me-central-1-prod.s3.me-central-1.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-me-central-1-prod.s3.me-central-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  Mexico (Central)  |  `mx-central-1`  |  [.json](https://cfn-resource-specifications-mx-central-1-590183656522-prod.s3.mx-central-1.amazonaws.com/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://cfn-resource-specifications-mx-central-1-590183656522-prod.s3.mx-central-1.amazonaws.com/latest/CloudFormationResourceSpecification.zip)  | 
|  South America (São Paulo)  |  `sa-east-1`  |  [.json](https://d3c9jyj3w509b0.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json)  |  [.zip](https://d3c9jyj3w509b0.cloudfront.net/latest/CloudFormationResourceSpecification.zip)  | 
|  Amazon GovCloud (US-East)  |  `us-gov-east-1`  |  [.json](https://s3.us-gov-east-1.amazonaws.com/cfn-resource-specifications-us-gov-east-1-prod/latest/CloudFormationResourceSpecification.json)  |  [.zip](https://s3.us-gov-east-1.amazonaws.com/cfn-resource-specifications-us-gov-east-1-prod/latest/CloudFormationResourceSpecification.zip)  | 
|  Amazon GovCloud (US-West)  |  `us-gov-west-1`  |  [.json](https://s3.us-gov-west-1.amazonaws.com/cfn-resource-specifications-us-gov-west-1-prod/latest/CloudFormationResourceSpecification.json)  |  [.zip](https://s3.us-gov-west-1.amazonaws.com/cfn-resource-specifications-us-gov-west-1-prod/latest/CloudFormationResourceSpecification.zip)  | 

The following example shows the specification for an Amazon Key Management Service key resource (`AWS::KMS::Key`). It shows the properties for the `AWS::KMS::Key` resource, which properties are required, the type of allowed value for each property, and their update behavior. For details about the specification, see [Specification format](cfn-resource-specification-format.md).

```
    "AWS::KMS::Key": {
      "Attributes": {
        "Arn": {
          "PrimitiveType": "String"
        }
      },
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html",
      "Properties": {
        "Description": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-description",
          "PrimitiveType": "String",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "EnableKeyRotation": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enablekeyrotation",
          "PrimitiveType": "Boolean",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "Enabled": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-enabled",
          "PrimitiveType": "Boolean",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "KeyPolicy": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keypolicy",
          "PrimitiveType": "Json",
          "Required": true,
          "UpdateType": "Mutable"
        },
        "KeyUsage": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyusage",
          "PrimitiveType": "String",
          "Required": false,
          "UpdateType": "Immutable"
        }
      }
    }
```

# Specification format


CloudFormation creates a specification for each resource type, such as `AWS::S3::Bucket` or `AWS::EC2::Instance`. The following sections describe the format and each field within the specification.

**Topics**
+ [

## Specification sections
](#w2aac37b9c23b7)
+ [

## Property specification
](#cfn-resource-specification-format-propertytypes)
+ [

## Resource specification
](#cfn-resource-specification-format-resourcetype)
+ [

## Example resource specification
](#w2aac37b9c23c13)

## Specification sections


The formal definition for each resource type is organized into three main sections: `PropertyTypes`, `ResourceSpecificationVersion`, and `ResourceTypes`, as shown in the following example:

```
{
  "PropertyTypes": {
    *Property specifications*
  },
  "ResourceSpecificationVersion": "Specification version number",
  "ResourceTypes": {
    *Resource specification*
  }
}
```

`PropertyTypes`  <a name="specification-section-property-types"></a>
For resources that have properties within a property (also known as subproperties), a list of subproperty specifications, such as which properties are required, the type of allowed value for each property, and their update behavior. For more information, see [Property specification](#cfn-resource-specification-format-propertytypes).  
If a resource doesn't have subproperties, this section is omitted.

`ResourceSpecificationVersion`  <a name="specification-section-resource-version"></a>
The version of the resource specification. The version format is `majorVersion.minorVersion.patch`, where each release increments the version number. All resources have the same version number regardless of whether the resource was updated.  
CloudFormation increments the patch number when the service makes a backwards-compatible bug fix, such as fixing a broken documentation link. When CloudFormation adds resources or properties that are backwards compatible, it increments the minor version number. For example, later versions of a specification might add additional resource properties to support new features of an Amazon service.  
Backwards incompatible changes increment the major version number. A backwards incompatible change can result from a change in the resource specification, such as a name change to a field, or a change to a resource, such as the making an optional resource property required.

`ResourceTypes`  <a name="specification-section-resource-types"></a>
The list of resources and information about each resource's properties, such as its property names, which properties are required, and their update behavior. For more information, see [Resource specification](#cfn-resource-specification-format-resourcetype).  
If you view a file that contains the definition of one resource type, this property name is `ResourceType` (singular).

## Property specification


The specification for each property includes the following fields. For subproperties, the property name uses the `resourceType.subpropertyName` format.

```
"Property name": {
  "Documentation": "Link to the relevant documentation"
  "DuplicatesAllowed": "true or false",
  "ItemType": "Type of list or map (non-primitive)",
  "PrimitiveItemType": "Type of list or map (primitive)",
  "PrimitiveType": "Type of value (primitive)",
  "Required": "true or false",
  "Type": "Type of value (non-primitive)",
  "UpdateType": "Mutable, Immutable, or Conditional",
}
```

`Documentation`  <a name="property-specification-documentation"></a>
A link to the *Amazon CloudFormation User Guide* that provides information about the property.

`DuplicatesAllowed`  <a name="property-specification-duplicates-allowed"></a>
If the value of the `Type` field is `List`, indicates whether CloudFormation allows duplicate values. If the value is `true`, CloudFormation ignores duplicate values. If the value is `false`, CloudFormation returns an error if you submit duplicate values.

`ItemType`  <a name="property-specification-item-type"></a>
If the value of the `Type` field is `List` or `Map`, indicates the type of list or map if they contain non-primitive types. Otherwise, this field is omitted. For lists or maps that contain primitive types, the `PrimitiveItemType` property indicates the valid value type.  
A subproperty name is a valid item type. For example, if the type value is `List` and the item type value is `PortMapping`, you can specify a list of port mapping properties.

`PrimitiveItemType`  <a name="property-specification-primitive-item-type"></a>
If the value of the `Type` field is `List` or `Map`, indicates the type of list or map if they contain primitive types. Otherwise, this field is omitted. For lists or maps that contain non-primitive types, the `ItemType` property indicates the valid value type.  
The valid primitive types for lists and maps are `String`, `Long`, `Integer`, `Double`, `Boolean`, or `Timestamp`.  
For example, if the type value is `List` and the item type value is `String`, you can specify a list of strings for the property. If the type value is `Map` and the item type value is `Boolean`, you can specify a string to Boolean mapping for the property.

`PrimitiveType`  <a name="property-specification-primitive-type"></a>
For primitive values, the valid primitive type for the property. A primitive type is a basic data type for resource property values. The valid primitive types are `String`, `Long`, `Integer`, `Double`, `Boolean`, `Timestamp` or `Json`. If valid values are a non-primitive type, this field is omitted and the `Type` field indicates the valid value type.

`Required`  <a name="property-specification-required"></a>
Indicates whether the property is required.

`Type`  <a name="property-specification-type"></a>
For non-primitive types, valid values for the property. The valid types are a subproperty name, `List` or `Map`. If valid values are a primitive type, this field is omitted and the `PrimitiveType` field indicates the valid value type.  
A list is a comma-separated list of values. A map is a set of key-value pairs, where the keys are always strings. The value type for lists and maps are indicated by the `ItemType` or `PrimitiveItemType` field.

`UpdateType`  <a name="property-specification-update-type"></a>
During a stack update, the update behavior when you add, remove, or modify the property. CloudFormation replaces the resource when you change immutable properties. CloudFormation doesn't replace the resource when you change mutable properties. Conditional updates can be mutable or immutable, depending on, for example, which other properties you updated. For more information, see [Amazon resource and property types reference](aws-template-resource-type-ref.md).

## Resource specification


The specification for each resource type includes the following fields.

```
"Resource type name": {
  "Attributes": {
    "AttributeName": {
      "ItemType": "Return list or map type (non-primitive)",
      "PrimitiveItemType": "Return list or map type (primitive)",
      "PrimitiveType": "Return value type (primitive)",
      "Type": "Return value type (non-primitive)",
    }
  },
  "Documentation": "Link to the relevant documentation",
  "Properties": {
    *Property specifications*
  }
}
```

`Attributes`  <a name="resource-type-specification-attributes"></a>
A list of resource attributes that you can use in an [`Fn::GetAtt`](intrinsic-function-reference-getatt.md) function. For each attribute, this section provides the attribute name and the type of value that CloudFormation returns.    
`ItemType`  <a name="resource-type-specification-item-type"></a>
If the value of the `Type` field is `List`, indicates the type of list that the `Fn::GetAtt` function returns for the attribute if the list contains non-primitive types. The valid type is a name of a property.  
`PrimitiveItemType`  <a name="resource-type-specification-primitive-item-type"></a>
If the value of the `Type` field is `List`, indicates the type of list that the `Fn::GetAtt` function returns for the attribute if the list contains primitive types. For lists that contain non-primitive types, the `ItemType` property indicates the valid value type. The valid primitive types for lists are `String`, `Long`, `Integer`, `Double`, `Boolean`, or `Timestamp`.  
For example, if the type value is `List` and the primitive item type value is `String`, the `Fn::GetAtt` function returns a list of strings.  
`PrimitiveType`  <a name="resource-type-specification-primitive-type"></a>
For primitive return values, the type of primitive value that the `Fn::GetAtt` function returns for the attribute. A primitive type is a basic data type for resource property values. The valid primitive types are `String`, `Long`, `Integer`, `Double`, `Boolean`, `Timestamp` or `Json`.  
`Type`  <a name="resource-type-specification-type"></a>
For non-primitive return values, the type of value that the `Fn::GetAtt` function returns for the attribute. The valid types are a property name or `List`.  
A list is a comma-separated list of values. The value type for lists are indicated by the `ItemType` or `PrimitiveItemType` field.

`Documentation`  <a name="resource-type-specification-documentation"></a>
A link to the *Amazon CloudFormation User Guide* for information about the resource.

`Properties`  <a name="resource-type-specification-properties"></a>
A list of property specifications for the resource. For details, see [Property specification](#cfn-resource-specification-format-propertytypes).

## Example resource specification


The following examples highlight and explain parts of the [AWS::Elasticsearch::Domain](https://docs.amazonaws.cn/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticsearch-domain.html) resource specification.

The `AWS::Elasticsearch::Domain` resource type contains subproperties, so the specification includes a `PropertyTypes` section. This section is followed by the `ResourceSpecificationVersion` section, which shows the specification version as `1.0.0`. After the specification version is the `ResourceType` section that specifies the resource type, provides a documentation link, and details the resource's properties.

```
{
  "PropertyTypes": {
    ...

  },
  "ResourceSpecificationVersion": "1.0.0",
  "ResourceType": {
    "AWS::Elasticsearch::Domain": {
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html",
      "Properties": {
        ...

        }
      }
    }
  }
}
```

Focusing on the `ResourceType` section, the following example shows two properties of the `AWS::Elasticsearch::Domain` resource type. The `AdvancedOptions` property isn't required and accepts a string to string map. A map is a collection of key-value pairs, where the keys are always strings. The value type is indicated by the `ItemType` field, which is `String`. Therefore, the type is a string to string map. The update behavior for this property is mutable. If update this property, CloudFormation keeps the resource instead of creating a new one and then deleting the old one (an immutable update).

The `SnapshotOptions` property isn't required and accepts a subproperty named `SnapshotOptions`. Details of the `SnapshotOptions` subproperty is provided in the `PropertyTypes` section.

```
{
  "PropertyTypes": {
    ...

  },
  "ResourceSpecificationVersion": "1.0.0",
  "ResourceType": {
    "AWS::Elasticsearch::Domain": {
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html",
      "Properties": {
        ...

        "AdvancedOptions": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-advancedoptions",
          "DuplicatesAllowed": false,
          "PrimitiveItemType": "String",
          "Required": false,
          "Type": "Map",
          "UpdateType": "Mutable"
        },
        ...

        "SnapshotOptions": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-snapshotoptions",
          "Required": false,
          "Type": "SnapshotOptions",
          "UpdateType": "Mutable"
        },
        ...

      }
    }
  }
}
```

In the `PropertyTypes`, the specification lists all the subproperties of a resource (including nested subproperties). The following example details the `AWS::Elasticsearch::Domain.SnapshotOptions` subproperty. It contains one property named `AutomatedSnapshotStartHour`, which isn't required and accepts integer value types.

```
"PropertyTypes": {
  ...

  "AWS::Elasticsearch::Domain.SnapshotOptions": {
    "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html",
    "Properties": {
      "AutomatedSnapshotStartHour": {
        "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html#cfn-elasticsearch-domain-snapshotoptions-automatedsnapshotstarthour",
        "PrimitiveType": "Integer",
        "Required": false,
        "UpdateType": "Mutable"
      }
    }
  },
  ...
    
}
```

For your reference, the following example provides the entire `AWS::Elasticsearch::Domain` resource specification.

```
{
  "PropertyTypes": {
    "AWS::Elasticsearch::Domain.EBSOptions": {
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html",
      "Properties": {
        "EBSEnabled": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-ebsenabled",
          "PrimitiveType": "Boolean",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "Iops": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-iops",
          "PrimitiveType": "Integer",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "VolumeSize": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-volumesize",
          "PrimitiveType": "Integer",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "VolumeType": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html#cfn-elasticsearch-domain-ebsoptions-volumetype",
          "PrimitiveType": "String",
          "Required": false,
          "UpdateType": "Mutable"
        }
      }
    },
    "AWS::Elasticsearch::Domain.ElasticsearchClusterConfig": {
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html",
      "Properties": {
        "DedicatedMasterCount": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmastercount",
          "PrimitiveType": "Integer",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "DedicatedMasterEnabled": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmasterenabled",
          "PrimitiveType": "Boolean",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "DedicatedMasterType": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-dedicatedmastertype",
          "PrimitiveType": "String",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "InstanceCount": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-instancecount",
          "PrimitiveType": "Integer",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "InstanceType": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-instancetype",
          "PrimitiveType": "String",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "ZoneAwarenessEnabled": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-elasticsearchclusterconfig.html#cfn-elasticsearch-domain-elasticseachclusterconfig-zoneawarenessenabled",
          "PrimitiveType": "Boolean",
          "Required": false,
          "UpdateType": "Mutable"
        }
      }
    },
    "AWS::Elasticsearch::Domain.SnapshotOptions": {
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html",
      "Properties": {
        "AutomatedSnapshotStartHour": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-snapshotoptions.html#cfn-elasticsearch-domain-snapshotoptions-automatedsnapshotstarthour",
          "PrimitiveType": "Integer",
          "Required": false,
          "UpdateType": "Mutable"
        }
      }
    },
    "Tag": {
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html",
      "Properties": {
        "Key": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html#cfn-resource-tags-key",
          "PrimitiveType": "String",
          "Required": true,
          "UpdateType": "Immutable"
        },
        "Value": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html#cfn-resource-tags-value",
          "PrimitiveType": "String",
          "Required": true,
          "UpdateType": "Immutable"
        }
      }
    }
  },
  "ResourceType": {
    "AWS::Elasticsearch::Domain": {
      "Attributes": {
        "DomainArn": {
          "PrimitiveType": "String"
        },
        "DomainEndpoint": {
          "PrimitiveType": "String"
        }
      },
      "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html",
      "Properties": {
        "AccessPolicies": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-accesspolicies",
          "PrimitiveType": "Json",
          "Required": false,
          "UpdateType": "Mutable"
        },
        "AdvancedOptions": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-advancedoptions",
          "DuplicatesAllowed": false,
          "PrimitiveItemType": "String",
          "Required": false,
          "Type": "Map",
          "UpdateType": "Mutable"
        },
        "DomainName": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-domainname",
          "PrimitiveType": "String",
          "Required": false,
          "UpdateType": "Immutable"
        },
        "EBSOptions": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-ebsoptions",
          "Required": false,
          "Type": "EBSOptions",
          "UpdateType": "Mutable"
        },
        "ElasticsearchClusterConfig": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-elasticsearchclusterconfig",
          "Required": false,
          "Type": "ElasticsearchClusterConfig",
          "UpdateType": "Mutable"
        },
        "ElasticsearchVersion": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-elasticsearchversion",
          "PrimitiveType": "String",
          "Required": false,
          "UpdateType": "Immutable"
        },
        "SnapshotOptions": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-snapshotoptions",
          "Required": false,
          "Type": "SnapshotOptions",
          "UpdateType": "Mutable"
        },
        "Tags": {
          "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-tags",
          "DuplicatesAllowed": true,
          "ItemType": "Tag",
          "Required": false,
          "Type": "List",
          "UpdateType": "Mutable"
        }
      }
    }
  },
  "ResourceSpecificationVersion": "1.4.1"
}
```

# CloudFormation resource provider schemas
Resource provider schemas

In addition to the resource specification, CloudFormation makes available the resource provider schemas for the Amazon resources by Region. Each resource provider schema is a JSON-formatted text file that defines the properties and attributes of a specific resource.

For each Region, CloudFormation offers a zip file containing the individual schema files for each resource available in that Region. To download the resource provider schemas for a specific Region, see the following table. You can also view a resource's provider schema using the [CloudFormation registry](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/registry.html).

Resource availability may vary by Region. To check the availability of a resource in a given Region, refer to the resource provider schemas for that Region.

To learn more about resource provider schemas, including schema format and definitions, see [Resource provider schema](https://docs.amazonaws.cn/cloudformation-cli/latest/userguide/resource-type-schema.html) in the *CloudFormation Command Line Interface User Guide*.

The following table lists the available resource provider schemas for the Amazon resources by Region


|  Region name  |  Region resource provider schema files  | 
| --- | --- | 
|  US East (Ohio)  |  [https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip)  | 
|  US East (N. Virginia)  |  [https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip)  | 
|  US West (N. California)  |  [https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip)  | 
|  US West (Oregon)  |  [https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Africa (Cape Town)  |  [https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Hong Kong)  |  [https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Hyderabad)  |  [https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Jakarta)  |  [https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Malaysia)  |  [https://schema.cloudformation.ap-southeast-5.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-southeast-5.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Melbourne)  |  [https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Taipei)  |  [https://schema.cloudformation.ap-east-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-east-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Thailand)  |  [https://schema.cloudformation.ap-southeast-7.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-southeast-7.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Mumbai)  |  [https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Osaka)  |  [https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Seoul)  |  [https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Singapore)  |  [https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Sydney)  |  [https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Asia Pacific (Tokyo)  |  [https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Canada (Central)  |  [https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Canada West (Calgary)  |  [https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip)  | 
|  China (Beijing)  |  [https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip](https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip)  | 
|  China (Ningxia)  |  [https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip](https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip)  | 
|  Europe (Frankfurt)  |  [https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Europe (Ireland)  |  [https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Europe (London)  |  [https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Europe (Milan)  |  [https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Europe (Paris)  |  [https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip)  | 
|  Europe (Spain)  |  [https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Europe (Stockholm)  |  [https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Europe (Zurich)  |  [https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip)  | 
|  Israel (Tel Aviv)  |  [https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Middle East (Bahrain)  |  [https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Middle East (UAE)  |  [https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Mexico (Central)  |  [https://schema.cloudformation.mx-central-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.mx-central-1.amazonaws.com/CloudformationSchema.zip)  | 
|  South America (São Paulo)  |  [https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Amazon GovCloud (US-East)  |  [https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip)  | 
|  Amazon GovCloud (US-West)  |  [https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip](https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip)  | 