

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

# AWS::Backup::Framework
<a name="aws-resource-backup-framework"></a>

Creates a framework with one or more controls. A framework is a collection of controls that you can use to evaluate your backup practices. By using pre-built customizable controls to define your policies, you can evaluate whether your backup practices comply with your policies and which resources are not yet in compliance.

For a sample CloudFormation template, see the [AWS Backup Developer Guide](https://docs.aws.amazon.com/aws-backup/latest/devguide/bam-cfn-integration.html#bam-cfn-frameworks-template).

## Syntax
<a name="aws-resource-backup-framework-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-resource-backup-framework-syntax.json"></a>

```
{
  "Type" : "AWS::Backup::Framework",
  "Properties" : {
      "[FrameworkControls](#cfn-backup-framework-frameworkcontrols)" : [ FrameworkControl, ... ],
      "[FrameworkDescription](#cfn-backup-framework-frameworkdescription)" : String,
      "[FrameworkName](#cfn-backup-framework-frameworkname)" : String,
      "[FrameworkTags](#cfn-backup-framework-frameworktags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-backup-framework-syntax.yaml"></a>

```
Type: AWS::Backup::Framework
Properties:
  [FrameworkControls](#cfn-backup-framework-frameworkcontrols): 
    - FrameworkControl
  [FrameworkDescription](#cfn-backup-framework-frameworkdescription): String
  [FrameworkName](#cfn-backup-framework-frameworkname): String
  [FrameworkTags](#cfn-backup-framework-frameworktags): 
    - Tag
```

## Properties
<a name="aws-resource-backup-framework-properties"></a>

`FrameworkControls`  <a name="cfn-backup-framework-frameworkcontrols"></a>
Contains detailed information about all of the controls of a framework. Each framework must contain at least one control.  
*Required*: Yes  
*Type*: Array of [FrameworkControl](aws-properties-backup-framework-frameworkcontrol.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`FrameworkDescription`  <a name="cfn-backup-framework-frameworkdescription"></a>
An optional description of the framework with a maximum 1,024 characters.  
*Required*: No  
*Type*: String  
*Minimum*: `0`  
*Maximum*: `1024`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`FrameworkName`  <a name="cfn-backup-framework-frameworkname"></a>
The unique name of a framework. This name is between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (\$1).  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z][_a-zA-Z0-9]*`  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`FrameworkTags`  <a name="cfn-backup-framework-frameworktags"></a>
The tags to assign to your framework.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-backup-framework-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

## Return values
<a name="aws-resource-backup-framework-return-values"></a>

### Ref
<a name="aws-resource-backup-framework-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the framework ARN.

### Fn::GetAtt
<a name="aws-resource-backup-framework-return-values-fn--getatt"></a>

#### 
<a name="aws-resource-backup-framework-return-values-fn--getatt-fn--getatt"></a>

`CreationTime`  <a name="CreationTime-fn::getatt"></a>
The UTC time when you created your framework.

`DeploymentStatus`  <a name="DeploymentStatus-fn::getatt"></a>
Depolyment status refers to whether your framework has completed deployment. This status is usually `Completed`, but might also be `Create in progress` or another status. For a list of statuses, see [Framework compliance status](https://docs.aws.amazon.com/aws-backup/latest/devguide/viewing-frameworks.html) in the *AWS Backup; Developer Guide*.

`FrameworkArn`  <a name="FrameworkArn-fn::getatt"></a>
The Amazon Resource Name (ARN) of your framework.

`FrameworkStatus`  <a name="FrameworkStatus-fn::getatt"></a>
Framework status refers to whether you have turned on resource tracking for all of your resources. This status is `Active` when you turn on all resources the framework evaluates. For other statuses and steps to correct them, see [Framework compliance status](https://docs.aws.amazon.com/aws-backup/latest/devguide/viewing-frameworks.html) in the *AWS Backup; Developer Guide*.

# AWS::Backup::Framework ControlInputParameter
<a name="aws-properties-backup-framework-controlinputparameter"></a>

The parameters for a control. A control can have zero, one, or more than one parameter. An example of a control with two parameters is: "backup plan frequency is at least `daily` and the retention period is at least `1 year`". The first parameter is `daily`. The second parameter is `1 year`.

## Syntax
<a name="aws-properties-backup-framework-controlinputparameter-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-backup-framework-controlinputparameter-syntax.json"></a>

```
{
  "[ParameterName](#cfn-backup-framework-controlinputparameter-parametername)" : String,
  "[ParameterValue](#cfn-backup-framework-controlinputparameter-parametervalue)" : String
}
```

### YAML
<a name="aws-properties-backup-framework-controlinputparameter-syntax.yaml"></a>

```
  [ParameterName](#cfn-backup-framework-controlinputparameter-parametername): String
  [ParameterValue](#cfn-backup-framework-controlinputparameter-parametervalue): String
```

## Properties
<a name="aws-properties-backup-framework-controlinputparameter-properties"></a>

`ParameterName`  <a name="cfn-backup-framework-controlinputparameter-parametername"></a>
The name of a parameter, for example, `BackupPlanFrequency`.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ParameterValue`  <a name="cfn-backup-framework-controlinputparameter-parametervalue"></a>
The value of parameter, for example, `hourly`.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::Backup::Framework ControlScope
<a name="aws-properties-backup-framework-controlscope"></a>

A framework consists of one or more controls. Each control has its own control scope. The control scope can include one or more resource types, a combination of a tag key and value, or a combination of one resource type and one resource ID. If no scope is specified, evaluations for the rule are triggered when any resource in your recording group changes in configuration.

**Note**  
To set a control scope that includes all of a particular resource, leave the `ControlScope` empty or do not pass it when calling `CreateFramework`.

## Syntax
<a name="aws-properties-backup-framework-controlscope-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-backup-framework-controlscope-syntax.json"></a>

```
{
  "[ComplianceResourceIds](#cfn-backup-framework-controlscope-complianceresourceids)" : [ String, ... ],
  "[ComplianceResourceTypes](#cfn-backup-framework-controlscope-complianceresourcetypes)" : [ String, ... ],
  "[Tags](#cfn-backup-framework-controlscope-tags)" : [ Tag, ... ]
}
```

### YAML
<a name="aws-properties-backup-framework-controlscope-syntax.yaml"></a>

```
  [ComplianceResourceIds](#cfn-backup-framework-controlscope-complianceresourceids): 
    - String
  [ComplianceResourceTypes](#cfn-backup-framework-controlscope-complianceresourcetypes): 
    - String
  [Tags](#cfn-backup-framework-controlscope-tags): 
    - Tag
```

## Properties
<a name="aws-properties-backup-framework-controlscope-properties"></a>

`ComplianceResourceIds`  <a name="cfn-backup-framework-controlscope-complianceresourceids"></a>
The ID of the only AWS resource that you want your control scope to contain.  
*Required*: No  
*Type*: Array of String  
*Minimum*: `1`  
*Maximum*: `100`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ComplianceResourceTypes`  <a name="cfn-backup-framework-controlscope-complianceresourcetypes"></a>
Describes whether the control scope includes one or more types of resources, such as `EFS` or `RDS`.  
*Required*: No  
*Type*: Array of String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Tags`  <a name="cfn-backup-framework-controlscope-tags"></a>
The tag key-value pair applied to those AWS resources that you want to trigger an evaluation for a rule. A maximum of one key-value pair can be provided. The tag value is optional, but it cannot be an empty string if you are creating or editing a framework from the console (though the value can be an empty string when included in a CloudFormation template).  
The structure to assign a tag is: `[{"Key":"string","Value":"string"}]`.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-backup-framework-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::Backup::Framework FrameworkControl
<a name="aws-properties-backup-framework-frameworkcontrol"></a>

Contains detailed information about all of the controls of a framework. Each framework must contain at least one control.

## Syntax
<a name="aws-properties-backup-framework-frameworkcontrol-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-backup-framework-frameworkcontrol-syntax.json"></a>

```
{
  "[ControlInputParameters](#cfn-backup-framework-frameworkcontrol-controlinputparameters)" : [ ControlInputParameter, ... ],
  "[ControlName](#cfn-backup-framework-frameworkcontrol-controlname)" : String,
  "[ControlScope](#cfn-backup-framework-frameworkcontrol-controlscope)" : ControlScope
}
```

### YAML
<a name="aws-properties-backup-framework-frameworkcontrol-syntax.yaml"></a>

```
  [ControlInputParameters](#cfn-backup-framework-frameworkcontrol-controlinputparameters): 
    - ControlInputParameter
  [ControlName](#cfn-backup-framework-frameworkcontrol-controlname): String
  [ControlScope](#cfn-backup-framework-frameworkcontrol-controlscope): 
    ControlScope
```

## Properties
<a name="aws-properties-backup-framework-frameworkcontrol-properties"></a>

`ControlInputParameters`  <a name="cfn-backup-framework-frameworkcontrol-controlinputparameters"></a>
The name/value pairs.  
*Required*: No  
*Type*: Array of [ControlInputParameter](aws-properties-backup-framework-controlinputparameter.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ControlName`  <a name="cfn-backup-framework-frameworkcontrol-controlname"></a>
The name of a control. This name is between 1 and 256 characters.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ControlScope`  <a name="cfn-backup-framework-frameworkcontrol-controlscope"></a>
The scope of a control. The control scope defines what the control will evaluate. Three examples of control scopes are: a specific backup plan, all backup plans with a specific tag, or all backup plans.  
For more information, see [`ControlScope`.](https://docs.aws.amazon.com/aws-backup/latest/devguide/API_ControlScope.html)  
*Required*: No  
*Type*: [ControlScope](aws-properties-backup-framework-controlscope.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::Backup::Framework Tag
<a name="aws-properties-backup-framework-tag"></a>

The tags to assign to the framework.

## Syntax
<a name="aws-properties-backup-framework-tag-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-backup-framework-tag-syntax.json"></a>

```
{
  "[Key](#cfn-backup-framework-tag-key)" : String,
  "[Value](#cfn-backup-framework-tag-value)" : String
}
```

### YAML
<a name="aws-properties-backup-framework-tag-syntax.yaml"></a>

```
  [Key](#cfn-backup-framework-tag-key): String
  [Value](#cfn-backup-framework-tag-value): String
```

## Properties
<a name="aws-properties-backup-framework-tag-properties"></a>

`Key`  <a name="cfn-backup-framework-tag-key"></a>
The tag key.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Value`  <a name="cfn-backup-framework-tag-value"></a>
The tag value.  
*Required*: No  
*Type*: String  
*Minimum*: `0`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)