

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 IoT
<a name="AWS_IoT"></a>

**Resource types**
+ [AWS::IoT::AccountAuditConfiguration](aws-resource-iot-accountauditconfiguration.md)
+ [AWS::IoT::Authorizer](aws-resource-iot-authorizer.md)
+ [AWS::IoT::BillingGroup](aws-resource-iot-billinggroup.md)
+ [AWS::IoT::CACertificate](aws-resource-iot-cacertificate.md)
+ [AWS::IoT::Certificate](aws-resource-iot-certificate.md)
+ [AWS::IoT::CertificateProvider](aws-resource-iot-certificateprovider.md)
+ [AWS::IoT::Command](aws-resource-iot-command.md)
+ [AWS::IoT::CustomMetric](aws-resource-iot-custommetric.md)
+ [AWS::IoT::Dimension](aws-resource-iot-dimension.md)
+ [AWS::IoT::DomainConfiguration](aws-resource-iot-domainconfiguration.md)
+ [AWS::IoT::EncryptionConfiguration](aws-resource-iot-encryptionconfiguration.md)
+ [AWS::IoT::FleetMetric](aws-resource-iot-fleetmetric.md)
+ [AWS::IoT::JobTemplate](aws-resource-iot-jobtemplate.md)
+ [AWS::IoT::Logging](aws-resource-iot-logging.md)
+ [AWS::IoT::MitigationAction](aws-resource-iot-mitigationaction.md)
+ [AWS::IoT::Policy](aws-resource-iot-policy.md)
+ [AWS::IoT::PolicyPrincipalAttachment](aws-resource-iot-policyprincipalattachment.md)
+ [AWS::IoT::ProvisioningTemplate](aws-resource-iot-provisioningtemplate.md)
+ [AWS::IoT::ResourceSpecificLogging](aws-resource-iot-resourcespecificlogging.md)
+ [AWS::IoT::RoleAlias](aws-resource-iot-rolealias.md)
+ [AWS::IoT::ScheduledAudit](aws-resource-iot-scheduledaudit.md)
+ [AWS::IoT::SecurityProfile](aws-resource-iot-securityprofile.md)
+ [AWS::IoT::SoftwarePackage](aws-resource-iot-softwarepackage.md)
+ [AWS::IoT::SoftwarePackageVersion](aws-resource-iot-softwarepackageversion.md)
+ [AWS::IoT::Thing](aws-resource-iot-thing.md)
+ [AWS::IoT::ThingGroup](aws-resource-iot-thinggroup.md)
+ [AWS::IoT::ThingPrincipalAttachment](aws-resource-iot-thingprincipalattachment.md)
+ [AWS::IoT::ThingType](aws-resource-iot-thingtype.md)
+ [AWS::IoT::TopicRule](aws-resource-iot-topicrule.md)
+ [AWS::IoT::TopicRuleDestination](aws-resource-iot-topicruledestination.md)

# AWS::IoT::AccountAuditConfiguration
<a name="aws-resource-iot-accountauditconfiguration"></a>

Use the `AWS::IoT::AccountAuditConfiguration` resource to configure or reconfigure the Device Defender audit settings for your account. Settings include how audit notifications are sent and which audit checks are enabled or disabled. For API reference, see [UpdateAccountAuditConfiguration](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAccountAuditConfiguration.html) and for detailed information on all available audit checks, see [Audit checks](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-audit-checks.html).

## Syntax
<a name="aws-resource-iot-accountauditconfiguration-syntax"></a>

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

### JSON
<a name="aws-resource-iot-accountauditconfiguration-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::AccountAuditConfiguration",
  "Properties" : {
      "[AccountId](#cfn-iot-accountauditconfiguration-accountid)" : String,
      "[AuditCheckConfigurations](#cfn-iot-accountauditconfiguration-auditcheckconfigurations)" : AuditCheckConfigurations,
      "[AuditNotificationTargetConfigurations](#cfn-iot-accountauditconfiguration-auditnotificationtargetconfigurations)" : AuditNotificationTargetConfigurations,
      "[RoleArn](#cfn-iot-accountauditconfiguration-rolearn)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-accountauditconfiguration-syntax.yaml"></a>

```
Type: AWS::IoT::AccountAuditConfiguration
Properties:
  [AccountId](#cfn-iot-accountauditconfiguration-accountid): String
  [AuditCheckConfigurations](#cfn-iot-accountauditconfiguration-auditcheckconfigurations): 
    AuditCheckConfigurations
  [AuditNotificationTargetConfigurations](#cfn-iot-accountauditconfiguration-auditnotificationtargetconfigurations): 
    AuditNotificationTargetConfigurations
  [RoleArn](#cfn-iot-accountauditconfiguration-rolearn): String
```

## Properties
<a name="aws-resource-iot-accountauditconfiguration-properties"></a>

`AccountId`  <a name="cfn-iot-accountauditconfiguration-accountid"></a>
The ID of the account. You can use the expression `!Sub "${AWS::AccountId}"` to use your account ID.  
*Required*: Yes  
*Type*: String  
*Minimum*: `12`  
*Maximum*: `12`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`AuditCheckConfigurations`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations"></a>
Specifies which audit checks are enabled and disabled for this account.  
Some data collection might start immediately when certain checks are enabled. When a check is disabled, any data collected so far in relation to the check is deleted. To disable a check, set the value of the `Enabled:` key to `false`.  
If an enabled check is removed from the template, it will also be disabled.  
You can't disable a check if it's used by any scheduled audit. You must delete the check from the scheduled audit or delete the scheduled audit itself to disable the check.  
For more information on available audit checks see [AWS::IoT::AccountAuditConfiguration AuditCheckConfigurations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditcheckconfigurations.html)  
*Required*: Yes  
*Type*: [AuditCheckConfigurations](aws-properties-iot-accountauditconfiguration-auditcheckconfigurations.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`AuditNotificationTargetConfigurations`  <a name="cfn-iot-accountauditconfiguration-auditnotificationtargetconfigurations"></a>
Information about the targets to which audit notifications are sent.  
*Required*: No  
*Type*: [AuditNotificationTargetConfigurations](aws-properties-iot-accountauditconfiguration-auditnotificationtargetconfigurations.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-accountauditconfiguration-rolearn"></a>
The Amazon Resource Name (ARN) of the role that grants permission to AWS IoT to access information about your devices, policies, certificates, and other items as required when performing an audit.  
*Required*: Yes  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*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-iot-accountauditconfiguration-return-values"></a>

### Ref
<a name="aws-resource-iot-accountauditconfiguration-return-values-ref"></a>

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

## Examples
<a name="aws-resource-iot-accountauditconfiguration--examples"></a>



### 
<a name="aws-resource-iot-accountauditconfiguration--examples--"></a>



#### JSON
<a name="aws-resource-iot-accountauditconfiguration--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Amazon Web Services IoT AccountAuditConfiguration Sample Template",
  "Resources": {
    "MyAccountAuditConfiguration": {
      "Type": "AWS::IoT::AccountAuditConfiguration",
      "Properties": {
        "AccountId": "${AWS::AccountId}",
        "AuditCheckConfigurations": {
          "AuthenticatedCognitoRoleOverlyPermissiveCheck": {
            "Enabled": true
          },
          "CaCertificateExpiringCheck": {
            "Enabled": true
          },
          "CaCertificateKeyQualityCheck": {
            "Enabled": true
          },
          "ConflictingClientIdsCheck": {
            "Enabled": true
          },
          "DeviceCertificateAgeCheck": {
            "Enabled": true,
            "Configuration": {
              "CertAgeThresholdInDays": 60
            }
          },
          "DeviceCertificateExpiringCheck": {
            "Enabled": true,
            "Configuration": {
              "CertExpirationThresholdInDays": 30
            }
          },
          "DeviceCertificateKeyQualityCheck": {
            "Enabled": true
          },
          "DeviceCertificateSharedCheck": {
            "Enabled": true
          },
          "IotPolicyOverlyPermissiveCheck": {
            "Enabled": true
          },
          "IotRoleAliasAllowsAccessToUnusedServicesCheck": {
            "Enabled": true
          },
          "IotRoleAliasOverlyPermissiveCheck": {
            "Enabled": true
          },
          "LoggingDisabledCheck": {
            "Enabled": true
          },
          "RevokedCaCertificateStillActiveCheck": {
            "Enabled": true
          },
          "RevokedDeviceCertificateStillActiveCheck": {
            "Enabled": true
          },
          "UnauthenticatedCognitoRoleOverlyPermissiveCheck": {
            "Enabled": true
          }
        },
        "AuditNotificationTargetConfigurations": {
          "Sns": {
            "TargetArn": "arn:aws:sns:us-east-1:123456789012:AuditNotifications",
            "RoleArn": "arn:aws:iam::123456789012:role/RoleForIoTAuditNotifications",
            "Enabled": true
          }
        },
        "RoleArn": "arn:aws:iam::123456789012:role/service-role/AWSIoTDeviceDefenderAudit"
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-accountauditconfiguration--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon Web Services IoT AccountAuditConfiguration Sample Template
Resources:
  MyAccountAuditConfiguration:
    Type: 'AWS::IoT::AccountAuditConfiguration'
    Properties:
      AccountId: !Sub '${AWS::AccountId}'
      AuditCheckConfigurations:
        AuthenticatedCognitoRoleOverlyPermissiveCheck:
          Enabled: true
        CaCertificateExpiringCheck:
          Enabled: true
        CaCertificateKeyQualityCheck:
          Enabled: true
        ConflictingClientIdsCheck:
          Enabled: true
        DeviceCertificateAgeCheck:
          Enabled: true
          Configuration:
            CertAgeThresholdInDays: 60
        DeviceCertificateExpiringCheck:
          Enabled: true
          Configuration:
            CertExpirationThresholdInDays: 30
        DeviceCertificateKeyQualityCheck:
          Enabled: true
        DeviceCertificateSharedCheck:
          Enabled: true
        IotPolicyOverlyPermissiveCheck:
          Enabled: true
        IotRoleAliasAllowsAccessToUnusedServicesCheck:
          Enabled: true
        IotRoleAliasOverlyPermissiveCheck:
          Enabled: true
        LoggingDisabledCheck:
          Enabled: true
        RevokedCaCertificateStillActiveCheck:
          Enabled: true
        RevokedDeviceCertificateStillActiveCheck:
          Enabled: true
        UnauthenticatedCognitoRoleOverlyPermissiveCheck:
          Enabled: true
      AuditNotificationTargetConfigurations:
        Sns:
          TargetArn: 'arn:aws:sns:us-east-1:123456789012:AuditNotifications'
          RoleArn: 'arn:aws:iam::123456789012:role/RoleForIoTAuditNotifications'
          Enabled: true
      RoleArn: 'arn:aws:iam::123456789012:role/service-role/AWSIoTDeviceDefenderAudit'
```

## See also
<a name="aws-resource-iot-accountauditconfiguration--seealso"></a>

When you use CloudFormation to perform drift detection for `AccountAuditConfiguration`, it won't compare values that aren't part of the stack template. In `AccountAuditConfiguration`, specifying a configuration for every check is optional, and skipped checks are interpreted as disabled. To have accurate drift detection with CloudFormation, include configurations (enabled or disabled) for all the 14 audit checks in your template. For more information on the audit checks see [AWS::IoT::AccountAuditConfiguration AuditCheckConfigurations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditcheckconfigurations.html).

For more information, see [Detecting unmanaged configuration changes to stacks and resources](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html) in the *user guide*.

# AWS::IoT::AccountAuditConfiguration AuditCheckConfiguration
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfiguration"></a>

Which audit checks are enabled and disabled for this account.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfiguration-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfiguration-syntax.json"></a>

```
{
  "[Enabled](#cfn-iot-accountauditconfiguration-auditcheckconfiguration-enabled)" : Boolean
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfiguration-syntax.yaml"></a>

```
  [Enabled](#cfn-iot-accountauditconfiguration-auditcheckconfiguration-enabled): Boolean
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfiguration-properties"></a>

`Enabled`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfiguration-enabled"></a>
True if this audit check is enabled for this account.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::AccountAuditConfiguration AuditCheckConfigurations
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfigurations"></a>

The types of audit checks that can be performed.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfigurations-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfigurations-syntax.json"></a>

```
{
  "[AuthenticatedCognitoRoleOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-authenticatedcognitoroleoverlypermissivecheck)" : AuditCheckConfiguration,
  "[CaCertificateExpiringCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-cacertificateexpiringcheck)" : AuditCheckConfiguration,
  "[CaCertificateKeyQualityCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-cacertificatekeyqualitycheck)" : AuditCheckConfiguration,
  "[ConflictingClientIdsCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-conflictingclientidscheck)" : AuditCheckConfiguration,
  "[DeviceCertificateAgeCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificateagecheck)" : DeviceCertAgeAuditCheckConfiguration,
  "[DeviceCertificateExpiringCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificateexpiringcheck)" : DeviceCertExpirationAuditCheckConfiguration,
  "[DeviceCertificateKeyQualityCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificatekeyqualitycheck)" : AuditCheckConfiguration,
  "[DeviceCertificateSharedCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificatesharedcheck)" : AuditCheckConfiguration,
  "[IntermediateCaRevokedForActiveDeviceCertificatesCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-intermediatecarevokedforactivedevicecertificatescheck)" : AuditCheckConfiguration,
  "[IotPolicyOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotpolicyoverlypermissivecheck)" : AuditCheckConfiguration,
  "[IoTPolicyPotentialMisConfigurationCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotpolicypotentialmisconfigurationcheck)" : AuditCheckConfiguration,
  "[IotRoleAliasAllowsAccessToUnusedServicesCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotrolealiasallowsaccesstounusedservicescheck)" : AuditCheckConfiguration,
  "[IotRoleAliasOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotrolealiasoverlypermissivecheck)" : AuditCheckConfiguration,
  "[LoggingDisabledCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-loggingdisabledcheck)" : AuditCheckConfiguration,
  "[RevokedCaCertificateStillActiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-revokedcacertificatestillactivecheck)" : AuditCheckConfiguration,
  "[RevokedDeviceCertificateStillActiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-revokeddevicecertificatestillactivecheck)" : AuditCheckConfiguration,
  "[UnauthenticatedCognitoRoleOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-unauthenticatedcognitoroleoverlypermissivecheck)" : AuditCheckConfiguration
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfigurations-syntax.yaml"></a>

```
  [AuthenticatedCognitoRoleOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-authenticatedcognitoroleoverlypermissivecheck): 
    AuditCheckConfiguration
  [CaCertificateExpiringCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-cacertificateexpiringcheck): 
    AuditCheckConfiguration
  [CaCertificateKeyQualityCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-cacertificatekeyqualitycheck): 
    AuditCheckConfiguration
  [ConflictingClientIdsCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-conflictingclientidscheck): 
    AuditCheckConfiguration
  [DeviceCertificateAgeCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificateagecheck): 
    DeviceCertAgeAuditCheckConfiguration
  [DeviceCertificateExpiringCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificateexpiringcheck): 
    DeviceCertExpirationAuditCheckConfiguration
  [DeviceCertificateKeyQualityCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificatekeyqualitycheck): 
    AuditCheckConfiguration
  [DeviceCertificateSharedCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificatesharedcheck): 
    AuditCheckConfiguration
  [IntermediateCaRevokedForActiveDeviceCertificatesCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-intermediatecarevokedforactivedevicecertificatescheck): 
    AuditCheckConfiguration
  [IotPolicyOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotpolicyoverlypermissivecheck): 
    AuditCheckConfiguration
  [IoTPolicyPotentialMisConfigurationCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotpolicypotentialmisconfigurationcheck): 
    AuditCheckConfiguration
  [IotRoleAliasAllowsAccessToUnusedServicesCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotrolealiasallowsaccesstounusedservicescheck): 
    AuditCheckConfiguration
  [IotRoleAliasOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotrolealiasoverlypermissivecheck): 
    AuditCheckConfiguration
  [LoggingDisabledCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-loggingdisabledcheck): 
    AuditCheckConfiguration
  [RevokedCaCertificateStillActiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-revokedcacertificatestillactivecheck): 
    AuditCheckConfiguration
  [RevokedDeviceCertificateStillActiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-revokeddevicecertificatestillactivecheck): 
    AuditCheckConfiguration
  [UnauthenticatedCognitoRoleOverlyPermissiveCheck](#cfn-iot-accountauditconfiguration-auditcheckconfigurations-unauthenticatedcognitoroleoverlypermissivecheck): 
    AuditCheckConfiguration
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-auditcheckconfigurations-properties"></a>

`AuthenticatedCognitoRoleOverlyPermissiveCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-authenticatedcognitoroleoverlypermissivecheck"></a>
Checks the permissiveness of an authenticated Amazon Cognito identity pool role. For this check, AWS IoT Device Defender audits all Amazon Cognito identity pools that have been used to connect to the AWS IoT message broker during the 31 days before the audit is performed.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`CaCertificateExpiringCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-cacertificateexpiringcheck"></a>
Checks if a CA certificate is expiring. This check applies to CA certificates expiring within 30 days or that have expired.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`CaCertificateKeyQualityCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-cacertificatekeyqualitycheck"></a>
Checks the quality of the CA certificate key. The quality checks if the key is in a valid format, not expired, and if the key meets a minimum required size. This check applies to CA certificates that are `ACTIVE` or `PENDING_TRANSFER`.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ConflictingClientIdsCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-conflictingclientidscheck"></a>
Checks if multiple devices connect using the same client ID.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DeviceCertificateAgeCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificateagecheck"></a>
Checks when a device certificate has been active for a number of days greater than or equal to the number you specify.  
*Required*: No  
*Type*: [DeviceCertAgeAuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-devicecertageauditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DeviceCertificateExpiringCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificateexpiringcheck"></a>
Checks if a device certificate is expiring. By default, this check applies to device certificates expiring within 30 days or that have expired. You can modify this threshold by configuring the DeviceCertExpirationAuditCheckConfiguration.  
*Required*: No  
*Type*: [DeviceCertExpirationAuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DeviceCertificateKeyQualityCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificatekeyqualitycheck"></a>
Checks the quality of the device certificate key. The quality checks if the key is in a valid format, not expired, signed by a registered certificate authority, and if the key meets a minimum required size.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DeviceCertificateSharedCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-devicecertificatesharedcheck"></a>
Checks if multiple concurrent connections use the same X.509 certificate to authenticate with AWS IoT.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IntermediateCaRevokedForActiveDeviceCertificatesCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-intermediatecarevokedforactivedevicecertificatescheck"></a>
Checks if device certificates are still active despite being revoked by an intermediate CA.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IotPolicyOverlyPermissiveCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotpolicyoverlypermissivecheck"></a>
Checks the permissiveness of a policy attached to an authenticated Amazon Cognito identity pool role.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IoTPolicyPotentialMisConfigurationCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotpolicypotentialmisconfigurationcheck"></a>
Checks if an AWS IoT policy is potentially misconfigured. Misconfigured policies, including overly permissive policies, can cause security incidents like allowing devices access to unintended resources. This check is a warning for you to make sure that only intended actions are allowed before updating the policy.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IotRoleAliasAllowsAccessToUnusedServicesCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotrolealiasallowsaccesstounusedservicescheck"></a>
Checks if a role alias has access to services that haven't been used for the AWS IoT device in the last year.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IotRoleAliasOverlyPermissiveCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-iotrolealiasoverlypermissivecheck"></a>
Checks if the temporary credentials provided by AWS IoT role aliases are overly permissive.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`LoggingDisabledCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-loggingdisabledcheck"></a>
Checks if AWS IoT logs are disabled.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RevokedCaCertificateStillActiveCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-revokedcacertificatestillactivecheck"></a>
Checks if a revoked CA certificate is still active.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RevokedDeviceCertificateStillActiveCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-revokeddevicecertificatestillactivecheck"></a>
Checks if a revoked device certificate is still active.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`UnauthenticatedCognitoRoleOverlyPermissiveCheck`  <a name="cfn-iot-accountauditconfiguration-auditcheckconfigurations-unauthenticatedcognitoroleoverlypermissivecheck"></a>
Checks if policy attached to an unauthenticated Amazon Cognito identity pool role is too permissive.  
*Required*: No  
*Type*: [AuditCheckConfiguration](aws-properties-iot-accountauditconfiguration-auditcheckconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::AccountAuditConfiguration AuditNotificationTarget
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtarget"></a>

Information about the targets to which audit notifications are sent.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtarget-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtarget-syntax.json"></a>

```
{
  "[Enabled](#cfn-iot-accountauditconfiguration-auditnotificationtarget-enabled)" : Boolean,
  "[RoleArn](#cfn-iot-accountauditconfiguration-auditnotificationtarget-rolearn)" : String,
  "[TargetArn](#cfn-iot-accountauditconfiguration-auditnotificationtarget-targetarn)" : String
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtarget-syntax.yaml"></a>

```
  [Enabled](#cfn-iot-accountauditconfiguration-auditnotificationtarget-enabled): Boolean
  [RoleArn](#cfn-iot-accountauditconfiguration-auditnotificationtarget-rolearn): String
  [TargetArn](#cfn-iot-accountauditconfiguration-auditnotificationtarget-targetarn): String
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtarget-properties"></a>

`Enabled`  <a name="cfn-iot-accountauditconfiguration-auditnotificationtarget-enabled"></a>
True if notifications to the target are enabled.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-accountauditconfiguration-auditnotificationtarget-rolearn"></a>
The ARN of the role that grants permission to send notifications to the target.  
*Required*: No  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TargetArn`  <a name="cfn-iot-accountauditconfiguration-auditnotificationtarget-targetarn"></a>
The ARN of the target (SNS topic) to which audit notifications are sent.  
*Required*: No  
*Type*: String  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::AccountAuditConfiguration AuditNotificationTargetConfigurations
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtargetconfigurations"></a>

The configuration of the audit notification target.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtargetconfigurations-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtargetconfigurations-syntax.json"></a>

```
{
  "[Sns](#cfn-iot-accountauditconfiguration-auditnotificationtargetconfigurations-sns)" : AuditNotificationTarget
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtargetconfigurations-syntax.yaml"></a>

```
  [Sns](#cfn-iot-accountauditconfiguration-auditnotificationtargetconfigurations-sns): 
    AuditNotificationTarget
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-auditnotificationtargetconfigurations-properties"></a>

`Sns`  <a name="cfn-iot-accountauditconfiguration-auditnotificationtargetconfigurations-sns"></a>
The `Sns` notification target.  
*Required*: No  
*Type*: [AuditNotificationTarget](aws-properties-iot-accountauditconfiguration-auditnotificationtarget.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::AccountAuditConfiguration CertAgeCheckCustomConfiguration
<a name="aws-properties-iot-accountauditconfiguration-certagecheckcustomconfiguration"></a>

Configuration structure containing settings for the device certificate age check.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-certagecheckcustomconfiguration-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-certagecheckcustomconfiguration-syntax.json"></a>

```
{
  "[CertAgeThresholdInDays](#cfn-iot-accountauditconfiguration-certagecheckcustomconfiguration-certagethresholdindays)" : String
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-certagecheckcustomconfiguration-syntax.yaml"></a>

```
  [CertAgeThresholdInDays](#cfn-iot-accountauditconfiguration-certagecheckcustomconfiguration-certagethresholdindays): String
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-certagecheckcustomconfiguration-properties"></a>

`CertAgeThresholdInDays`  <a name="cfn-iot-accountauditconfiguration-certagecheckcustomconfiguration-certagethresholdindays"></a>
The number of days that defines when a device certificate is considered to have aged. The check will report a finding if a certificate has been active for a number of days greater than or equal to this threshold value.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `64`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::AccountAuditConfiguration CertExpirationCheckCustomConfiguration
<a name="aws-properties-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration"></a>

Configuration structure containing settings for the device certificate expiration check.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration-syntax.json"></a>

```
{
  "[CertExpirationThresholdInDays](#cfn-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration-certexpirationthresholdindays)" : String
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration-syntax.yaml"></a>

```
  [CertExpirationThresholdInDays](#cfn-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration-certexpirationthresholdindays): String
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration-properties"></a>

`CertExpirationThresholdInDays`  <a name="cfn-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration-certexpirationthresholdindays"></a>
The number of days before expiration that defines when a device certificate is considered to be approaching expiration. The check will report a finding if a certificate will expire within this number of days.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `64`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::AccountAuditConfiguration DeviceCertAgeAuditCheckConfiguration
<a name="aws-properties-iot-accountauditconfiguration-devicecertageauditcheckconfiguration"></a>

Configuration for the device certificate age audit check.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-syntax.json"></a>

```
{
  "[Configuration](#cfn-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-configuration)" : CertAgeCheckCustomConfiguration,
  "[Enabled](#cfn-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-enabled)" : Boolean
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-syntax.yaml"></a>

```
  [Configuration](#cfn-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-configuration): 
    CertAgeCheckCustomConfiguration
  [Enabled](#cfn-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-enabled): Boolean
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-properties"></a>

`Configuration`  <a name="cfn-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-configuration"></a>
Configuration settings for the device certificate age check, including the threshold in days for certificate age. This configuration is of type `CertAgeCheckCustomConfiguration`.  
*Required*: No  
*Type*: [CertAgeCheckCustomConfiguration](aws-properties-iot-accountauditconfiguration-certagecheckcustomconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Enabled`  <a name="cfn-iot-accountauditconfiguration-devicecertageauditcheckconfiguration-enabled"></a>
True if this audit check is enabled for this account.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::AccountAuditConfiguration DeviceCertExpirationAuditCheckConfiguration
<a name="aws-properties-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration"></a>

Configuration for the device certificate expiration audit check.

## Syntax
<a name="aws-properties-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-syntax"></a>

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

### JSON
<a name="aws-properties-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-syntax.json"></a>

```
{
  "[Configuration](#cfn-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-configuration)" : CertExpirationCheckCustomConfiguration,
  "[Enabled](#cfn-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-enabled)" : Boolean
}
```

### YAML
<a name="aws-properties-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-syntax.yaml"></a>

```
  [Configuration](#cfn-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-configuration): 
    CertExpirationCheckCustomConfiguration
  [Enabled](#cfn-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-enabled): Boolean
```

## Properties
<a name="aws-properties-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-properties"></a>

`Configuration`  <a name="cfn-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-configuration"></a>
Configuration settings for the device certificate expiration check, including the threshold in days before expiration. This configuration is of type `CertExpirationCheckCustomConfiguration`  
*Required*: No  
*Type*: [CertExpirationCheckCustomConfiguration](aws-properties-iot-accountauditconfiguration-certexpirationcheckcustomconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Enabled`  <a name="cfn-iot-accountauditconfiguration-devicecertexpirationauditcheckconfiguration-enabled"></a>
True if this audit check is enabled for this account.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Authorizer
<a name="aws-resource-iot-authorizer"></a>

Specifies an authorizer.

## Syntax
<a name="aws-resource-iot-authorizer-syntax"></a>

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

### JSON
<a name="aws-resource-iot-authorizer-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::Authorizer",
  "Properties" : {
      "[AuthorizerFunctionArn](#cfn-iot-authorizer-authorizerfunctionarn)" : String,
      "[AuthorizerName](#cfn-iot-authorizer-authorizername)" : String,
      "[EnableCachingForHttp](#cfn-iot-authorizer-enablecachingforhttp)" : Boolean,
      "[SigningDisabled](#cfn-iot-authorizer-signingdisabled)" : Boolean,
      "[Status](#cfn-iot-authorizer-status)" : String,
      "[Tags](#cfn-iot-authorizer-tags)" : [ Tag, ... ],
      "[TokenKeyName](#cfn-iot-authorizer-tokenkeyname)" : String,
      "[TokenSigningPublicKeys](#cfn-iot-authorizer-tokensigningpublickeys)" : {Key: Value, ...}
    }
}
```

### YAML
<a name="aws-resource-iot-authorizer-syntax.yaml"></a>

```
Type: AWS::IoT::Authorizer
Properties:
  [AuthorizerFunctionArn](#cfn-iot-authorizer-authorizerfunctionarn): String
  [AuthorizerName](#cfn-iot-authorizer-authorizername): String
  [EnableCachingForHttp](#cfn-iot-authorizer-enablecachingforhttp): Boolean
  [SigningDisabled](#cfn-iot-authorizer-signingdisabled): Boolean
  [Status](#cfn-iot-authorizer-status): String
  [Tags](#cfn-iot-authorizer-tags): 
    - Tag
  [TokenKeyName](#cfn-iot-authorizer-tokenkeyname): String
  [TokenSigningPublicKeys](#cfn-iot-authorizer-tokensigningpublickeys): 
    Key: Value
```

## Properties
<a name="aws-resource-iot-authorizer-properties"></a>

`AuthorizerFunctionArn`  <a name="cfn-iot-authorizer-authorizerfunctionarn"></a>
The authorizer's Lambda function ARN.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[\s\S]*`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`AuthorizerName`  <a name="cfn-iot-authorizer-authorizername"></a>
The authorizer name.  
*Required*: No  
*Type*: String  
*Pattern*: `[\w=,@-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`EnableCachingForHttp`  <a name="cfn-iot-authorizer-enablecachingforhttp"></a>
When `true`, the result from the authorizer's Lambda function is cached for clients that use persistent HTTP connections. The results are cached for the time specified by the Lambda function in `refreshAfterInSeconds`. This value doesn't affect authorization of clients that use MQTT connections.   
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SigningDisabled`  <a name="cfn-iot-authorizer-signingdisabled"></a>
Specifies whether AWS IoT validates the token signature in an authorization request.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Status`  <a name="cfn-iot-authorizer-status"></a>
The status of the authorizer.  
Valid values: `ACTIVE` \$1 `INACTIVE`  
*Required*: No  
*Type*: String  
*Allowed values*: `ACTIVE | INACTIVE`  
*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-iot-authorizer-tags"></a>
Metadata which can be used to manage the custom authorizer.  
For URI Request parameters use format: ...key1=value1&key2=value2...  
For the CLI command-line parameter use format: &&tags "key1=value1&key2=value2..."  
For the cli-input-json file use format: "tags": "key1=value1&key2=value2..."
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-authorizer-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TokenKeyName`  <a name="cfn-iot-authorizer-tokenkeyname"></a>
The key used to extract the token from the HTTP headers.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9_-]+`  
*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)

`TokenSigningPublicKeys`  <a name="cfn-iot-authorizer-tokensigningpublickeys"></a>
The public keys used to validate the token signature returned by your custom authentication service.  
*Required*: No  
*Type*: Object of String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Maximum*: `5120`  
*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-iot-authorizer-return-values"></a>

### Ref
<a name="aws-resource-iot-authorizer-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the authorizer name. For example:

 `{ "Ref": "MyAuthorizer" }` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-authorizer-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the authorizer.

# AWS::IoT::Authorizer Tag
<a name="aws-properties-iot-authorizer-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-authorizer-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-authorizer-tag-key): String
  [Value](#cfn-iot-authorizer-tag-value): String
```

## Properties
<a name="aws-properties-iot-authorizer-tag-properties"></a>

`Key`  <a name="cfn-iot-authorizer-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-authorizer-tag-value"></a>
The tag's value.  
*Required*: Yes  
*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)

# AWS::IoT::BillingGroup
<a name="aws-resource-iot-billinggroup"></a>

Creates a new billing group.

Requires permission to access the [CreateBillingGroup](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action.

## Syntax
<a name="aws-resource-iot-billinggroup-syntax"></a>

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

### JSON
<a name="aws-resource-iot-billinggroup-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::BillingGroup",
  "Properties" : {
      "[BillingGroupName](#cfn-iot-billinggroup-billinggroupname)" : String,
      "[BillingGroupProperties](#cfn-iot-billinggroup-billinggroupproperties)" : BillingGroupProperties,
      "[Tags](#cfn-iot-billinggroup-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-billinggroup-syntax.yaml"></a>

```
Type: AWS::IoT::BillingGroup
Properties:
  [BillingGroupName](#cfn-iot-billinggroup-billinggroupname): String
  [BillingGroupProperties](#cfn-iot-billinggroup-billinggroupproperties): 
    BillingGroupProperties
  [Tags](#cfn-iot-billinggroup-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-billinggroup-properties"></a>

`BillingGroupName`  <a name="cfn-iot-billinggroup-billinggroupname"></a>
The name of the billing group.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`BillingGroupProperties`  <a name="cfn-iot-billinggroup-billinggroupproperties"></a>
The properties of the billing group.  
*Required*: No  
*Type*: [BillingGroupProperties](aws-properties-iot-billinggroup-billinggroupproperties.md)  
*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-iot-billinggroup-tags"></a>
Metadata which can be used to manage the billing group.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-billinggroup-tag.md)  
*Maximum*: `50`  
*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-iot-billinggroup-return-values"></a>

### Ref
<a name="aws-resource-iot-billinggroup-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the billing group id.

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-billinggroup-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The ARN of the billing group.

`Id`  <a name="Id-fn::getatt"></a>
The ID of the billing group.

# AWS::IoT::BillingGroup BillingGroupProperties
<a name="aws-properties-iot-billinggroup-billinggroupproperties"></a>

The properties of a billing group.

## Syntax
<a name="aws-properties-iot-billinggroup-billinggroupproperties-syntax"></a>

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

### JSON
<a name="aws-properties-iot-billinggroup-billinggroupproperties-syntax.json"></a>

```
{
  "[BillingGroupDescription](#cfn-iot-billinggroup-billinggroupproperties-billinggroupdescription)" : String
}
```

### YAML
<a name="aws-properties-iot-billinggroup-billinggroupproperties-syntax.yaml"></a>

```
  [BillingGroupDescription](#cfn-iot-billinggroup-billinggroupproperties-billinggroupdescription): String
```

## Properties
<a name="aws-properties-iot-billinggroup-billinggroupproperties-properties"></a>

`BillingGroupDescription`  <a name="cfn-iot-billinggroup-billinggroupproperties-billinggroupdescription"></a>
The description of the billing group.  
*Required*: No  
*Type*: String  
*Pattern*: `[\p{Graph}\x20]*`  
*Maximum*: `2028`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::BillingGroup Tag
<a name="aws-properties-iot-billinggroup-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-billinggroup-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-billinggroup-tag-key): String
  [Value](#cfn-iot-billinggroup-tag-value): String
```

## Properties
<a name="aws-properties-iot-billinggroup-tag-properties"></a>

`Key`  <a name="cfn-iot-billinggroup-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-billinggroup-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::CACertificate
<a name="aws-resource-iot-cacertificate"></a>

Specifies a CA certificate.

## Syntax
<a name="aws-resource-iot-cacertificate-syntax"></a>

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

### JSON
<a name="aws-resource-iot-cacertificate-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::CACertificate",
  "Properties" : {
      "[AutoRegistrationStatus](#cfn-iot-cacertificate-autoregistrationstatus)" : String,
      "[CACertificatePem](#cfn-iot-cacertificate-cacertificatepem)" : String,
      "[CertificateMode](#cfn-iot-cacertificate-certificatemode)" : String,
      "[RegistrationConfig](#cfn-iot-cacertificate-registrationconfig)" : RegistrationConfig,
      "[RemoveAutoRegistration](#cfn-iot-cacertificate-removeautoregistration)" : Boolean,
      "[Status](#cfn-iot-cacertificate-status)" : String,
      "[Tags](#cfn-iot-cacertificate-tags)" : [ Tag, ... ],
      "[VerificationCertificatePem](#cfn-iot-cacertificate-verificationcertificatepem)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-cacertificate-syntax.yaml"></a>

```
Type: AWS::IoT::CACertificate
Properties:
  [AutoRegistrationStatus](#cfn-iot-cacertificate-autoregistrationstatus): String
  [CACertificatePem](#cfn-iot-cacertificate-cacertificatepem): String
  [CertificateMode](#cfn-iot-cacertificate-certificatemode): String
  [RegistrationConfig](#cfn-iot-cacertificate-registrationconfig): 
    RegistrationConfig
  [RemoveAutoRegistration](#cfn-iot-cacertificate-removeautoregistration): Boolean
  [Status](#cfn-iot-cacertificate-status): String
  [Tags](#cfn-iot-cacertificate-tags): 
    - Tag
  [VerificationCertificatePem](#cfn-iot-cacertificate-verificationcertificatepem): String
```

## Properties
<a name="aws-resource-iot-cacertificate-properties"></a>

`AutoRegistrationStatus`  <a name="cfn-iot-cacertificate-autoregistrationstatus"></a>
Whether the CA certificate is configured for auto registration of device certificates. Valid values are "ENABLE" and "DISABLE".  
*Required*: No  
*Type*: String  
*Allowed values*: `ENABLE | DISABLE`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`CACertificatePem`  <a name="cfn-iot-cacertificate-cacertificatepem"></a>
The certificate data in PEM format.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[\s\S]*`  
*Minimum*: `1`  
*Maximum*: `65536`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`CertificateMode`  <a name="cfn-iot-cacertificate-certificatemode"></a>
The mode of the CA.   
All the device certificates that are registered using this CA will be registered in the same mode as the CA. For more information about certificate mode for device certificates, see [certificate mode](https://docs.aws.amazon.com//iot/latest/apireference/API_CertificateDescription.html#iot-Type-CertificateDescription-certificateMode).  
Valid values are "DEFAULT" and "SNI\$1ONLY".  
*Required*: No  
*Type*: String  
*Allowed values*: `DEFAULT | SNI_ONLY`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`RegistrationConfig`  <a name="cfn-iot-cacertificate-registrationconfig"></a>
Information about the registration configuration.  
*Required*: No  
*Type*: [RegistrationConfig](aws-properties-iot-cacertificate-registrationconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RemoveAutoRegistration`  <a name="cfn-iot-cacertificate-removeautoregistration"></a>
If true, removes auto registration.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Status`  <a name="cfn-iot-cacertificate-status"></a>
The status of the CA certificate.  
Valid values are "ACTIVE" and "INACTIVE".  
*Required*: Yes  
*Type*: String  
*Allowed values*: `ACTIVE | INACTIVE`  
*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-iot-cacertificate-tags"></a>
An array of key-value pairs to apply to this resource.  
For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-cacertificate-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`VerificationCertificatePem`  <a name="cfn-iot-cacertificate-verificationcertificatepem"></a>
The private key verification certificate.  
*Required*: No  
*Type*: String  
*Pattern*: `[\s\S]*`  
*Minimum*: `1`  
*Maximum*: `65536`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-cacertificate-return-values"></a>

### Ref
<a name="aws-resource-iot-cacertificate-return-values-ref"></a>

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

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-cacertificate-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
Returns the Amazon Resource Name (ARN) for the CA certificate. For example:  
 `{ "Fn::GetAtt": ["MyCACertificate", "Arn"] }`   
A value similar to the following is returned:  
 `arn:aws:iot:us-east-1:123456789012:cacert/a6be6b84559801927e35a8f901fae08b5971d78d1562e29504ff9663b276a5f5` 

`Id`  <a name="Id-fn::getatt"></a>
The CA certificate ID.

# AWS::IoT::CACertificate RegistrationConfig
<a name="aws-properties-iot-cacertificate-registrationconfig"></a>

The registration configuration.

## Syntax
<a name="aws-properties-iot-cacertificate-registrationconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-cacertificate-registrationconfig-syntax.json"></a>

```
{
  "[RoleArn](#cfn-iot-cacertificate-registrationconfig-rolearn)" : String,
  "[TemplateBody](#cfn-iot-cacertificate-registrationconfig-templatebody)" : String,
  "[TemplateName](#cfn-iot-cacertificate-registrationconfig-templatename)" : String
}
```

### YAML
<a name="aws-properties-iot-cacertificate-registrationconfig-syntax.yaml"></a>

```
  [RoleArn](#cfn-iot-cacertificate-registrationconfig-rolearn): String
  [TemplateBody](#cfn-iot-cacertificate-registrationconfig-templatebody): String
  [TemplateName](#cfn-iot-cacertificate-registrationconfig-templatename): String
```

## Properties
<a name="aws-properties-iot-cacertificate-registrationconfig-properties"></a>

`RoleArn`  <a name="cfn-iot-cacertificate-registrationconfig-rolearn"></a>
The ARN of the role.  
*Required*: No  
*Type*: String  
*Pattern*: `arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+`  
*Minimum*: `20`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TemplateBody`  <a name="cfn-iot-cacertificate-registrationconfig-templatebody"></a>
The template body.  
*Required*: No  
*Type*: String  
*Pattern*: `[\s\S]*`  
*Minimum*: `0`  
*Maximum*: `10240`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TemplateName`  <a name="cfn-iot-cacertificate-registrationconfig-templatename"></a>
The name of the provisioning template.  
*Required*: No  
*Type*: String  
*Pattern*: `^[0-9A-Za-z_-]+$`  
*Minimum*: `1`  
*Maximum*: `36`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::CACertificate Tag
<a name="aws-properties-iot-cacertificate-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-cacertificate-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-cacertificate-tag-key): String
  [Value](#cfn-iot-cacertificate-tag-value): String
```

## Properties
<a name="aws-properties-iot-cacertificate-tag-properties"></a>

`Key`  <a name="cfn-iot-cacertificate-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `127`  
*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-iot-cacertificate-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Certificate
<a name="aws-resource-iot-certificate"></a>

Use the `AWS::IoT::Certificate` resource to declare an AWS IoT X.509 certificate. For information about working with X.509 certificates, see [X.509 Client Certificates](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html) in the *AWS IoT Developer Guide*.

## Syntax
<a name="aws-resource-iot-certificate-syntax"></a>

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

### JSON
<a name="aws-resource-iot-certificate-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::Certificate",
  "Properties" : {
      "[CACertificatePem](#cfn-iot-certificate-cacertificatepem)" : String,
      "[CertificateMode](#cfn-iot-certificate-certificatemode)" : String,
      "[CertificatePem](#cfn-iot-certificate-certificatepem)" : String,
      "[CertificateSigningRequest](#cfn-iot-certificate-certificatesigningrequest)" : String,
      "[Status](#cfn-iot-certificate-status)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-certificate-syntax.yaml"></a>

```
Type: AWS::IoT::Certificate
Properties:
  [CACertificatePem](#cfn-iot-certificate-cacertificatepem): String
  [CertificateMode](#cfn-iot-certificate-certificatemode): String
  [CertificatePem](#cfn-iot-certificate-certificatepem): String
  [CertificateSigningRequest](#cfn-iot-certificate-certificatesigningrequest): String
  [Status](#cfn-iot-certificate-status): String
```

## Properties
<a name="aws-resource-iot-certificate-properties"></a>

`CACertificatePem`  <a name="cfn-iot-certificate-cacertificatepem"></a>
The CA certificate used to sign the device certificate being registered, not available when CertificateMode is SNI\$1ONLY.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `65536`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`CertificateMode`  <a name="cfn-iot-certificate-certificatemode"></a>
Specifies which mode of certificate registration to use with this resource. Valid options are DEFAULT with CaCertificatePem and CertificatePem, SNI\$1ONLY with CertificatePem, and Default with CertificateSigningRequest.  
`DEFAULT`: A certificate in `DEFAULT` mode is either generated by AWS IoT Core or registered with an issuer certificate authority (CA). Devices with certificates in `DEFAULT` mode aren't required to send the Server Name Indication (SNI) extension when connecting to AWS IoT Core. However, to use features such as custom domains and VPC endpoints, we recommend that you use the SNI extension when connecting to AWS IoT Core.  
`SNI_ONLY`: A certificate in `SNI_ONLY` mode is registered without an issuer CA. Devices with certificates in `SNI_ONLY` mode must send the SNI extension when connecting to AWS IoT Core.  
*Required*: No  
*Type*: String  
*Allowed values*: `DEFAULT | SNI_ONLY`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`CertificatePem`  <a name="cfn-iot-certificate-certificatepem"></a>
The certificate data in PEM format. Requires SNI\$1ONLY for the certificate mode or the accompanying CACertificatePem for registration.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `65536`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`CertificateSigningRequest`  <a name="cfn-iot-certificate-certificatesigningrequest"></a>
The certificate signing request (CSR).  
*Required*: No  
*Type*: String  
*Pattern*: `[\s\S]*`  
*Minimum*: `1`  
*Maximum*: `4096`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Status`  <a name="cfn-iot-certificate-status"></a>
The status of the certificate.  
Valid values are ACTIVE, INACTIVE, REVOKED, PENDING\$1TRANSFER, and PENDING\$1ACTIVATION.  
The status value REGISTER\$1INACTIVE is deprecated and should not be used.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `ACTIVE | INACTIVE | REVOKED | PENDING_TRANSFER | PENDING_ACTIVATION`  
*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-iot-certificate-return-values"></a>

### Ref
<a name="aws-resource-iot-certificate-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the certificate ID. For example:

 `{ "Ref": "MyCertificate" }` 

A value similar to the following is returned:

 `a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-certificate-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
Returns the Amazon Resource Name (ARN) for the certificate. For example:  
 `{ "Fn::GetAtt": ["MyCertificate", "Arn"] }`   
A value similar to the following is returned:  
 `arn:aws:iot:ap-southeast-2:123456789012:cert/a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2` 

`Id`  <a name="Id-fn::getatt"></a>
The certificate ID.

# AWS::IoT::CertificateProvider
<a name="aws-resource-iot-certificateprovider"></a>

Creates a certificate provider. AWS IoT Core certificate provider lets you customize how to sign a certificate signing request (CSR) in fleet provisioning. For more information, see [Self-managed certificate signing using AWS IoT Corecertificate provider](https://docs.aws.amazon.com/iot/latest/developerguide/provisioning-cert-provider.html) from the *AWS IoT Core Developer Guide*.

## Syntax
<a name="aws-resource-iot-certificateprovider-syntax"></a>

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

### JSON
<a name="aws-resource-iot-certificateprovider-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::CertificateProvider",
  "Properties" : {
      "[AccountDefaultForOperations](#cfn-iot-certificateprovider-accountdefaultforoperations)" : [ String, ... ],
      "[CertificateProviderName](#cfn-iot-certificateprovider-certificateprovidername)" : String,
      "[LambdaFunctionArn](#cfn-iot-certificateprovider-lambdafunctionarn)" : String,
      "[Tags](#cfn-iot-certificateprovider-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-certificateprovider-syntax.yaml"></a>

```
Type: AWS::IoT::CertificateProvider
Properties:
  [AccountDefaultForOperations](#cfn-iot-certificateprovider-accountdefaultforoperations): 
    - String
  [CertificateProviderName](#cfn-iot-certificateprovider-certificateprovidername): String
  [LambdaFunctionArn](#cfn-iot-certificateprovider-lambdafunctionarn): String
  [Tags](#cfn-iot-certificateprovider-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-certificateprovider-properties"></a>

`AccountDefaultForOperations`  <a name="cfn-iot-certificateprovider-accountdefaultforoperations"></a>
A list of the operations that the certificate provider will use to generate certificates. Valid value: `CreateCertificateFromCsr`.  
*Required*: Yes  
*Type*: Array of String  
*Minimum*: `1`  
*Maximum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`CertificateProviderName`  <a name="cfn-iot-certificateprovider-certificateprovidername"></a>
The name of the certificate provider.  
*Required*: No  
*Type*: String  
*Pattern*: `[\w=,@-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`LambdaFunctionArn`  <a name="cfn-iot-certificateprovider-lambdafunctionarn"></a>
The ARN of the Lambda function.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `170`  
*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-iot-certificateprovider-tags"></a>
Metadata that can be used to manage the certificate provider.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-certificateprovider-tag.md)  
*Maximum*: `50`  
*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-iot-certificateprovider-return-values"></a>

### Ref
<a name="aws-resource-iot-certificateprovider-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the ID of the certificate provider. For example:

 `{ "Ref": "MyCertificateProvider" }` 

A value similar to the following is returned:

 `a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-certificateprovider-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
Returns the Amazon Resource Name (ARN) for the certificate. For example:  
 `{ "Fn::GetAtt": ["MyCertificateProvider", "Arn"] }`   
A value similar to the following is returned:  
 `arn:aws:iot:ap-southeast-2:123456789012:certprovider/my-certificate-provider` 

# AWS::IoT::CertificateProvider Tag
<a name="aws-properties-iot-certificateprovider-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-certificateprovider-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-certificateprovider-tag-key): String
  [Value](#cfn-iot-certificateprovider-tag-value): String
```

## Properties
<a name="aws-properties-iot-certificateprovider-tag-properties"></a>

`Key`  <a name="cfn-iot-certificateprovider-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `127`  
*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-iot-certificateprovider-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Command
<a name="aws-resource-iot-command"></a>

<a name="aws-resource-iot-command-description"></a>The `AWS::IoT::Command` resource Property description not available. for IoT.

## Syntax
<a name="aws-resource-iot-command-syntax"></a>

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

### JSON
<a name="aws-resource-iot-command-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::Command",
  "Properties" : {
      "[CommandId](#cfn-iot-command-commandid)" : String,
      "[CreatedAt](#cfn-iot-command-createdat)" : String,
      "[Deprecated](#cfn-iot-command-deprecated)" : Boolean,
      "[Description](#cfn-iot-command-description)" : String,
      "[DisplayName](#cfn-iot-command-displayname)" : String,
      "[LastUpdatedAt](#cfn-iot-command-lastupdatedat)" : String,
      "[MandatoryParameters](#cfn-iot-command-mandatoryparameters)" : [ CommandParameter, ... ],
      "[Namespace](#cfn-iot-command-namespace)" : String,
      "[Payload](#cfn-iot-command-payload)" : CommandPayload,
      "[PayloadTemplate](#cfn-iot-command-payloadtemplate)" : String,
      "[PendingDeletion](#cfn-iot-command-pendingdeletion)" : Boolean,
      "[Preprocessor](#cfn-iot-command-preprocessor)" : CommandPreprocessor,
      "[RoleArn](#cfn-iot-command-rolearn)" : String,
      "[Tags](#cfn-iot-command-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-command-syntax.yaml"></a>

```
Type: AWS::IoT::Command
Properties:
  [CommandId](#cfn-iot-command-commandid): String
  [CreatedAt](#cfn-iot-command-createdat): String
  [Deprecated](#cfn-iot-command-deprecated): Boolean
  [Description](#cfn-iot-command-description): String
  [DisplayName](#cfn-iot-command-displayname): String
  [LastUpdatedAt](#cfn-iot-command-lastupdatedat): String
  [MandatoryParameters](#cfn-iot-command-mandatoryparameters): 
    - CommandParameter
  [Namespace](#cfn-iot-command-namespace): String
  [Payload](#cfn-iot-command-payload): 
    CommandPayload
  [PayloadTemplate](#cfn-iot-command-payloadtemplate): String
  [PendingDeletion](#cfn-iot-command-pendingdeletion): Boolean
  [Preprocessor](#cfn-iot-command-preprocessor): 
    CommandPreprocessor
  [RoleArn](#cfn-iot-command-rolearn): String
  [Tags](#cfn-iot-command-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-command-properties"></a>

`CommandId`  <a name="cfn-iot-command-commandid"></a>
The unique identifier of the command.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^[a-zA-Z0-9_-]+$`  
*Minimum*: `1`  
*Maximum*: `64`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`CreatedAt`  <a name="cfn-iot-command-createdat"></a>
The timestamp, when the command was created.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Deprecated`  <a name="cfn-iot-command-deprecated"></a>
Indicates whether the command has been deprecated.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Description`  <a name="cfn-iot-command-description"></a>
The description of the command parameter.  
*Required*: No  
*Type*: String  
*Maximum*: `2028`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DisplayName`  <a name="cfn-iot-command-displayname"></a>
The display name of the command.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`LastUpdatedAt`  <a name="cfn-iot-command-lastupdatedat"></a>
The timestamp, when the command was last updated.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MandatoryParameters`  <a name="cfn-iot-command-mandatoryparameters"></a>
Property description not available.  
*Required*: No  
*Type*: Array of [CommandParameter](aws-properties-iot-command-commandparameter.md)  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Namespace`  <a name="cfn-iot-command-namespace"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Allowed values*: `AWS-IoT | AWS-IoT-FleetWise`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Payload`  <a name="cfn-iot-command-payload"></a>
Property description not available.  
*Required*: No  
*Type*: [CommandPayload](aws-properties-iot-command-commandpayload.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PayloadTemplate`  <a name="cfn-iot-command-payloadtemplate"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Maximum*: `32768`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`PendingDeletion`  <a name="cfn-iot-command-pendingdeletion"></a>
Indicates whether the command is pending deletion.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Preprocessor`  <a name="cfn-iot-command-preprocessor"></a>
Property description not available.  
*Required*: No  
*Type*: [CommandPreprocessor](aws-properties-iot-command-commandpreprocessor.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`RoleArn`  <a name="cfn-iot-command-rolearn"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2028`  
*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-iot-command-tags"></a>
Property description not available.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-command-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-iot-command-return-values"></a>

### Ref
<a name="aws-resource-iot-command-return-values-ref"></a>

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

#### 
<a name="aws-resource-iot-command-return-values-fn--getatt-fn--getatt"></a>

`CommandArn`  <a name="CommandArn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the command.

# AWS::IoT::Command AwsJsonSubstitutionCommandPreprocessorConfig
<a name="aws-properties-iot-command-awsjsonsubstitutioncommandpreprocessorconfig"></a>

<a name="aws-properties-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-description"></a>The `AwsJsonSubstitutionCommandPreprocessorConfig` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-syntax.json"></a>

```
{
  "[OutputFormat](#cfn-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-outputformat)" : String
}
```

### YAML
<a name="aws-properties-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-syntax.yaml"></a>

```
  [OutputFormat](#cfn-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-outputformat): String
```

## Properties
<a name="aws-properties-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-properties"></a>

`OutputFormat`  <a name="cfn-iot-command-awsjsonsubstitutioncommandpreprocessorconfig-outputformat"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `JSON | CBOR`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::Command CommandParameter
<a name="aws-properties-iot-command-commandparameter"></a>

<a name="aws-properties-iot-command-commandparameter-description"></a>The `CommandParameter` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-commandparameter-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-commandparameter-syntax.json"></a>

```
{
  "[DefaultValue](#cfn-iot-command-commandparameter-defaultvalue)" : CommandParameterValue,
  "[Description](#cfn-iot-command-commandparameter-description)" : String,
  "[Name](#cfn-iot-command-commandparameter-name)" : String,
  "[Type](#cfn-iot-command-commandparameter-type)" : String,
  "[Value](#cfn-iot-command-commandparameter-value)" : CommandParameterValue,
  "[ValueConditions](#cfn-iot-command-commandparameter-valueconditions)" : [ CommandParameterValueCondition, ... ]
}
```

### YAML
<a name="aws-properties-iot-command-commandparameter-syntax.yaml"></a>

```
  [DefaultValue](#cfn-iot-command-commandparameter-defaultvalue): 
    CommandParameterValue
  [Description](#cfn-iot-command-commandparameter-description): String
  [Name](#cfn-iot-command-commandparameter-name): String
  [Type](#cfn-iot-command-commandparameter-type): String
  [Value](#cfn-iot-command-commandparameter-value): 
    CommandParameterValue
  [ValueConditions](#cfn-iot-command-commandparameter-valueconditions): 
    - CommandParameterValueCondition
```

## Properties
<a name="aws-properties-iot-command-commandparameter-properties"></a>

`DefaultValue`  <a name="cfn-iot-command-commandparameter-defaultvalue"></a>
Property description not available.  
*Required*: No  
*Type*: [CommandParameterValue](aws-properties-iot-command-commandparametervalue.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Description`  <a name="cfn-iot-command-commandparameter-description"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Maximum*: `2028`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Name`  <a name="cfn-iot-command-commandparameter-name"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^[.$a-zA-Z0-9_-]+$`  
*Minimum*: `1`  
*Maximum*: `192`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Type`  <a name="cfn-iot-command-commandparameter-type"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Allowed values*: `STRING | INTEGER | DOUBLE | LONG | UNSIGNEDLONG | BOOLEAN | BINARY`  
*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-iot-command-commandparameter-value"></a>
Property description not available.  
*Required*: No  
*Type*: [CommandParameterValue](aws-properties-iot-command-commandparametervalue.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ValueConditions`  <a name="cfn-iot-command-commandparameter-valueconditions"></a>
Property description not available.  
*Required*: No  
*Type*: Array of [CommandParameterValueCondition](aws-properties-iot-command-commandparametervaluecondition.md)  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Command CommandParameterValue
<a name="aws-properties-iot-command-commandparametervalue"></a>

<a name="aws-properties-iot-command-commandparametervalue-description"></a>The `CommandParameterValue` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-commandparametervalue-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-commandparametervalue-syntax.json"></a>

```
{
  "[B](#cfn-iot-command-commandparametervalue-b)" : Boolean,
  "[BIN](#cfn-iot-command-commandparametervalue-bin)" : String,
  "[D](#cfn-iot-command-commandparametervalue-d)" : Number,
  "[I](#cfn-iot-command-commandparametervalue-i)" : Integer,
  "[L](#cfn-iot-command-commandparametervalue-l)" : String,
  "[S](#cfn-iot-command-commandparametervalue-s)" : String,
  "[UL](#cfn-iot-command-commandparametervalue-ul)" : String
}
```

### YAML
<a name="aws-properties-iot-command-commandparametervalue-syntax.yaml"></a>

```
  [B](#cfn-iot-command-commandparametervalue-b): Boolean
  [BIN](#cfn-iot-command-commandparametervalue-bin): String
  [D](#cfn-iot-command-commandparametervalue-d): Number
  [I](#cfn-iot-command-commandparametervalue-i): Integer
  [L](#cfn-iot-command-commandparametervalue-l): String
  [S](#cfn-iot-command-commandparametervalue-s): String
  [UL](#cfn-iot-command-commandparametervalue-ul): String
```

## Properties
<a name="aws-properties-iot-command-commandparametervalue-properties"></a>

`B`  <a name="cfn-iot-command-commandparametervalue-b"></a>
Property description not available.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`BIN`  <a name="cfn-iot-command-commandparametervalue-bin"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`D`  <a name="cfn-iot-command-commandparametervalue-d"></a>
Property description not available.  
*Required*: No  
*Type*: Number  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`I`  <a name="cfn-iot-command-commandparametervalue-i"></a>
Property description not available.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`L`  <a name="cfn-iot-command-commandparametervalue-l"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Pattern*: `^-?\d+$`  
*Maximum*: `19`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`S`  <a name="cfn-iot-command-commandparametervalue-s"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`UL`  <a name="cfn-iot-command-commandparametervalue-ul"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Pattern*: `^[0-9]*$`  
*Minimum*: `1`  
*Maximum*: `20`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Command CommandParameterValueComparisonOperand
<a name="aws-properties-iot-command-commandparametervaluecomparisonoperand"></a>

<a name="aws-properties-iot-command-commandparametervaluecomparisonoperand-description"></a>The `CommandParameterValueComparisonOperand` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-commandparametervaluecomparisonoperand-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-commandparametervaluecomparisonoperand-syntax.json"></a>

```
{
  "[Number](#cfn-iot-command-commandparametervaluecomparisonoperand-number)" : String,
  "[NumberRange](#cfn-iot-command-commandparametervaluecomparisonoperand-numberrange)" : CommandParameterValueNumberRange,
  "[Numbers](#cfn-iot-command-commandparametervaluecomparisonoperand-numbers)" : [ String, ... ],
  "[String](#cfn-iot-command-commandparametervaluecomparisonoperand-string)" : String,
  "[Strings](#cfn-iot-command-commandparametervaluecomparisonoperand-strings)" : [ String, ... ]
}
```

### YAML
<a name="aws-properties-iot-command-commandparametervaluecomparisonoperand-syntax.yaml"></a>

```
  [Number](#cfn-iot-command-commandparametervaluecomparisonoperand-number): String
  [NumberRange](#cfn-iot-command-commandparametervaluecomparisonoperand-numberrange): 
    CommandParameterValueNumberRange
  [Numbers](#cfn-iot-command-commandparametervaluecomparisonoperand-numbers): 
    - String
  [String](#cfn-iot-command-commandparametervaluecomparisonoperand-string): 
    String
  [Strings](#cfn-iot-command-commandparametervaluecomparisonoperand-strings): 
    - String
```

## Properties
<a name="aws-properties-iot-command-commandparametervaluecomparisonoperand-properties"></a>

`Number`  <a name="cfn-iot-command-commandparametervaluecomparisonoperand-number"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`NumberRange`  <a name="cfn-iot-command-commandparametervaluecomparisonoperand-numberrange"></a>
Property description not available.  
*Required*: No  
*Type*: [CommandParameterValueNumberRange](aws-properties-iot-command-commandparametervaluenumberrange.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Numbers`  <a name="cfn-iot-command-commandparametervaluecomparisonoperand-numbers"></a>
Property description not available.  
*Required*: No  
*Type*: Array of String  
*Minimum*: `1`  
*Maximum*: `10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`String`  <a name="cfn-iot-command-commandparametervaluecomparisonoperand-string"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Strings`  <a name="cfn-iot-command-commandparametervaluecomparisonoperand-strings"></a>
Property description not available.  
*Required*: No  
*Type*: Array of String  
*Minimum*: `1`  
*Maximum*: `10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Command CommandParameterValueCondition
<a name="aws-properties-iot-command-commandparametervaluecondition"></a>

<a name="aws-properties-iot-command-commandparametervaluecondition-description"></a>The `CommandParameterValueCondition` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-commandparametervaluecondition-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-commandparametervaluecondition-syntax.json"></a>

```
{
  "[ComparisonOperator](#cfn-iot-command-commandparametervaluecondition-comparisonoperator)" : String,
  "[Operand](#cfn-iot-command-commandparametervaluecondition-operand)" : CommandParameterValueComparisonOperand
}
```

### YAML
<a name="aws-properties-iot-command-commandparametervaluecondition-syntax.yaml"></a>

```
  [ComparisonOperator](#cfn-iot-command-commandparametervaluecondition-comparisonoperator): String
  [Operand](#cfn-iot-command-commandparametervaluecondition-operand): 
    CommandParameterValueComparisonOperand
```

## Properties
<a name="aws-properties-iot-command-commandparametervaluecondition-properties"></a>

`ComparisonOperator`  <a name="cfn-iot-command-commandparametervaluecondition-comparisonoperator"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `EQUALS | NOT_EQUALS | LESS_THAN | LESS_THAN_EQUALS | GREATER_THAN | GREATER_THAN_EQUALS | IN_SET | NOT_IN_SET | IN_RANGE | NOT_IN_RANGE`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Operand`  <a name="cfn-iot-command-commandparametervaluecondition-operand"></a>
Property description not available.  
*Required*: Yes  
*Type*: [CommandParameterValueComparisonOperand](aws-properties-iot-command-commandparametervaluecomparisonoperand.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Command CommandParameterValueNumberRange
<a name="aws-properties-iot-command-commandparametervaluenumberrange"></a>

<a name="aws-properties-iot-command-commandparametervaluenumberrange-description"></a>The `CommandParameterValueNumberRange` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-commandparametervaluenumberrange-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-commandparametervaluenumberrange-syntax.json"></a>

```
{
  "[Max](#cfn-iot-command-commandparametervaluenumberrange-max)" : String,
  "[Min](#cfn-iot-command-commandparametervaluenumberrange-min)" : String
}
```

### YAML
<a name="aws-properties-iot-command-commandparametervaluenumberrange-syntax.yaml"></a>

```
  [Max](#cfn-iot-command-commandparametervaluenumberrange-max): String
  [Min](#cfn-iot-command-commandparametervaluenumberrange-min): String
```

## Properties
<a name="aws-properties-iot-command-commandparametervaluenumberrange-properties"></a>

`Max`  <a name="cfn-iot-command-commandparametervaluenumberrange-max"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Min`  <a name="cfn-iot-command-commandparametervaluenumberrange-min"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Command CommandPayload
<a name="aws-properties-iot-command-commandpayload"></a>

<a name="aws-properties-iot-command-commandpayload-description"></a>The `CommandPayload` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-commandpayload-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-commandpayload-syntax.json"></a>

```
{
  "[Content](#cfn-iot-command-commandpayload-content)" : String,
  "[ContentType](#cfn-iot-command-commandpayload-contenttype)" : String
}
```

### YAML
<a name="aws-properties-iot-command-commandpayload-syntax.yaml"></a>

```
  [Content](#cfn-iot-command-commandpayload-content): String
  [ContentType](#cfn-iot-command-commandpayload-contenttype): String
```

## Properties
<a name="aws-properties-iot-command-commandpayload-properties"></a>

`Content`  <a name="cfn-iot-command-commandpayload-content"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ContentType`  <a name="cfn-iot-command-commandpayload-contenttype"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Command CommandPreprocessor
<a name="aws-properties-iot-command-commandpreprocessor"></a>

<a name="aws-properties-iot-command-commandpreprocessor-description"></a>The `CommandPreprocessor` property type specifies Property description not available. for an [AWS::IoT::Command](aws-resource-iot-command.md).

## Syntax
<a name="aws-properties-iot-command-commandpreprocessor-syntax"></a>

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

### JSON
<a name="aws-properties-iot-command-commandpreprocessor-syntax.json"></a>

```
{
  "[AwsJsonSubstitution](#cfn-iot-command-commandpreprocessor-awsjsonsubstitution)" : AwsJsonSubstitutionCommandPreprocessorConfig
}
```

### YAML
<a name="aws-properties-iot-command-commandpreprocessor-syntax.yaml"></a>

```
  [AwsJsonSubstitution](#cfn-iot-command-commandpreprocessor-awsjsonsubstitution): 
    AwsJsonSubstitutionCommandPreprocessorConfig
```

## Properties
<a name="aws-properties-iot-command-commandpreprocessor-properties"></a>

`AwsJsonSubstitution`  <a name="cfn-iot-command-commandpreprocessor-awsjsonsubstitution"></a>
Property description not available.  
*Required*: No  
*Type*: [AwsJsonSubstitutionCommandPreprocessorConfig](aws-properties-iot-command-awsjsonsubstitutioncommandpreprocessorconfig.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::Command Tag
<a name="aws-properties-iot-command-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-command-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-command-tag-key): String
  [Value](#cfn-iot-command-tag-value): String
```

## Properties
<a name="aws-properties-iot-command-tag-properties"></a>

`Key`  <a name="cfn-iot-command-tag-key"></a>
The tag's key.  
*Required*: Yes  
*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-iot-command-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::CustomMetric
<a name="aws-resource-iot-custommetric"></a>

 Use the `AWS::IoT::CustomMetric` resource to define a custom metric published by your devices to Device Defender. For API reference, see [CreateCustomMetric](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCustomMetric.html) and for general information, see [Custom metrics](https://docs.aws.amazon.com/iot/latest/developerguide/dd-detect-custom-metrics.html).

## Syntax
<a name="aws-resource-iot-custommetric-syntax"></a>

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

### JSON
<a name="aws-resource-iot-custommetric-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::CustomMetric",
  "Properties" : {
      "[DisplayName](#cfn-iot-custommetric-displayname)" : String,
      "[MetricName](#cfn-iot-custommetric-metricname)" : String,
      "[MetricType](#cfn-iot-custommetric-metrictype)" : String,
      "[Tags](#cfn-iot-custommetric-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-custommetric-syntax.yaml"></a>

```
Type: AWS::IoT::CustomMetric
Properties:
  [DisplayName](#cfn-iot-custommetric-displayname): String
  [MetricName](#cfn-iot-custommetric-metricname): String
  [MetricType](#cfn-iot-custommetric-metrictype): String
  [Tags](#cfn-iot-custommetric-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-custommetric-properties"></a>

`DisplayName`  <a name="cfn-iot-custommetric-displayname"></a>
 The friendly name in the console for the custom metric. This name doesn't have to be unique. Don't use this name as the metric identifier in the device metric report. You can update the friendly name after you define it.   
*Required*: No  
*Type*: String  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MetricName`  <a name="cfn-iot-custommetric-metricname"></a>
 The name of the custom metric. This will be used in the metric report submitted from the device/thing. The name can't begin with `aws:`. You can’t change the name after you define it.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`MetricType`  <a name="cfn-iot-custommetric-metrictype"></a>
 The type of the custom metric. Types include `string-list`, `ip-address-list`, `number-list`, and `number`.   
The type `number` only takes a single metric value as an input, but when you submit the metrics value in the DeviceMetrics report, you must pass it as an array with a single value.
*Required*: Yes  
*Type*: String  
*Allowed values*: `string-list | ip-address-list | number-list | number`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-custommetric-tags"></a>
 Metadata that can be used to manage the custom metric.   
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-custommetric-tag.md)  
*Maximum*: `50`  
*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-iot-custommetric-return-values"></a>

### Ref
<a name="aws-resource-iot-custommetric-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the custom metric name.

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-custommetric-return-values-fn--getatt-fn--getatt"></a>

`MetricArn`  <a name="MetricArn-fn::getatt"></a>
The Amazon Resource Number (ARN) of the custom metric; for example, `arn:aws-partition:iot:region:accountId:custommetric/metricName`.

## Examples
<a name="aws-resource-iot-custommetric--examples"></a>



### 
<a name="aws-resource-iot-custommetric--examples--"></a>



#### JSON
<a name="aws-resource-iot-custommetric--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Amazon Web Services IoT CustomMetric Sample Template",
  "Resources": {
    "BatteryPercentageMetric": {
      "Type": "AWS::IoT::CustomMetric",
      "Properties": {
        "MetricName": "batteryPercentage",
        "DisplayName": "Remaining battery percentage",
        "MetricType": "number"
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-custommetric--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon Web Services IoT CustomMetric Sample Template
Resources:
  BatteryPercentageMetric:
    Type: AWS::IoT::CustomMetric
    Properties:
      MetricName: batteryPercentage
      DisplayName: Remaining battery percentage
      MetricType: number
```

# AWS::IoT::CustomMetric Tag
<a name="aws-properties-iot-custommetric-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-custommetric-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-custommetric-tag-key): String
  [Value](#cfn-iot-custommetric-tag-value): String
```

## Properties
<a name="aws-properties-iot-custommetric-tag-properties"></a>

`Key`  <a name="cfn-iot-custommetric-tag-key"></a>
The tag's key.  
*Required*: Yes  
*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-iot-custommetric-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Dimension
<a name="aws-resource-iot-dimension"></a>

Use the `AWS::IoT::Dimension` to limit the scope of a metric used in a security profile for AWS IoT Device Defender. For example, using a `TOPIC_FILTER` dimension, you can narrow down the scope of the metric to only MQTT topics where the name matches the pattern specified in the dimension. For API reference, see [CreateDimension](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateDimension.html) and for general information, see [Scoping metrics in security profiles using dimensions](https://docs.aws.amazon.com/iot/latest/developerguide/scoping-security-behavior.html).

## Syntax
<a name="aws-resource-iot-dimension-syntax"></a>

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

### JSON
<a name="aws-resource-iot-dimension-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::Dimension",
  "Properties" : {
      "[Name](#cfn-iot-dimension-name)" : String,
      "[StringValues](#cfn-iot-dimension-stringvalues)" : [ String, ... ],
      "[Tags](#cfn-iot-dimension-tags)" : [ Tag, ... ],
      "[Type](#cfn-iot-dimension-type)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-dimension-syntax.yaml"></a>

```
Type: AWS::IoT::Dimension
Properties:
  [Name](#cfn-iot-dimension-name): String
  [StringValues](#cfn-iot-dimension-stringvalues): 
    - String
  [Tags](#cfn-iot-dimension-tags): 
    - Tag
  [Type](#cfn-iot-dimension-type): String
```

## Properties
<a name="aws-resource-iot-dimension-properties"></a>

`Name`  <a name="cfn-iot-dimension-name"></a>
A unique identifier for the dimension.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`StringValues`  <a name="cfn-iot-dimension-stringvalues"></a>
Specifies the value or list of values for the dimension. For `TOPIC_FILTER` dimensions, this is a pattern used to match the MQTT topic (for example, "admin/\$1").  
*Required*: Yes  
*Type*: Array of String  
*Minimum*: `1 | 1`  
*Maximum*: `256 | 5`  
*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-iot-dimension-tags"></a>
Metadata that can be used to manage the dimension.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-dimension-tag.md)  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Type`  <a name="cfn-iot-dimension-type"></a>
Specifies the type of dimension. Supported types: `TOPIC_FILTER.`  
*Required*: Yes  
*Type*: String  
*Allowed values*: `TOPIC_FILTER`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-dimension-return-values"></a>

### Ref
<a name="aws-resource-iot-dimension-return-values-ref"></a>

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

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-dimension-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the dimension.

## Examples
<a name="aws-resource-iot-dimension--examples"></a>



### 
<a name="aws-resource-iot-dimension--examples--"></a>



#### JSON
<a name="aws-resource-iot-dimension--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Amazon Web Services IoT Dimension Sample Template",
  "Resources": {
    "TopicFilterForAuthMessagesDimension": {
      "Type": "AWS::IoT::Dimension",
      "Properties": {
        "Name": "TopicFilterForAuthMessages",
        "Type": "TOPIC_FILTER",
        "StringValues": [
          "device/+/auth"
        ],
        "Tags": [
          {
            "Key": "Application",
            "Value": "SmartHome"
          }
        ]
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-dimension--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon Web Services IoT Dimension Sample Template
Resources:
  TopicFilterForAuthMessagesDimension:
    Type: 'AWS::IoT::Dimension'
    Properties:
      Name: TopicFilterForAuthMessages
      Type: TOPIC_FILTER
      StringValues:
        - device/+/auth
      Tags:
        - Key: Application
          Value: SmartHome
```

# AWS::IoT::Dimension Tag
<a name="aws-properties-iot-dimension-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-dimension-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-dimension-tag-key): String
  [Value](#cfn-iot-dimension-tag-value): String
```

## Properties
<a name="aws-properties-iot-dimension-tag-properties"></a>

`Key`  <a name="cfn-iot-dimension-tag-key"></a>
The tag's key.  
*Required*: Yes  
*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-iot-dimension-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::DomainConfiguration
<a name="aws-resource-iot-domainconfiguration"></a>

Specifies a domain configuration.

## Syntax
<a name="aws-resource-iot-domainconfiguration-syntax"></a>

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

### JSON
<a name="aws-resource-iot-domainconfiguration-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::DomainConfiguration",
  "Properties" : {
      "[ApplicationProtocol](#cfn-iot-domainconfiguration-applicationprotocol)" : String,
      "[AuthenticationType](#cfn-iot-domainconfiguration-authenticationtype)" : String,
      "[AuthorizerConfig](#cfn-iot-domainconfiguration-authorizerconfig)" : AuthorizerConfig,
      "[ClientCertificateConfig](#cfn-iot-domainconfiguration-clientcertificateconfig)" : ClientCertificateConfig,
      "[DomainConfigurationName](#cfn-iot-domainconfiguration-domainconfigurationname)" : String,
      "[DomainConfigurationStatus](#cfn-iot-domainconfiguration-domainconfigurationstatus)" : String,
      "[DomainName](#cfn-iot-domainconfiguration-domainname)" : String,
      "[ServerCertificateArns](#cfn-iot-domainconfiguration-servercertificatearns)" : [ String, ... ],
      "[ServerCertificateConfig](#cfn-iot-domainconfiguration-servercertificateconfig)" : ServerCertificateConfig,
      "[ServiceType](#cfn-iot-domainconfiguration-servicetype)" : String,
      "[Tags](#cfn-iot-domainconfiguration-tags)" : [ Tag, ... ],
      "[TlsConfig](#cfn-iot-domainconfiguration-tlsconfig)" : TlsConfig,
      "[ValidationCertificateArn](#cfn-iot-domainconfiguration-validationcertificatearn)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-domainconfiguration-syntax.yaml"></a>

```
Type: AWS::IoT::DomainConfiguration
Properties:
  [ApplicationProtocol](#cfn-iot-domainconfiguration-applicationprotocol): String
  [AuthenticationType](#cfn-iot-domainconfiguration-authenticationtype): String
  [AuthorizerConfig](#cfn-iot-domainconfiguration-authorizerconfig): 
    AuthorizerConfig
  [ClientCertificateConfig](#cfn-iot-domainconfiguration-clientcertificateconfig): 
    ClientCertificateConfig
  [DomainConfigurationName](#cfn-iot-domainconfiguration-domainconfigurationname): String
  [DomainConfigurationStatus](#cfn-iot-domainconfiguration-domainconfigurationstatus): String
  [DomainName](#cfn-iot-domainconfiguration-domainname): String
  [ServerCertificateArns](#cfn-iot-domainconfiguration-servercertificatearns): 
    - String
  [ServerCertificateConfig](#cfn-iot-domainconfiguration-servercertificateconfig): 
    ServerCertificateConfig
  [ServiceType](#cfn-iot-domainconfiguration-servicetype): String
  [Tags](#cfn-iot-domainconfiguration-tags): 
    - Tag
  [TlsConfig](#cfn-iot-domainconfiguration-tlsconfig): 
    TlsConfig
  [ValidationCertificateArn](#cfn-iot-domainconfiguration-validationcertificatearn): String
```

## Properties
<a name="aws-resource-iot-domainconfiguration-properties"></a>

`ApplicationProtocol`  <a name="cfn-iot-domainconfiguration-applicationprotocol"></a>
An enumerated string that speciﬁes the application-layer protocol.  
*Required*: No  
*Type*: String  
*Allowed values*: `SECURE_MQTT | MQTT_WSS | HTTPS | DEFAULT`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`AuthenticationType`  <a name="cfn-iot-domainconfiguration-authenticationtype"></a>
An enumerated string that speciﬁes the authentication type.  
*Required*: No  
*Type*: String  
*Allowed values*: `AWS_X509 | CUSTOM_AUTH | AWS_SIGV4 | CUSTOM_AUTH_X509 | DEFAULT`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`AuthorizerConfig`  <a name="cfn-iot-domainconfiguration-authorizerconfig"></a>
An object that specifies the authorization service for a domain.  
*Required*: No  
*Type*: [AuthorizerConfig](aws-properties-iot-domainconfiguration-authorizerconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ClientCertificateConfig`  <a name="cfn-iot-domainconfiguration-clientcertificateconfig"></a>
An object that speciﬁes the client certificate conﬁguration for a domain.  
*Required*: No  
*Type*: [ClientCertificateConfig](aws-properties-iot-domainconfiguration-clientcertificateconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DomainConfigurationName`  <a name="cfn-iot-domainconfiguration-domainconfigurationname"></a>
The name of the domain configuration. This value must be unique to a region.  
*Required*: No  
*Type*: String  
*Pattern*: `^[\w.-]+$`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`DomainConfigurationStatus`  <a name="cfn-iot-domainconfiguration-domainconfigurationstatus"></a>
The status to which the domain configuration should be updated.  
Valid values: `ENABLED` \$1 `DISABLED`  
*Required*: No  
*Type*: String  
*Allowed values*: `ENABLED | DISABLED`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DomainName`  <a name="cfn-iot-domainconfiguration-domainname"></a>
The name of the domain.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `253`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ServerCertificateArns`  <a name="cfn-iot-domainconfiguration-servercertificatearns"></a>
The ARNs of the certificates that AWS IoT passes to the device during the TLS handshake. Currently you can specify only one certificate ARN. This value is not required for AWS-managed domains.  
*Required*: No  
*Type*: Array of String  
*Minimum*: `1 | 0`  
*Maximum*: `2048 | 1`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ServerCertificateConfig`  <a name="cfn-iot-domainconfiguration-servercertificateconfig"></a>
The server certificate configuration.  
For more information, see [Configurable endpoints](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html) from the AWS IoT Core Developer Guide.  
*Required*: No  
*Type*: [ServerCertificateConfig](aws-properties-iot-domainconfiguration-servercertificateconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ServiceType`  <a name="cfn-iot-domainconfiguration-servicetype"></a>
The type of service delivered by the endpoint.  
AWS IoT Core currently supports only the `DATA` service type.
*Required*: No  
*Type*: String  
*Allowed values*: `DATA | CREDENTIAL_PROVIDER | JOBS`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-domainconfiguration-tags"></a>
Metadata which can be used to manage the domain configuration.  
For URI Request parameters use format: ...key1=value1&key2=value2...  
For the CLI command-line parameter use format: &&tags "key1=value1&key2=value2..."  
For the cli-input-json file use format: "tags": "key1=value1&key2=value2..."
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-domainconfiguration-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TlsConfig`  <a name="cfn-iot-domainconfiguration-tlsconfig"></a>
An object that specifies the TLS configuration for a domain.  
*Required*: No  
*Type*: [TlsConfig](aws-properties-iot-domainconfiguration-tlsconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ValidationCertificateArn`  <a name="cfn-iot-domainconfiguration-validationcertificatearn"></a>
The certificate used to validate the server certificate and prove domain name ownership. This certificate must be signed by a public certificate authority. This value is not required for AWS-managed domains.  
*Required*: No  
*Type*: String  
*Pattern*: `^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\d{1}:\d{12}:certificate/[a-zA-Z0-9/-]+$`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-domainconfiguration-return-values"></a>

### Ref
<a name="aws-resource-iot-domainconfiguration-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the domain configuration name. For example:

 `{ "Ref": "MyDomainConfiguration" }` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-domainconfiguration-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the domain configuration.

`DomainType`  <a name="DomainType-fn::getatt"></a>
The type of service delivered by the domain.

`ServerCertificates`  <a name="ServerCertificates-fn::getatt"></a>
The ARNs of the certificates that AWS IoT passes to the device during the TLS handshake. Currently you can specify only one certificate ARN. This value is not required for AWS-managed domains.

# AWS::IoT::DomainConfiguration AuthorizerConfig
<a name="aws-properties-iot-domainconfiguration-authorizerconfig"></a>

An object that specifies the authorization service for a domain.

## Syntax
<a name="aws-properties-iot-domainconfiguration-authorizerconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-domainconfiguration-authorizerconfig-syntax.json"></a>

```
{
  "[AllowAuthorizerOverride](#cfn-iot-domainconfiguration-authorizerconfig-allowauthorizeroverride)" : Boolean,
  "[DefaultAuthorizerName](#cfn-iot-domainconfiguration-authorizerconfig-defaultauthorizername)" : String
}
```

### YAML
<a name="aws-properties-iot-domainconfiguration-authorizerconfig-syntax.yaml"></a>

```
  [AllowAuthorizerOverride](#cfn-iot-domainconfiguration-authorizerconfig-allowauthorizeroverride): Boolean
  [DefaultAuthorizerName](#cfn-iot-domainconfiguration-authorizerconfig-defaultauthorizername): String
```

## Properties
<a name="aws-properties-iot-domainconfiguration-authorizerconfig-properties"></a>

`AllowAuthorizerOverride`  <a name="cfn-iot-domainconfiguration-authorizerconfig-allowauthorizeroverride"></a>
A Boolean that specifies whether the domain configuration's authorization service can be overridden.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DefaultAuthorizerName`  <a name="cfn-iot-domainconfiguration-authorizerconfig-defaultauthorizername"></a>
The name of the authorization service for a domain configuration.  
*Required*: No  
*Type*: String  
*Pattern*: `^[\w=,@-]+$`  
*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)

# AWS::IoT::DomainConfiguration ClientCertificateConfig
<a name="aws-properties-iot-domainconfiguration-clientcertificateconfig"></a>

An object that speciﬁes the client certificate conﬁguration for a domain.

## Syntax
<a name="aws-properties-iot-domainconfiguration-clientcertificateconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-domainconfiguration-clientcertificateconfig-syntax.json"></a>

```
{
  "[ClientCertificateCallbackArn](#cfn-iot-domainconfiguration-clientcertificateconfig-clientcertificatecallbackarn)" : String
}
```

### YAML
<a name="aws-properties-iot-domainconfiguration-clientcertificateconfig-syntax.yaml"></a>

```
  [ClientCertificateCallbackArn](#cfn-iot-domainconfiguration-clientcertificateconfig-clientcertificatecallbackarn): String
```

## Properties
<a name="aws-properties-iot-domainconfiguration-clientcertificateconfig-properties"></a>

`ClientCertificateCallbackArn`  <a name="cfn-iot-domainconfiguration-clientcertificateconfig-clientcertificatecallbackarn"></a>
The ARN of the Lambda function that IoT invokes after mutual TLS authentication during the connection.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `170`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::DomainConfiguration ServerCertificateConfig
<a name="aws-properties-iot-domainconfiguration-servercertificateconfig"></a>

The server certificate configuration.

For more information, see [Configurable endpoints](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html) from the AWS IoT Core Developer Guide.

## Syntax
<a name="aws-properties-iot-domainconfiguration-servercertificateconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-domainconfiguration-servercertificateconfig-syntax.json"></a>

```
{
  "[EnableOCSPCheck](#cfn-iot-domainconfiguration-servercertificateconfig-enableocspcheck)" : Boolean,
  "[OcspAuthorizedResponderArn](#cfn-iot-domainconfiguration-servercertificateconfig-ocspauthorizedresponderarn)" : String,
  "[OcspLambdaArn](#cfn-iot-domainconfiguration-servercertificateconfig-ocsplambdaarn)" : String
}
```

### YAML
<a name="aws-properties-iot-domainconfiguration-servercertificateconfig-syntax.yaml"></a>

```
  [EnableOCSPCheck](#cfn-iot-domainconfiguration-servercertificateconfig-enableocspcheck): Boolean
  [OcspAuthorizedResponderArn](#cfn-iot-domainconfiguration-servercertificateconfig-ocspauthorizedresponderarn): String
  [OcspLambdaArn](#cfn-iot-domainconfiguration-servercertificateconfig-ocsplambdaarn): String
```

## Properties
<a name="aws-properties-iot-domainconfiguration-servercertificateconfig-properties"></a>

`EnableOCSPCheck`  <a name="cfn-iot-domainconfiguration-servercertificateconfig-enableocspcheck"></a>
A Boolean value that indicates whether Online Certificate Status Protocol (OCSP) server certificate check is enabled or not. For more information, see [Configurable endpoints](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html) from the AWS IoT Core Developer Guide.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`OcspAuthorizedResponderArn`  <a name="cfn-iot-domainconfiguration-servercertificateconfig-ocspauthorizedresponderarn"></a>
The Amazon Resource Name (ARN) for an X.509 certificate stored in ACM. If provided, AWS IoT Core will use this certificate to validate the signature of the received OCSP response. The OCSP responder must sign responses using either this authorized responder certificate or the issuing certificate, depending on whether the ARN is provided or not. The certificate must be in the same account and region as the domain configuration.  
*Required*: No  
*Type*: String  
*Pattern*: `^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\d{1}:\d{12}:certificate/[a-zA-Z0-9/-]+$`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`OcspLambdaArn`  <a name="cfn-iot-domainconfiguration-servercertificateconfig-ocsplambdaarn"></a>
The Amazon Resource Name (ARN) for a Lambda function that acts as a Request for Comments (RFC) 6960-compliant Online Certificate Status Protocol (OCSP) responder, supporting basic OCSP responses. The Lambda function accepts a base64-encoding of the OCSP request in the Distinguished Encoding Rules (DER) format. The Lambda function's response is also a base64-encoded OCSP response in the DER format. The response size must not exceed 4 kilobytes (KiB). The Lambda function must be in the same account and region as the domain configuration.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `170`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::DomainConfiguration ServerCertificateSummary
<a name="aws-properties-iot-domainconfiguration-servercertificatesummary"></a>

An object that contains information about a server certificate.

## Syntax
<a name="aws-properties-iot-domainconfiguration-servercertificatesummary-syntax"></a>

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

### JSON
<a name="aws-properties-iot-domainconfiguration-servercertificatesummary-syntax.json"></a>

```
{
  "[ServerCertificateArn](#cfn-iot-domainconfiguration-servercertificatesummary-servercertificatearn)" : String,
  "[ServerCertificateStatus](#cfn-iot-domainconfiguration-servercertificatesummary-servercertificatestatus)" : String,
  "[ServerCertificateStatusDetail](#cfn-iot-domainconfiguration-servercertificatesummary-servercertificatestatusdetail)" : String
}
```

### YAML
<a name="aws-properties-iot-domainconfiguration-servercertificatesummary-syntax.yaml"></a>

```
  [ServerCertificateArn](#cfn-iot-domainconfiguration-servercertificatesummary-servercertificatearn): String
  [ServerCertificateStatus](#cfn-iot-domainconfiguration-servercertificatesummary-servercertificatestatus): String
  [ServerCertificateStatusDetail](#cfn-iot-domainconfiguration-servercertificatesummary-servercertificatestatusdetail): String
```

## Properties
<a name="aws-properties-iot-domainconfiguration-servercertificatesummary-properties"></a>

`ServerCertificateArn`  <a name="cfn-iot-domainconfiguration-servercertificatesummary-servercertificatearn"></a>
The ARN of the server certificate.  
*Required*: No  
*Type*: String  
*Pattern*: `^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\d{1}:\d{12}:certificate/[a-zA-Z0-9/-]+$`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ServerCertificateStatus`  <a name="cfn-iot-domainconfiguration-servercertificatesummary-servercertificatestatus"></a>
The status of the server certificate.  
*Required*: No  
*Type*: String  
*Allowed values*: `INVALID | VALID`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ServerCertificateStatusDetail`  <a name="cfn-iot-domainconfiguration-servercertificatesummary-servercertificatestatusdetail"></a>
Details that explain the status of the server certificate.  
*Required*: No  
*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::IoT::DomainConfiguration Tag
<a name="aws-properties-iot-domainconfiguration-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-domainconfiguration-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-domainconfiguration-tag-key): String
  [Value](#cfn-iot-domainconfiguration-tag-value): String
```

## Properties
<a name="aws-properties-iot-domainconfiguration-tag-properties"></a>

`Key`  <a name="cfn-iot-domainconfiguration-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-domainconfiguration-tag-value"></a>
The tag's value.  
*Required*: Yes  
*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)

# AWS::IoT::DomainConfiguration TlsConfig
<a name="aws-properties-iot-domainconfiguration-tlsconfig"></a>

An object that specifies the TLS configuration for a domain.

## Syntax
<a name="aws-properties-iot-domainconfiguration-tlsconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-domainconfiguration-tlsconfig-syntax.json"></a>

```
{
  "[SecurityPolicy](#cfn-iot-domainconfiguration-tlsconfig-securitypolicy)" : String
}
```

### YAML
<a name="aws-properties-iot-domainconfiguration-tlsconfig-syntax.yaml"></a>

```
  [SecurityPolicy](#cfn-iot-domainconfiguration-tlsconfig-securitypolicy): String
```

## Properties
<a name="aws-properties-iot-domainconfiguration-tlsconfig-properties"></a>

`SecurityPolicy`  <a name="cfn-iot-domainconfiguration-tlsconfig-securitypolicy"></a>
The security policy for a domain configuration. For more information, see [Security policies ](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html#tls-policy-table) in the *AWS IoT Core developer guide*.  
*Required*: No  
*Type*: String  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::EncryptionConfiguration
<a name="aws-resource-iot-encryptionconfiguration"></a>

Retrieves the encryption configuration for resources and data of your AWS account in AWS IoT Core. For more information, see [Data encryption at rest](https://docs.aws.amazon.com/iot/latest/developerguide/encryption-at-rest.html) in the *AWS IoT Core Developer Guide*.

## Syntax
<a name="aws-resource-iot-encryptionconfiguration-syntax"></a>

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

### JSON
<a name="aws-resource-iot-encryptionconfiguration-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::EncryptionConfiguration",
  "Properties" : {
      "[EncryptionType](#cfn-iot-encryptionconfiguration-encryptiontype)" : String,
      "[KmsAccessRoleArn](#cfn-iot-encryptionconfiguration-kmsaccessrolearn)" : String,
      "[KmsKeyArn](#cfn-iot-encryptionconfiguration-kmskeyarn)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-encryptionconfiguration-syntax.yaml"></a>

```
Type: AWS::IoT::EncryptionConfiguration
Properties:
  [EncryptionType](#cfn-iot-encryptionconfiguration-encryptiontype): String
  [KmsAccessRoleArn](#cfn-iot-encryptionconfiguration-kmsaccessrolearn): String
  [KmsKeyArn](#cfn-iot-encryptionconfiguration-kmskeyarn): String
```

## Properties
<a name="aws-resource-iot-encryptionconfiguration-properties"></a>

`EncryptionType`  <a name="cfn-iot-encryptionconfiguration-encryptiontype"></a>
The type of the KMS key.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `CUSTOMER_MANAGED_KMS_KEY | AWS_OWNED_KMS_KEY`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`KmsAccessRoleArn`  <a name="cfn-iot-encryptionconfiguration-kmsaccessrolearn"></a>
The Amazon Resource Name (ARN) of the IAM role assumed by AWS IoT Core to call AWS KMS on behalf of the customer.  
*Required*: No  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`KmsKeyArn`  <a name="cfn-iot-encryptionconfiguration-kmskeyarn"></a>
The ARN of the customer managed KMS key.  
*Required*: No  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*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-iot-encryptionconfiguration-return-values"></a>

### Ref
<a name="aws-resource-iot-encryptionconfiguration-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the AWS account ID. For example:

 `{ "Ref": "MyEncryptionConfiguration" }` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-encryptionconfiguration-return-values-fn--getatt-fn--getatt"></a>

`AccountId`  <a name="AccountId-fn::getatt"></a>
The unique identifier (ID) of an AWS account.

`LastModifiedDate`  <a name="LastModifiedDate-fn::getatt"></a>
The date when encryption configuration is last updated.

## Examples
<a name="aws-resource-iot-encryptionconfiguration--examples"></a>

The following example creates an encryption configuration using a customer managed AWS KMS key.

### 
<a name="aws-resource-iot-encryptionconfiguration--examples--"></a>



#### JSON
<a name="aws-resource-iot-encryptionconfiguration--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyEncryptionConfiguration": {
      "Type": "AWS::IoT::EncryptionConfiguration",
      "Properties": {
        "EncryptionType": "CUSTOMER_MANAGED_KMS_KEY",
        "KmsKeyArn": "arn:aws:kms:us-east-1:123456789012:key/abcd1234-ab12-cd34-ef56-abcdef123456",
        "KmsAccessRoleArn": "arn:aws:iam::123456789012:role/IoTKmsAccessRole"
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-encryptionconfiguration--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyEncryptionConfiguration:
    Type: AWS::IoT::EncryptionConfiguration
    Properties:
      EncryptionType: CUSTOMER_MANAGED_KMS_KEY
      KmsKeyArn: arn:aws:kms:us-east-1:123456789012:key/abcd1234-ab12-cd34-ef56-abcdef123456
      KmsAccessRoleArn: arn:aws:iam::123456789012:role/IoTKmsAccessRole
```

# AWS::IoT::EncryptionConfiguration ConfigurationDetails
<a name="aws-properties-iot-encryptionconfiguration-configurationdetails"></a>

The encryption configuration details that include the status information of the AWS Key Management Service (AWS KMS) key and the AWS KMS access role.

## Syntax
<a name="aws-properties-iot-encryptionconfiguration-configurationdetails-syntax"></a>

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

### JSON
<a name="aws-properties-iot-encryptionconfiguration-configurationdetails-syntax.json"></a>

```
{
  "[ConfigurationStatus](#cfn-iot-encryptionconfiguration-configurationdetails-configurationstatus)" : String,
  "[ErrorCode](#cfn-iot-encryptionconfiguration-configurationdetails-errorcode)" : String,
  "[ErrorMessage](#cfn-iot-encryptionconfiguration-configurationdetails-errormessage)" : String
}
```

### YAML
<a name="aws-properties-iot-encryptionconfiguration-configurationdetails-syntax.yaml"></a>

```
  [ConfigurationStatus](#cfn-iot-encryptionconfiguration-configurationdetails-configurationstatus): String
  [ErrorCode](#cfn-iot-encryptionconfiguration-configurationdetails-errorcode): String
  [ErrorMessage](#cfn-iot-encryptionconfiguration-configurationdetails-errormessage): String
```

## Properties
<a name="aws-properties-iot-encryptionconfiguration-configurationdetails-properties"></a>

`ConfigurationStatus`  <a name="cfn-iot-encryptionconfiguration-configurationdetails-configurationstatus"></a>
The health status of KMS key and AWS KMS access role. If either KMS key or AWS KMS access role is `UNHEALTHY`, the return value will be `UNHEALTHY`. To use a customer managed KMS key, the value of `configurationStatus` must be `HEALTHY`.   
*Required*: No  
*Type*: String  
*Allowed values*: `HEALTHY | UNHEALTHY`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ErrorCode`  <a name="cfn-iot-encryptionconfiguration-configurationdetails-errorcode"></a>
The error code that indicates either the KMS key or the AWS KMS access role is `UNHEALTHY`. Valid values: `KMS_KEY_VALIDATION_ERROR` and `ROLE_VALIDATION_ERROR`.   
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ErrorMessage`  <a name="cfn-iot-encryptionconfiguration-configurationdetails-errormessage"></a>
The detailed error message that corresponds to the `errorCode`.  
*Required*: No  
*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::IoT::FleetMetric
<a name="aws-resource-iot-fleetmetric"></a>

Use the `AWS::IoT::FleetMetric` resource to declare a fleet metric.

## Syntax
<a name="aws-resource-iot-fleetmetric-syntax"></a>

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

### JSON
<a name="aws-resource-iot-fleetmetric-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::FleetMetric",
  "Properties" : {
      "[AggregationField](#cfn-iot-fleetmetric-aggregationfield)" : String,
      "[AggregationType](#cfn-iot-fleetmetric-aggregationtype)" : AggregationType,
      "[Description](#cfn-iot-fleetmetric-description)" : String,
      "[IndexName](#cfn-iot-fleetmetric-indexname)" : String,
      "[MetricName](#cfn-iot-fleetmetric-metricname)" : String,
      "[Period](#cfn-iot-fleetmetric-period)" : Integer,
      "[QueryString](#cfn-iot-fleetmetric-querystring)" : String,
      "[QueryVersion](#cfn-iot-fleetmetric-queryversion)" : String,
      "[Tags](#cfn-iot-fleetmetric-tags)" : [ Tag, ... ],
      "[Unit](#cfn-iot-fleetmetric-unit)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-fleetmetric-syntax.yaml"></a>

```
Type: AWS::IoT::FleetMetric
Properties:
  [AggregationField](#cfn-iot-fleetmetric-aggregationfield): String
  [AggregationType](#cfn-iot-fleetmetric-aggregationtype): 
    AggregationType
  [Description](#cfn-iot-fleetmetric-description): String
  [IndexName](#cfn-iot-fleetmetric-indexname): String
  [MetricName](#cfn-iot-fleetmetric-metricname): String
  [Period](#cfn-iot-fleetmetric-period): Integer
  [QueryString](#cfn-iot-fleetmetric-querystring): 
    String
  [QueryVersion](#cfn-iot-fleetmetric-queryversion): String
  [Tags](#cfn-iot-fleetmetric-tags): 
    - Tag
  [Unit](#cfn-iot-fleetmetric-unit): String
```

## Properties
<a name="aws-resource-iot-fleetmetric-properties"></a>

`AggregationField`  <a name="cfn-iot-fleetmetric-aggregationfield"></a>
The field to aggregate.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`AggregationType`  <a name="cfn-iot-fleetmetric-aggregationtype"></a>
The type of the aggregation query.  
*Required*: No  
*Type*: [AggregationType](aws-properties-iot-fleetmetric-aggregationtype.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Description`  <a name="cfn-iot-fleetmetric-description"></a>
The fleet metric description.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IndexName`  <a name="cfn-iot-fleetmetric-indexname"></a>
The name of the index to search.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MetricName`  <a name="cfn-iot-fleetmetric-metricname"></a>
The name of the fleet metric to create.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Period`  <a name="cfn-iot-fleetmetric-period"></a>
The time in seconds between fleet metric emissions. Range [60(1 min), 86400(1 day)] and must be multiple of 60.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`QueryString`  <a name="cfn-iot-fleetmetric-querystring"></a>
The search query string.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`QueryVersion`  <a name="cfn-iot-fleetmetric-queryversion"></a>
The query version.  
*Required*: No  
*Type*: 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-iot-fleetmetric-tags"></a>
Metadata which can be used to manage the fleet metric.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-fleetmetric-tag.md)  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Unit`  <a name="cfn-iot-fleetmetric-unit"></a>
Used to support unit transformation such as milliseconds to seconds. Must be a unit supported by CW metric. Default to null.  
*Required*: No  
*Type*: String  
*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-iot-fleetmetric-return-values"></a>

### Ref
<a name="aws-resource-iot-fleetmetric-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the fleet metric name.

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-fleetmetric-return-values-fn--getatt-fn--getatt"></a>

`CreationDate`  <a name="CreationDate-fn::getatt"></a>
The time the fleet metric was created.

`LastModifiedDate`  <a name="LastModifiedDate-fn::getatt"></a>
The time the fleet metric was last modified.

`MetricArn`  <a name="MetricArn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the fleet metric.

`Version`  <a name="Version-fn::getatt"></a>
The fleet metric version.

# AWS::IoT::FleetMetric AggregationType
<a name="aws-properties-iot-fleetmetric-aggregationtype"></a>

The type of aggregation queries.

## Syntax
<a name="aws-properties-iot-fleetmetric-aggregationtype-syntax"></a>

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

### JSON
<a name="aws-properties-iot-fleetmetric-aggregationtype-syntax.json"></a>

```
{
  "[Name](#cfn-iot-fleetmetric-aggregationtype-name)" : String,
  "[Values](#cfn-iot-fleetmetric-aggregationtype-values)" : [ String, ... ]
}
```

### YAML
<a name="aws-properties-iot-fleetmetric-aggregationtype-syntax.yaml"></a>

```
  [Name](#cfn-iot-fleetmetric-aggregationtype-name): String
  [Values](#cfn-iot-fleetmetric-aggregationtype-values): 
    - String
```

## Properties
<a name="aws-properties-iot-fleetmetric-aggregationtype-properties"></a>

`Name`  <a name="cfn-iot-fleetmetric-aggregationtype-name"></a>
The name of the aggregation type.  
*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)

`Values`  <a name="cfn-iot-fleetmetric-aggregationtype-values"></a>
A list of the values of aggregation types.  
*Required*: Yes  
*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)

# AWS::IoT::FleetMetric Tag
<a name="aws-properties-iot-fleetmetric-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-fleetmetric-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-fleetmetric-tag-key): String
  [Value](#cfn-iot-fleetmetric-tag-value): String
```

## Properties
<a name="aws-properties-iot-fleetmetric-tag-properties"></a>

`Key`  <a name="cfn-iot-fleetmetric-tag-key"></a>
The tag's key.  
*Required*: Yes  
*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-iot-fleetmetric-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::JobTemplate
<a name="aws-resource-iot-jobtemplate"></a>

Represents a job template.

## Syntax
<a name="aws-resource-iot-jobtemplate-syntax"></a>

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

### JSON
<a name="aws-resource-iot-jobtemplate-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::JobTemplate",
  "Properties" : {
      "[AbortConfig](#cfn-iot-jobtemplate-abortconfig)" : AbortConfig,
      "[Description](#cfn-iot-jobtemplate-description)" : String,
      "[DestinationPackageVersions](#cfn-iot-jobtemplate-destinationpackageversions)" : [ String, ... ],
      "[Document](#cfn-iot-jobtemplate-document)" : String,
      "[DocumentSource](#cfn-iot-jobtemplate-documentsource)" : String,
      "[JobArn](#cfn-iot-jobtemplate-jobarn)" : String,
      "[JobExecutionsRetryConfig](#cfn-iot-jobtemplate-jobexecutionsretryconfig)" : JobExecutionsRetryConfig,
      "[JobExecutionsRolloutConfig](#cfn-iot-jobtemplate-jobexecutionsrolloutconfig)" : JobExecutionsRolloutConfig,
      "[JobTemplateId](#cfn-iot-jobtemplate-jobtemplateid)" : String,
      "[MaintenanceWindows](#cfn-iot-jobtemplate-maintenancewindows)" : [ MaintenanceWindow, ... ],
      "[PresignedUrlConfig](#cfn-iot-jobtemplate-presignedurlconfig)" : PresignedUrlConfig,
      "[Tags](#cfn-iot-jobtemplate-tags)" : [ Tag, ... ],
      "[TimeoutConfig](#cfn-iot-jobtemplate-timeoutconfig)" : TimeoutConfig
    }
}
```

### YAML
<a name="aws-resource-iot-jobtemplate-syntax.yaml"></a>

```
Type: AWS::IoT::JobTemplate
Properties:
  [AbortConfig](#cfn-iot-jobtemplate-abortconfig): 
    AbortConfig
  [Description](#cfn-iot-jobtemplate-description): String
  [DestinationPackageVersions](#cfn-iot-jobtemplate-destinationpackageversions): 
    - String
  [Document](#cfn-iot-jobtemplate-document): String
  [DocumentSource](#cfn-iot-jobtemplate-documentsource): String
  [JobArn](#cfn-iot-jobtemplate-jobarn): String
  [JobExecutionsRetryConfig](#cfn-iot-jobtemplate-jobexecutionsretryconfig): 
    JobExecutionsRetryConfig
  [JobExecutionsRolloutConfig](#cfn-iot-jobtemplate-jobexecutionsrolloutconfig): 
    JobExecutionsRolloutConfig
  [JobTemplateId](#cfn-iot-jobtemplate-jobtemplateid): String
  [MaintenanceWindows](#cfn-iot-jobtemplate-maintenancewindows): 
    - MaintenanceWindow
  [PresignedUrlConfig](#cfn-iot-jobtemplate-presignedurlconfig): 
    PresignedUrlConfig
  [Tags](#cfn-iot-jobtemplate-tags): 
    - Tag
  [TimeoutConfig](#cfn-iot-jobtemplate-timeoutconfig): 
    TimeoutConfig
```

## Properties
<a name="aws-resource-iot-jobtemplate-properties"></a>

`AbortConfig`  <a name="cfn-iot-jobtemplate-abortconfig"></a>
The criteria that determine when and how a job abort takes place.  
*Required*: No  
*Type*: [AbortConfig](aws-properties-iot-jobtemplate-abortconfig.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Description`  <a name="cfn-iot-jobtemplate-description"></a>
A description of the job template.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[^\p{C}]+`  
*Maximum*: `2028`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`DestinationPackageVersions`  <a name="cfn-iot-jobtemplate-destinationpackageversions"></a>
The package version Amazon Resource Names (ARNs) that are installed on the device’s reserved named shadow (`$package`) when the job successfully completes.  
**Note:** Up to 25 package version ARNS are allowed.  
*Required*: No  
*Type*: Array of String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Document`  <a name="cfn-iot-jobtemplate-document"></a>
The job document.  
Required if you don't specify a value for `documentSource`.  
*Required*: No  
*Type*: String  
*Maximum*: `32768`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`DocumentSource`  <a name="cfn-iot-jobtemplate-documentsource"></a>
An S3 link, or S3 object URL, to the job document. The link is an Amazon S3 object URL and is required if you don't specify a value for `document`.  
For example, `--document-source https://s3.region-code.amazonaws.com/example-firmware/device-firmware.1.0`  
For more information, see [Methods for accessing a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html).  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `1350`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`JobArn`  <a name="cfn-iot-jobtemplate-jobarn"></a>
The ARN of the job to use as the basis for the job template.  
*Required*: No  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`JobExecutionsRetryConfig`  <a name="cfn-iot-jobtemplate-jobexecutionsretryconfig"></a>
Allows you to create the criteria to retry a job.  
*Required*: No  
*Type*: [JobExecutionsRetryConfig](aws-properties-iot-jobtemplate-jobexecutionsretryconfig.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`JobExecutionsRolloutConfig`  <a name="cfn-iot-jobtemplate-jobexecutionsrolloutconfig"></a>
Allows you to create a staged rollout of a job.  
*Required*: No  
*Type*: [JobExecutionsRolloutConfig](aws-properties-iot-jobtemplate-jobexecutionsrolloutconfig.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`JobTemplateId`  <a name="cfn-iot-jobtemplate-jobtemplateid"></a>
A unique identifier for the job template. We recommend using a UUID. Alpha-numeric characters, "-", and "\$1" are valid for use here.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[a-zA-Z0-9_-]+`  
*Minimum*: `1`  
*Maximum*: `64`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`MaintenanceWindows`  <a name="cfn-iot-jobtemplate-maintenancewindows"></a>
An optional configuration within the SchedulingConfig to setup a recurring maintenance window with a predetermined start time and duration for the rollout of a job document to all devices in a target group for a job.  
*Required*: No  
*Type*: Array of [MaintenanceWindow](aws-properties-iot-jobtemplate-maintenancewindow.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`PresignedUrlConfig`  <a name="cfn-iot-jobtemplate-presignedurlconfig"></a>
Configuration for pre-signed S3 URLs.  
*Required*: No  
*Type*: [PresignedUrlConfig](aws-properties-iot-jobtemplate-presignedurlconfig.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-jobtemplate-tags"></a>
Metadata that can be used to manage the job template.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-jobtemplate-tag.md)  
*Maximum*: `50`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`TimeoutConfig`  <a name="cfn-iot-jobtemplate-timeoutconfig"></a>
Specifies the amount of time each device has to finish its execution of the job. A timer is started when the job execution status is set to `IN_PROGRESS`. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to `TIMED_OUT`.   
*Required*: No  
*Type*: [TimeoutConfig](aws-properties-iot-jobtemplate-timeoutconfig.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-jobtemplate-return-values"></a>

### Ref
<a name="aws-resource-iot-jobtemplate-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the job template Id. For example:

 `{ "Ref": "MyJobTemplate-12345" }` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-jobtemplate-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The ARN of the job to use as the basis for the job template.

# AWS::IoT::JobTemplate AbortConfig
<a name="aws-properties-iot-jobtemplate-abortconfig"></a>

The criteria that determine when and how a job abort takes place.

## Syntax
<a name="aws-properties-iot-jobtemplate-abortconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-abortconfig-syntax.json"></a>

```
{
  "[CriteriaList](#cfn-iot-jobtemplate-abortconfig-criterialist)" : [ AbortCriteria, ... ]
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-abortconfig-syntax.yaml"></a>

```
  [CriteriaList](#cfn-iot-jobtemplate-abortconfig-criterialist): 
    - AbortCriteria
```

## Properties
<a name="aws-properties-iot-jobtemplate-abortconfig-properties"></a>

`CriteriaList`  <a name="cfn-iot-jobtemplate-abortconfig-criterialist"></a>
The list of criteria that determine when and how to abort the job.  
*Required*: Yes  
*Type*: Array of [AbortCriteria](aws-properties-iot-jobtemplate-abortcriteria.md)  
*Minimum*: `1`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate AbortCriteria
<a name="aws-properties-iot-jobtemplate-abortcriteria"></a>

The criteria that determine when and how a job abort takes place.

## Syntax
<a name="aws-properties-iot-jobtemplate-abortcriteria-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-abortcriteria-syntax.json"></a>

```
{
  "[Action](#cfn-iot-jobtemplate-abortcriteria-action)" : String,
  "[FailureType](#cfn-iot-jobtemplate-abortcriteria-failuretype)" : String,
  "[MinNumberOfExecutedThings](#cfn-iot-jobtemplate-abortcriteria-minnumberofexecutedthings)" : Integer,
  "[ThresholdPercentage](#cfn-iot-jobtemplate-abortcriteria-thresholdpercentage)" : Number
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-abortcriteria-syntax.yaml"></a>

```
  [Action](#cfn-iot-jobtemplate-abortcriteria-action): String
  [FailureType](#cfn-iot-jobtemplate-abortcriteria-failuretype): String
  [MinNumberOfExecutedThings](#cfn-iot-jobtemplate-abortcriteria-minnumberofexecutedthings): Integer
  [ThresholdPercentage](#cfn-iot-jobtemplate-abortcriteria-thresholdpercentage): Number
```

## Properties
<a name="aws-properties-iot-jobtemplate-abortcriteria-properties"></a>

`Action`  <a name="cfn-iot-jobtemplate-abortcriteria-action"></a>
The type of job action to take to initiate the job abort.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `CANCEL`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`FailureType`  <a name="cfn-iot-jobtemplate-abortcriteria-failuretype"></a>
The type of job execution failures that can initiate a job abort.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `FAILED | REJECTED | TIMED_OUT | ALL`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`MinNumberOfExecutedThings`  <a name="cfn-iot-jobtemplate-abortcriteria-minnumberofexecutedthings"></a>
The minimum number of things which must receive job execution notifications before the job can be aborted.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ThresholdPercentage`  <a name="cfn-iot-jobtemplate-abortcriteria-thresholdpercentage"></a>
The minimum percentage of job execution failures that must occur to initiate the job abort.  
AWS IoT Core supports up to two digits after the decimal (for example, 10.9 and 10.99, but not 10.999).  
*Required*: Yes  
*Type*: Number  
*Maximum*: `100`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate ExponentialRolloutRate
<a name="aws-properties-iot-jobtemplate-exponentialrolloutrate"></a>

Allows you to create an exponential rate of rollout for a job.

## Syntax
<a name="aws-properties-iot-jobtemplate-exponentialrolloutrate-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-exponentialrolloutrate-syntax.json"></a>

```
{
  "[BaseRatePerMinute](#cfn-iot-jobtemplate-exponentialrolloutrate-baserateperminute)" : Integer,
  "[IncrementFactor](#cfn-iot-jobtemplate-exponentialrolloutrate-incrementfactor)" : Number,
  "[RateIncreaseCriteria](#cfn-iot-jobtemplate-exponentialrolloutrate-rateincreasecriteria)" : RateIncreaseCriteria
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-exponentialrolloutrate-syntax.yaml"></a>

```
  [BaseRatePerMinute](#cfn-iot-jobtemplate-exponentialrolloutrate-baserateperminute): Integer
  [IncrementFactor](#cfn-iot-jobtemplate-exponentialrolloutrate-incrementfactor): Number
  [RateIncreaseCriteria](#cfn-iot-jobtemplate-exponentialrolloutrate-rateincreasecriteria): 
    RateIncreaseCriteria
```

## Properties
<a name="aws-properties-iot-jobtemplate-exponentialrolloutrate-properties"></a>

`BaseRatePerMinute`  <a name="cfn-iot-jobtemplate-exponentialrolloutrate-baserateperminute"></a>
The minimum number of things that will be notified of a pending job, per minute at the start of job rollout. This parameter allows you to define the initial rate of rollout.   
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`IncrementFactor`  <a name="cfn-iot-jobtemplate-exponentialrolloutrate-incrementfactor"></a>
The exponential factor to increase the rate of rollout for a job.  
AWS IoT Core supports up to one digit after the decimal (for example, 1.5, but not 1.55).  
*Required*: Yes  
*Type*: Number  
*Minimum*: `1`  
*Maximum*: `5`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`RateIncreaseCriteria`  <a name="cfn-iot-jobtemplate-exponentialrolloutrate-rateincreasecriteria"></a>
The criteria to initiate the increase in rate of rollout for a job.  
*Required*: Yes  
*Type*: [RateIncreaseCriteria](aws-properties-iot-jobtemplate-rateincreasecriteria.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate JobExecutionsRetryConfig
<a name="aws-properties-iot-jobtemplate-jobexecutionsretryconfig"></a>

The configuration that determines how many retries are allowed for each failure type for a job.

## Syntax
<a name="aws-properties-iot-jobtemplate-jobexecutionsretryconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-jobexecutionsretryconfig-syntax.json"></a>

```
{
  "[RetryCriteriaList](#cfn-iot-jobtemplate-jobexecutionsretryconfig-retrycriterialist)" : [ RetryCriteria, ... ]
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-jobexecutionsretryconfig-syntax.yaml"></a>

```
  [RetryCriteriaList](#cfn-iot-jobtemplate-jobexecutionsretryconfig-retrycriterialist): 
    - RetryCriteria
```

## Properties
<a name="aws-properties-iot-jobtemplate-jobexecutionsretryconfig-properties"></a>

`RetryCriteriaList`  <a name="cfn-iot-jobtemplate-jobexecutionsretryconfig-retrycriterialist"></a>
The list of criteria that determines how many retries are allowed for each failure type for a job.  
*Required*: No  
*Type*: Array of [RetryCriteria](aws-properties-iot-jobtemplate-retrycriteria.md)  
*Minimum*: `1`  
*Maximum*: `2`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate JobExecutionsRolloutConfig
<a name="aws-properties-iot-jobtemplate-jobexecutionsrolloutconfig"></a>

Allows you to create a staged rollout of a job.

## Syntax
<a name="aws-properties-iot-jobtemplate-jobexecutionsrolloutconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-jobexecutionsrolloutconfig-syntax.json"></a>

```
{
  "[ExponentialRolloutRate](#cfn-iot-jobtemplate-jobexecutionsrolloutconfig-exponentialrolloutrate)" : ExponentialRolloutRate,
  "[MaximumPerMinute](#cfn-iot-jobtemplate-jobexecutionsrolloutconfig-maximumperminute)" : Integer
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-jobexecutionsrolloutconfig-syntax.yaml"></a>

```
  [ExponentialRolloutRate](#cfn-iot-jobtemplate-jobexecutionsrolloutconfig-exponentialrolloutrate): 
    ExponentialRolloutRate
  [MaximumPerMinute](#cfn-iot-jobtemplate-jobexecutionsrolloutconfig-maximumperminute): Integer
```

## Properties
<a name="aws-properties-iot-jobtemplate-jobexecutionsrolloutconfig-properties"></a>

`ExponentialRolloutRate`  <a name="cfn-iot-jobtemplate-jobexecutionsrolloutconfig-exponentialrolloutrate"></a>
The rate of increase for a job rollout. This parameter allows you to define an exponential rate for a job rollout.  
*Required*: No  
*Type*: [ExponentialRolloutRate](aws-properties-iot-jobtemplate-exponentialrolloutrate.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`MaximumPerMinute`  <a name="cfn-iot-jobtemplate-jobexecutionsrolloutconfig-maximumperminute"></a>
The maximum number of things that will be notified of a pending job, per minute. This parameter allows you to create a staged rollout.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate MaintenanceWindow
<a name="aws-properties-iot-jobtemplate-maintenancewindow"></a>

An optional configuration within the `SchedulingConfig` to setup a recurring maintenance window with a predetermined start time and duration for the rollout of a job document to all devices in a target group for a job.

## Syntax
<a name="aws-properties-iot-jobtemplate-maintenancewindow-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-maintenancewindow-syntax.json"></a>

```
{
  "[DurationInMinutes](#cfn-iot-jobtemplate-maintenancewindow-durationinminutes)" : Integer,
  "[StartTime](#cfn-iot-jobtemplate-maintenancewindow-starttime)" : String
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-maintenancewindow-syntax.yaml"></a>

```
  [DurationInMinutes](#cfn-iot-jobtemplate-maintenancewindow-durationinminutes): Integer
  [StartTime](#cfn-iot-jobtemplate-maintenancewindow-starttime): String
```

## Properties
<a name="aws-properties-iot-jobtemplate-maintenancewindow-properties"></a>

`DurationInMinutes`  <a name="cfn-iot-jobtemplate-maintenancewindow-durationinminutes"></a>
Displays the duration of the next maintenance window.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Maximum*: `1430`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`StartTime`  <a name="cfn-iot-jobtemplate-maintenancewindow-starttime"></a>
Displays the start time of the next maintenance window.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate PresignedUrlConfig
<a name="aws-properties-iot-jobtemplate-presignedurlconfig"></a>

Configuration for pre-signed S3 URLs.

## Syntax
<a name="aws-properties-iot-jobtemplate-presignedurlconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-presignedurlconfig-syntax.json"></a>

```
{
  "[ExpiresInSec](#cfn-iot-jobtemplate-presignedurlconfig-expiresinsec)" : Integer,
  "[RoleArn](#cfn-iot-jobtemplate-presignedurlconfig-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-presignedurlconfig-syntax.yaml"></a>

```
  [ExpiresInSec](#cfn-iot-jobtemplate-presignedurlconfig-expiresinsec): Integer
  [RoleArn](#cfn-iot-jobtemplate-presignedurlconfig-rolearn): String
```

## Properties
<a name="aws-properties-iot-jobtemplate-presignedurlconfig-properties"></a>

`ExpiresInSec`  <a name="cfn-iot-jobtemplate-presignedurlconfig-expiresinsec"></a>
How long (in seconds) pre-signed URLs are valid. Valid values are 60 - 3600, the default value is 3600 seconds. Pre-signed URLs are generated when Jobs receives an MQTT request for the job document.  
*Required*: No  
*Type*: Integer  
*Minimum*: `60`  
*Maximum*: `3600`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`RoleArn`  <a name="cfn-iot-jobtemplate-presignedurlconfig-rolearn"></a>
The ARN of an IAM role that grants grants permission to download files from the S3 bucket where the job data/updates are stored. The role must also grant permission for IoT to download the files.  
For information about addressing the confused deputy problem, see [cross-service confused deputy prevention](https://docs.aws.amazon.com/iot/latest/developerguide/cross-service-confused-deputy-prevention.html) in the *AWS IoT Core developer guide*.
*Required*: Yes  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate RateIncreaseCriteria
<a name="aws-properties-iot-jobtemplate-rateincreasecriteria"></a>

Allows you to define a criteria to initiate the increase in rate of rollout for a job.

## Syntax
<a name="aws-properties-iot-jobtemplate-rateincreasecriteria-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-rateincreasecriteria-syntax.json"></a>

```
{
  "[NumberOfNotifiedThings](#cfn-iot-jobtemplate-rateincreasecriteria-numberofnotifiedthings)" : Integer,
  "[NumberOfSucceededThings](#cfn-iot-jobtemplate-rateincreasecriteria-numberofsucceededthings)" : Integer
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-rateincreasecriteria-syntax.yaml"></a>

```
  [NumberOfNotifiedThings](#cfn-iot-jobtemplate-rateincreasecriteria-numberofnotifiedthings): Integer
  [NumberOfSucceededThings](#cfn-iot-jobtemplate-rateincreasecriteria-numberofsucceededthings): Integer
```

## Properties
<a name="aws-properties-iot-jobtemplate-rateincreasecriteria-properties"></a>

`NumberOfNotifiedThings`  <a name="cfn-iot-jobtemplate-rateincreasecriteria-numberofnotifiedthings"></a>
The threshold for number of notified things that will initiate the increase in rate of rollout.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`NumberOfSucceededThings`  <a name="cfn-iot-jobtemplate-rateincreasecriteria-numberofsucceededthings"></a>
The threshold for number of succeeded things that will initiate the increase in rate of rollout.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate RetryCriteria
<a name="aws-properties-iot-jobtemplate-retrycriteria"></a>

The criteria that determines how many retries are allowed for each failure type for a job.

## Syntax
<a name="aws-properties-iot-jobtemplate-retrycriteria-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-retrycriteria-syntax.json"></a>

```
{
  "[FailureType](#cfn-iot-jobtemplate-retrycriteria-failuretype)" : String,
  "[NumberOfRetries](#cfn-iot-jobtemplate-retrycriteria-numberofretries)" : Integer
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-retrycriteria-syntax.yaml"></a>

```
  [FailureType](#cfn-iot-jobtemplate-retrycriteria-failuretype): String
  [NumberOfRetries](#cfn-iot-jobtemplate-retrycriteria-numberofretries): Integer
```

## Properties
<a name="aws-properties-iot-jobtemplate-retrycriteria-properties"></a>

`FailureType`  <a name="cfn-iot-jobtemplate-retrycriteria-failuretype"></a>
The type of job execution failures that can initiate a job retry.  
*Required*: No  
*Type*: String  
*Allowed values*: `FAILED | TIMED_OUT | ALL`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`NumberOfRetries`  <a name="cfn-iot-jobtemplate-retrycriteria-numberofretries"></a>
The number of retries allowed for a failure type for the job.  
*Required*: No  
*Type*: Integer  
*Minimum*: `0`  
*Maximum*: `10`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate Tag
<a name="aws-properties-iot-jobtemplate-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-jobtemplate-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-jobtemplate-tag-key): String
  [Value](#cfn-iot-jobtemplate-tag-value): String
```

## Properties
<a name="aws-properties-iot-jobtemplate-tag-properties"></a>

`Key`  <a name="cfn-iot-jobtemplate-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Value`  <a name="cfn-iot-jobtemplate-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::JobTemplate TimeoutConfig
<a name="aws-properties-iot-jobtemplate-timeoutconfig"></a>

Specifies the amount of time each device has to finish its execution of the job. A timer is started when the job execution status is set to `IN_PROGRESS`. If the job execution status is not set to another terminal state before the timer expires, it will be automatically set to `TIMED_OUT`.

## Syntax
<a name="aws-properties-iot-jobtemplate-timeoutconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-jobtemplate-timeoutconfig-syntax.json"></a>

```
{
  "[InProgressTimeoutInMinutes](#cfn-iot-jobtemplate-timeoutconfig-inprogresstimeoutinminutes)" : Integer
}
```

### YAML
<a name="aws-properties-iot-jobtemplate-timeoutconfig-syntax.yaml"></a>

```
  [InProgressTimeoutInMinutes](#cfn-iot-jobtemplate-timeoutconfig-inprogresstimeoutinminutes): Integer
```

## Properties
<a name="aws-properties-iot-jobtemplate-timeoutconfig-properties"></a>

`InProgressTimeoutInMinutes`  <a name="cfn-iot-jobtemplate-timeoutconfig-inprogresstimeoutinminutes"></a>
Specifies the amount of time, in minutes, this device has to finish execution of this job. The timeout interval can be anywhere between 1 minute and 7 days (1 to 10080 minutes). The in progress timer can't be updated and will apply to all job executions for the job. Whenever a job execution remains in the IN\$1PROGRESS status for longer than this interval, the job execution will fail and switch to the terminal `TIMED_OUT` status.  
*Required*: Yes  
*Type*: Integer  
*Minimum*: `1`  
*Maximum*: `10080`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::Logging
<a name="aws-resource-iot-logging"></a>

Configure logging.

**Note**  
If you already set the log function of AWS IoT Core, you can't deploy the AWS Cloud Development Kit (AWS CDK) to change the logging settings. You can change the logging settings by either:  
Importing the existing logging resource into your CloudFormation stack, such as with the [infrastructure as code generator (IaC generator)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/generate-IaC.html).
Calling `aws iot set-v2-logging-options --disable-all-logs` before creating a new CloudFormation stack. This command disables all AWS IoT logging. As a result, no AWS IoT logs will be delivered to Amazon CloudWatch until you re-enable logging.

## Syntax
<a name="aws-resource-iot-logging-syntax"></a>

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

### JSON
<a name="aws-resource-iot-logging-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::Logging",
  "Properties" : {
      "[AccountId](#cfn-iot-logging-accountid)" : String,
      "[DefaultLogLevel](#cfn-iot-logging-defaultloglevel)" : String,
      "[EventConfigurations](#cfn-iot-logging-eventconfigurations)" : [ EventConfiguration, ... ],
      "[RoleArn](#cfn-iot-logging-rolearn)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-logging-syntax.yaml"></a>

```
Type: AWS::IoT::Logging
Properties:
  [AccountId](#cfn-iot-logging-accountid): String
  [DefaultLogLevel](#cfn-iot-logging-defaultloglevel): String
  [EventConfigurations](#cfn-iot-logging-eventconfigurations): 
    - EventConfiguration
  [RoleArn](#cfn-iot-logging-rolearn): String
```

## Properties
<a name="aws-resource-iot-logging-properties"></a>

`AccountId`  <a name="cfn-iot-logging-accountid"></a>
The account ID.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^[0-9]{12}$`  
*Minimum*: `12`  
*Maximum*: `12`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`DefaultLogLevel`  <a name="cfn-iot-logging-defaultloglevel"></a>
The default log level. Valid Values: `DEBUG | INFO | ERROR | WARN | DISABLED`  
*Required*: Yes  
*Type*: String  
*Allowed values*: `ERROR | WARN | INFO | DEBUG | DISABLED`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`EventConfigurations`  <a name="cfn-iot-logging-eventconfigurations"></a>
Configurations for event-based logging that specifies which event types to log and their logging settings. Overrides account-level logging for the specified event.  
*Required*: No  
*Type*: Array of [EventConfiguration](aws-properties-iot-logging-eventconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-logging-rolearn"></a>
The role ARN used for the log.  
*Required*: Yes  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*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-iot-logging-return-values"></a>

### Ref
<a name="aws-resource-iot-logging-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the log ID. For example:

 `{"Ref": "Log-12345"}` 

# AWS::IoT::Logging EventConfiguration
<a name="aws-properties-iot-logging-eventconfiguration"></a>

Configuration for event-based logging that specifies which event types to log and their logging settings. Used for account-level logging overrides.

## Syntax
<a name="aws-properties-iot-logging-eventconfiguration-syntax"></a>

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

### JSON
<a name="aws-properties-iot-logging-eventconfiguration-syntax.json"></a>

```
{
  "[EventType](#cfn-iot-logging-eventconfiguration-eventtype)" : String,
  "[LogDestination](#cfn-iot-logging-eventconfiguration-logdestination)" : String,
  "[LogLevel](#cfn-iot-logging-eventconfiguration-loglevel)" : String
}
```

### YAML
<a name="aws-properties-iot-logging-eventconfiguration-syntax.yaml"></a>

```
  [EventType](#cfn-iot-logging-eventconfiguration-eventtype): String
  [LogDestination](#cfn-iot-logging-eventconfiguration-logdestination): String
  [LogLevel](#cfn-iot-logging-eventconfiguration-loglevel): String
```

## Properties
<a name="aws-properties-iot-logging-eventconfiguration-properties"></a>

`EventType`  <a name="cfn-iot-logging-eventconfiguration-eventtype"></a>
The type of event to log. These include event types like Connect, Publish, and Disconnect.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `512`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`LogDestination`  <a name="cfn-iot-logging-eventconfiguration-logdestination"></a>
CloudWatch Log Group for event-based logging. Specifies where log events should be sent. The log destination for event-based logging overrides default Log Group for the specified event type and applies to all resources associated with that event.  
*Required*: No  
*Type*: String  
*Pattern*: `^(?!aws/)[a-zA-Z0-9_\-/.#]+$`  
*Minimum*: `1`  
*Maximum*: `512`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`LogLevel`  <a name="cfn-iot-logging-eventconfiguration-loglevel"></a>
The logging level for the specified event type. Determines the verbosity of log messages generated for this event type. Valid Values: `ERROR | WARN | INFO | DEBUG | DISABLED`  
*Required*: No  
*Type*: String  
*Allowed values*: `ERROR | WARN | INFO | DEBUG | DISABLED`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction
<a name="aws-resource-iot-mitigationaction"></a>

Defines an action that can be applied to audit findings by using StartAuditMitigationActionsTask. For API reference, see [CreateMitigationAction](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateMitigationAction.html) and for general information, see [Mitigation actions](https://docs.aws.amazon.com/iot/latest/developerguide/dd-mitigation-actions.html).

## Syntax
<a name="aws-resource-iot-mitigationaction-syntax"></a>

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

### JSON
<a name="aws-resource-iot-mitigationaction-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::MitigationAction",
  "Properties" : {
      "[ActionName](#cfn-iot-mitigationaction-actionname)" : String,
      "[ActionParams](#cfn-iot-mitigationaction-actionparams)" : ActionParams,
      "[RoleArn](#cfn-iot-mitigationaction-rolearn)" : String,
      "[Tags](#cfn-iot-mitigationaction-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-mitigationaction-syntax.yaml"></a>

```
Type: AWS::IoT::MitigationAction
Properties:
  [ActionName](#cfn-iot-mitigationaction-actionname): String
  [ActionParams](#cfn-iot-mitigationaction-actionparams): 
    ActionParams
  [RoleArn](#cfn-iot-mitigationaction-rolearn): String
  [Tags](#cfn-iot-mitigationaction-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-mitigationaction-properties"></a>

`ActionName`  <a name="cfn-iot-mitigationaction-actionname"></a>
The friendly name of the mitigation action.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ActionParams`  <a name="cfn-iot-mitigationaction-actionparams"></a>
The set of parameters for this mitigation action. The parameters vary, depending on the kind of action you apply.  
*Required*: Yes  
*Type*: [ActionParams](aws-properties-iot-mitigationaction-actionparams.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-mitigationaction-rolearn"></a>
The IAM role ARN used to apply this mitigation action.  
*Required*: Yes  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*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-iot-mitigationaction-tags"></a>
Metadata that can be used to manage the mitigation action.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-mitigationaction-tag.md)  
*Maximum*: `50`  
*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-iot-mitigationaction-return-values"></a>

### Ref
<a name="aws-resource-iot-mitigationaction-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the mitigation action name.

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-mitigationaction-return-values-fn--getatt-fn--getatt"></a>

`MitigationActionArn`  <a name="MitigationActionArn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the mitigation action.

`MitigationActionId`  <a name="MitigationActionId-fn::getatt"></a>
The ID of the mitigation action.

## Examples
<a name="aws-resource-iot-mitigationaction--examples"></a>



### 
<a name="aws-resource-iot-mitigationaction--examples--"></a>



#### JSON
<a name="aws-resource-iot-mitigationaction--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Amazon Web Services IoT MitigationAction Sample Template",
  "Resources": {
    "PublishToSnsMitigationAction": {
      "Type": "AWS::IoT::MitigationAction",
      "Properties": {
        "ActionName": "PublishToSns",
        "RoleArn": "arn:aws:us-east-1:123456789012:iam:role/RoleForIoTMitigationActions",
        "ActionParams": {
          "PublishFindingToSnsParams": {
            "TopicArn": "arn:aws:sns:us-east-1:123456789012:IoTFindingNotifications"
          }
        }
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-mitigationaction--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon Web Services IoT MitigationAction Sample Template
Resources:
  PublishToSnsMitigationAction:
    Type: AWS::IoT::MitigationAction
    Properties:
      ActionName: PublishToSns
      RoleArn: arn:aws:us-east-1:123456789012:iam:role/RoleForIoTMitigationActions
      ActionParams:
        PublishFindingToSnsParams:
          TopicArn: arn:aws:sns:us-east-1:123456789012:IoTFindingNotifications
```

# AWS::IoT::MitigationAction ActionParams
<a name="aws-properties-iot-mitigationaction-actionparams"></a>

Defines the type of action and the parameters for that action.

## Syntax
<a name="aws-properties-iot-mitigationaction-actionparams-syntax"></a>

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

### JSON
<a name="aws-properties-iot-mitigationaction-actionparams-syntax.json"></a>

```
{
  "[AddThingsToThingGroupParams](#cfn-iot-mitigationaction-actionparams-addthingstothinggroupparams)" : AddThingsToThingGroupParams,
  "[EnableIoTLoggingParams](#cfn-iot-mitigationaction-actionparams-enableiotloggingparams)" : EnableIoTLoggingParams,
  "[PublishFindingToSnsParams](#cfn-iot-mitigationaction-actionparams-publishfindingtosnsparams)" : PublishFindingToSnsParams,
  "[ReplaceDefaultPolicyVersionParams](#cfn-iot-mitigationaction-actionparams-replacedefaultpolicyversionparams)" : ReplaceDefaultPolicyVersionParams,
  "[UpdateCACertificateParams](#cfn-iot-mitigationaction-actionparams-updatecacertificateparams)" : UpdateCACertificateParams,
  "[UpdateDeviceCertificateParams](#cfn-iot-mitigationaction-actionparams-updatedevicecertificateparams)" : UpdateDeviceCertificateParams
}
```

### YAML
<a name="aws-properties-iot-mitigationaction-actionparams-syntax.yaml"></a>

```
  [AddThingsToThingGroupParams](#cfn-iot-mitigationaction-actionparams-addthingstothinggroupparams): 
    AddThingsToThingGroupParams
  [EnableIoTLoggingParams](#cfn-iot-mitigationaction-actionparams-enableiotloggingparams): 
    EnableIoTLoggingParams
  [PublishFindingToSnsParams](#cfn-iot-mitigationaction-actionparams-publishfindingtosnsparams): 
    PublishFindingToSnsParams
  [ReplaceDefaultPolicyVersionParams](#cfn-iot-mitigationaction-actionparams-replacedefaultpolicyversionparams): 
    ReplaceDefaultPolicyVersionParams
  [UpdateCACertificateParams](#cfn-iot-mitigationaction-actionparams-updatecacertificateparams): 
    UpdateCACertificateParams
  [UpdateDeviceCertificateParams](#cfn-iot-mitigationaction-actionparams-updatedevicecertificateparams): 
    UpdateDeviceCertificateParams
```

## Properties
<a name="aws-properties-iot-mitigationaction-actionparams-properties"></a>

`AddThingsToThingGroupParams`  <a name="cfn-iot-mitigationaction-actionparams-addthingstothinggroupparams"></a>
Specifies the group to which you want to add the devices.  
*Required*: No  
*Type*: [AddThingsToThingGroupParams](aws-properties-iot-mitigationaction-addthingstothinggroupparams.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`EnableIoTLoggingParams`  <a name="cfn-iot-mitigationaction-actionparams-enableiotloggingparams"></a>
Specifies the logging level and the role with permissions for logging. You cannot specify a logging level of `DISABLED`.  
*Required*: No  
*Type*: [EnableIoTLoggingParams](aws-properties-iot-mitigationaction-enableiotloggingparams.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PublishFindingToSnsParams`  <a name="cfn-iot-mitigationaction-actionparams-publishfindingtosnsparams"></a>
Specifies the topic to which the finding should be published.  
*Required*: No  
*Type*: [PublishFindingToSnsParams](aws-properties-iot-mitigationaction-publishfindingtosnsparams.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ReplaceDefaultPolicyVersionParams`  <a name="cfn-iot-mitigationaction-actionparams-replacedefaultpolicyversionparams"></a>
Replaces the policy version with a default or blank policy. You specify the template name. Only a value of `BLANK_POLICY` is currently supported.  
*Required*: No  
*Type*: [ReplaceDefaultPolicyVersionParams](aws-properties-iot-mitigationaction-replacedefaultpolicyversionparams.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`UpdateCACertificateParams`  <a name="cfn-iot-mitigationaction-actionparams-updatecacertificateparams"></a>
Specifies the new state for the CA certificate. Only a value of `DEACTIVATE` is currently supported.  
*Required*: No  
*Type*: [UpdateCACertificateParams](aws-properties-iot-mitigationaction-updatecacertificateparams.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`UpdateDeviceCertificateParams`  <a name="cfn-iot-mitigationaction-actionparams-updatedevicecertificateparams"></a>
Specifies the new state for a device certificate. Only a value of `DEACTIVATE` is currently supported.  
*Required*: No  
*Type*: [UpdateDeviceCertificateParams](aws-properties-iot-mitigationaction-updatedevicecertificateparams.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction AddThingsToThingGroupParams
<a name="aws-properties-iot-mitigationaction-addthingstothinggroupparams"></a>

Parameters used when defining a mitigation action that move a set of things to a thing group.

## Syntax
<a name="aws-properties-iot-mitigationaction-addthingstothinggroupparams-syntax"></a>

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

### JSON
<a name="aws-properties-iot-mitigationaction-addthingstothinggroupparams-syntax.json"></a>

```
{
  "[OverrideDynamicGroups](#cfn-iot-mitigationaction-addthingstothinggroupparams-overridedynamicgroups)" : Boolean,
  "[ThingGroupNames](#cfn-iot-mitigationaction-addthingstothinggroupparams-thinggroupnames)" : [ String, ... ]
}
```

### YAML
<a name="aws-properties-iot-mitigationaction-addthingstothinggroupparams-syntax.yaml"></a>

```
  [OverrideDynamicGroups](#cfn-iot-mitigationaction-addthingstothinggroupparams-overridedynamicgroups): Boolean
  [ThingGroupNames](#cfn-iot-mitigationaction-addthingstothinggroupparams-thinggroupnames): 
    - String
```

## Properties
<a name="aws-properties-iot-mitigationaction-addthingstothinggroupparams-properties"></a>

`OverrideDynamicGroups`  <a name="cfn-iot-mitigationaction-addthingstothinggroupparams-overridedynamicgroups"></a>
Specifies if this mitigation action can move the things that triggered the mitigation action even if they are part of one or more dynamic thing groups.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ThingGroupNames`  <a name="cfn-iot-mitigationaction-addthingstothinggroupparams-thinggroupnames"></a>
The list of groups to which you want to add the things that triggered the mitigation action. You can add a thing to a maximum of 10 groups, but you can't add a thing to more than one group in the same hierarchy.  
*Required*: Yes  
*Type*: Array of String  
*Minimum*: `1 | 1`  
*Maximum*: `128 | 10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction EnableIoTLoggingParams
<a name="aws-properties-iot-mitigationaction-enableiotloggingparams"></a>

Parameters used when defining a mitigation action that enable AWS IoT Core logging.

## Syntax
<a name="aws-properties-iot-mitigationaction-enableiotloggingparams-syntax"></a>

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

### JSON
<a name="aws-properties-iot-mitigationaction-enableiotloggingparams-syntax.json"></a>

```
{
  "[LogLevel](#cfn-iot-mitigationaction-enableiotloggingparams-loglevel)" : String,
  "[RoleArnForLogging](#cfn-iot-mitigationaction-enableiotloggingparams-rolearnforlogging)" : String
}
```

### YAML
<a name="aws-properties-iot-mitigationaction-enableiotloggingparams-syntax.yaml"></a>

```
  [LogLevel](#cfn-iot-mitigationaction-enableiotloggingparams-loglevel): String
  [RoleArnForLogging](#cfn-iot-mitigationaction-enableiotloggingparams-rolearnforlogging): String
```

## Properties
<a name="aws-properties-iot-mitigationaction-enableiotloggingparams-properties"></a>

`LogLevel`  <a name="cfn-iot-mitigationaction-enableiotloggingparams-loglevel"></a>
Specifies the type of information to be logged.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `DEBUG | INFO | ERROR | WARN | UNSET_VALUE`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArnForLogging`  <a name="cfn-iot-mitigationaction-enableiotloggingparams-rolearnforlogging"></a>
The Amazon Resource Name (ARN) of the IAM role used for logging.  
*Required*: Yes  
*Type*: String  
*Minimum*: `11`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction PublishFindingToSnsParams
<a name="aws-properties-iot-mitigationaction-publishfindingtosnsparams"></a>

Parameters to define a mitigation action that publishes findings to Amazon SNS. You can implement your own custom actions in response to the Amazon SNS messages.

## Syntax
<a name="aws-properties-iot-mitigationaction-publishfindingtosnsparams-syntax"></a>

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

### JSON
<a name="aws-properties-iot-mitigationaction-publishfindingtosnsparams-syntax.json"></a>

```
{
  "[TopicArn](#cfn-iot-mitigationaction-publishfindingtosnsparams-topicarn)" : String
}
```

### YAML
<a name="aws-properties-iot-mitigationaction-publishfindingtosnsparams-syntax.yaml"></a>

```
  [TopicArn](#cfn-iot-mitigationaction-publishfindingtosnsparams-topicarn): String
```

## Properties
<a name="aws-properties-iot-mitigationaction-publishfindingtosnsparams-properties"></a>

`TopicArn`  <a name="cfn-iot-mitigationaction-publishfindingtosnsparams-topicarn"></a>
The ARN of the topic to which you want to publish the findings.  
*Required*: Yes  
*Type*: String  
*Minimum*: `11`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction ReplaceDefaultPolicyVersionParams
<a name="aws-properties-iot-mitigationaction-replacedefaultpolicyversionparams"></a>

Parameters to define a mitigation action that adds a blank policy to restrict permissions.

## Syntax
<a name="aws-properties-iot-mitigationaction-replacedefaultpolicyversionparams-syntax"></a>

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

### JSON
<a name="aws-properties-iot-mitigationaction-replacedefaultpolicyversionparams-syntax.json"></a>

```
{
  "[TemplateName](#cfn-iot-mitigationaction-replacedefaultpolicyversionparams-templatename)" : String
}
```

### YAML
<a name="aws-properties-iot-mitigationaction-replacedefaultpolicyversionparams-syntax.yaml"></a>

```
  [TemplateName](#cfn-iot-mitigationaction-replacedefaultpolicyversionparams-templatename): String
```

## Properties
<a name="aws-properties-iot-mitigationaction-replacedefaultpolicyversionparams-properties"></a>

`TemplateName`  <a name="cfn-iot-mitigationaction-replacedefaultpolicyversionparams-templatename"></a>
The name of the template to be applied. The only supported value is `BLANK_POLICY`.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `BLANK_POLICY | UNSET_VALUE`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction Tag
<a name="aws-properties-iot-mitigationaction-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-mitigationaction-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-mitigationaction-tag-key): String
  [Value](#cfn-iot-mitigationaction-tag-value): String
```

## Properties
<a name="aws-properties-iot-mitigationaction-tag-properties"></a>

`Key`  <a name="cfn-iot-mitigationaction-tag-key"></a>
The tag's key.  
*Required*: Yes  
*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-iot-mitigationaction-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction UpdateCACertificateParams
<a name="aws-properties-iot-mitigationaction-updatecacertificateparams"></a>

Parameters to define a mitigation action that changes the state of the CA certificate to inactive.

## Syntax
<a name="aws-properties-iot-mitigationaction-updatecacertificateparams-syntax"></a>

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

### JSON
<a name="aws-properties-iot-mitigationaction-updatecacertificateparams-syntax.json"></a>

```
{
  "[Action](#cfn-iot-mitigationaction-updatecacertificateparams-action)" : String
}
```

### YAML
<a name="aws-properties-iot-mitigationaction-updatecacertificateparams-syntax.yaml"></a>

```
  [Action](#cfn-iot-mitigationaction-updatecacertificateparams-action): String
```

## Properties
<a name="aws-properties-iot-mitigationaction-updatecacertificateparams-properties"></a>

`Action`  <a name="cfn-iot-mitigationaction-updatecacertificateparams-action"></a>
The action that you want to apply to the CA certificate. The only supported value is `DEACTIVATE`.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `DEACTIVATE | UNSET_VALUE`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::MitigationAction UpdateDeviceCertificateParams
<a name="aws-properties-iot-mitigationaction-updatedevicecertificateparams"></a>

Parameters to define a mitigation action that changes the state of the device certificate to inactive.

## Syntax
<a name="aws-properties-iot-mitigationaction-updatedevicecertificateparams-syntax"></a>

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

### JSON
<a name="aws-properties-iot-mitigationaction-updatedevicecertificateparams-syntax.json"></a>

```
{
  "[Action](#cfn-iot-mitigationaction-updatedevicecertificateparams-action)" : String
}
```

### YAML
<a name="aws-properties-iot-mitigationaction-updatedevicecertificateparams-syntax.yaml"></a>

```
  [Action](#cfn-iot-mitigationaction-updatedevicecertificateparams-action): String
```

## Properties
<a name="aws-properties-iot-mitigationaction-updatedevicecertificateparams-properties"></a>

`Action`  <a name="cfn-iot-mitigationaction-updatedevicecertificateparams-action"></a>
The action that you want to apply to the device certificate. The only supported value is `DEACTIVATE`.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `DEACTIVATE | UNSET_VALUE`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Policy
<a name="aws-resource-iot-policy"></a>

Use the `AWS::IoT::Policy` resource to declare an AWS IoT policy. For more information about working with AWS IoT policies, see [Authorization](https://docs.aws.amazon.com/iot/latest/developerguide/authorization.html) in the *AWS IoT Developer Guide*.

## Syntax
<a name="aws-resource-iot-policy-syntax"></a>

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

### JSON
<a name="aws-resource-iot-policy-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::Policy",
  "Properties" : {
      "[PolicyDocument](#cfn-iot-policy-policydocument)" : Json,
      "[PolicyName](#cfn-iot-policy-policyname)" : String,
      "[Tags](#cfn-iot-policy-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-policy-syntax.yaml"></a>

```
Type: AWS::IoT::Policy
Properties:
  [PolicyDocument](#cfn-iot-policy-policydocument): Json
  [PolicyName](#cfn-iot-policy-policyname): String
  [Tags](#cfn-iot-policy-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-policy-properties"></a>

`PolicyDocument`  <a name="cfn-iot-policy-policydocument"></a>
The JSON document that describes the policy.  
*Required*: Yes  
*Type*: Json  
*Minimum*: `1`  
*Maximum*: `404600`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PolicyName`  <a name="cfn-iot-policy-policyname"></a>
The policy name.  
*Required*: No  
*Type*: String  
*Pattern*: `[\w+=,.@-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-policy-tags"></a>
Property description not available.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-policy-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-iot-policy-return-values"></a>

### Ref
<a name="aws-resource-iot-policy-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the policy name. For example:

 `{ "Ref": "MyPolicy" }` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-policy-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the AWS IoT policy, such as `arn:aws:iot:us-east-2:123456789012:policy/MyPolicy`.

`Id`  <a name="Id-fn::getatt"></a>
The name of this policy.

## Examples
<a name="aws-resource-iot-policy--examples"></a>

### 
<a name="aws-resource-iot-policy--examples--"></a>

The following example declares an AWS IoT policy. This example grants permission to connect to AWS IoT with client ID client1.

#### JSON
<a name="aws-resource-iot-policy--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyIoTPolicy": {
      "Type": "AWS::IoT::Policy",
      "Properties": {
        "PolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "iot:Connect"
              ],
              "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1"
              ]
            }
          ]
        },
        "PolicyName": "PolicyName"
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-policy--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyIoTPolicy:
    Type: AWS::IoT::Policy
    Properties:
      PolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
          - Effect: Allow
            Action:
              - iot:Connect
            Resource:
              - arn:aws:iot:us-east-1:123456789012:client/client1
      PolicyName: PolicyName
```

# AWS::IoT::Policy Tag
<a name="aws-properties-iot-policy-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-policy-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-policy-tag-key): String
  [Value](#cfn-iot-policy-tag-value): String
```

## Properties
<a name="aws-properties-iot-policy-tag-properties"></a>

`Key`  <a name="cfn-iot-policy-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-policy-tag-value"></a>
The tag's value.  
*Required*: Yes  
*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)

# AWS::IoT::PolicyPrincipalAttachment
<a name="aws-resource-iot-policyprincipalattachment"></a>

Use the `AWS::IoT::PolicyPrincipalAttachment` resource to attach an AWS IoT policy to a principal (an X.509 certificate or other credential).

For information about working with AWS IoT policies and principals, see [Authorization](https://docs.aws.amazon.com/iot/latest/developerguide/authorization.html) in the *AWS IoT Developer Guide*.

## Syntax
<a name="aws-resource-iot-policyprincipalattachment-syntax"></a>

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

### JSON
<a name="aws-resource-iot-policyprincipalattachment-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::PolicyPrincipalAttachment",
  "Properties" : {
      "[PolicyName](#cfn-iot-policyprincipalattachment-policyname)" : String,
      "[Principal](#cfn-iot-policyprincipalattachment-principal)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-policyprincipalattachment-syntax.yaml"></a>

```
Type: AWS::IoT::PolicyPrincipalAttachment
Properties:
  [PolicyName](#cfn-iot-policyprincipalattachment-policyname): String
  [Principal](#cfn-iot-policyprincipalattachment-principal): String
```

## Properties
<a name="aws-resource-iot-policyprincipalattachment-properties"></a>

`PolicyName`  <a name="cfn-iot-policyprincipalattachment-policyname"></a>
The name of the AWS IoT policy.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Principal`  <a name="cfn-iot-policyprincipalattachment-principal"></a>
The principal, which can be a certificate ARN (as returned from the `CreateCertificate` operation) or an Amazon Cognito ID.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Examples
<a name="aws-resource-iot-policyprincipalattachment--examples"></a>



### 
<a name="aws-resource-iot-policyprincipalattachment--examples--"></a>

The following example attaches a policy to a principal.

#### JSON
<a name="aws-resource-iot-policyprincipalattachment--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyPolicyPrincipalAttachment": {
      "Type": "AWS::IoT::PolicyPrincipalAttachment",
      "Properties": {
        "PolicyName": {
          "Ref": "NameParameter"
        },
        "Principal": "arn:aws:iot:ap-southeast-2:123456789012:cert/a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2"
      }
    }
  },
  "Parameters": {
    "NameParameter": {
      "Type": "String"
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-policyprincipalattachment--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyPolicyPrincipalAttachment:
    Type: AWS::IoT::PolicyPrincipalAttachment
    Properties:
      PolicyName:
        Ref: NameParameter
      Principal: arn:aws:iot:ap-southeast-2:123456789012:cert/a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2

Parameters:
  NameParameter:
    Type: String
```

# AWS::IoT::ProvisioningTemplate
<a name="aws-resource-iot-provisioningtemplate"></a>

Creates a fleet provisioning template.

## Syntax
<a name="aws-resource-iot-provisioningtemplate-syntax"></a>

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

### JSON
<a name="aws-resource-iot-provisioningtemplate-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::ProvisioningTemplate",
  "Properties" : {
      "[Description](#cfn-iot-provisioningtemplate-description)" : String,
      "[Enabled](#cfn-iot-provisioningtemplate-enabled)" : Boolean,
      "[PreProvisioningHook](#cfn-iot-provisioningtemplate-preprovisioninghook)" : ProvisioningHook,
      "[ProvisioningRoleArn](#cfn-iot-provisioningtemplate-provisioningrolearn)" : String,
      "[Tags](#cfn-iot-provisioningtemplate-tags)" : [ Tag, ... ],
      "[TemplateBody](#cfn-iot-provisioningtemplate-templatebody)" : String,
      "[TemplateName](#cfn-iot-provisioningtemplate-templatename)" : String,
      "[TemplateType](#cfn-iot-provisioningtemplate-templatetype)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-provisioningtemplate-syntax.yaml"></a>

```
Type: AWS::IoT::ProvisioningTemplate
Properties:
  [Description](#cfn-iot-provisioningtemplate-description): String
  [Enabled](#cfn-iot-provisioningtemplate-enabled): Boolean
  [PreProvisioningHook](#cfn-iot-provisioningtemplate-preprovisioninghook): 
    ProvisioningHook
  [ProvisioningRoleArn](#cfn-iot-provisioningtemplate-provisioningrolearn): String
  [Tags](#cfn-iot-provisioningtemplate-tags): 
    - Tag
  [TemplateBody](#cfn-iot-provisioningtemplate-templatebody): String
  [TemplateName](#cfn-iot-provisioningtemplate-templatename): String
  [TemplateType](#cfn-iot-provisioningtemplate-templatetype): String
```

## Properties
<a name="aws-resource-iot-provisioningtemplate-properties"></a>

`Description`  <a name="cfn-iot-provisioningtemplate-description"></a>
The description of the fleet provisioning template.  
*Required*: No  
*Type*: String  
*Maximum*: `500`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Enabled`  <a name="cfn-iot-provisioningtemplate-enabled"></a>
True to enable the fleet provisioning template, otherwise false.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PreProvisioningHook`  <a name="cfn-iot-provisioningtemplate-preprovisioninghook"></a>
Creates a pre-provisioning hook template.  
*Required*: No  
*Type*: [ProvisioningHook](aws-properties-iot-provisioningtemplate-provisioninghook.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ProvisioningRoleArn`  <a name="cfn-iot-provisioningtemplate-provisioningrolearn"></a>
The role ARN for the role associated with the fleet provisioning template. This IoT role grants permission to provision a device.  
*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)

`Tags`  <a name="cfn-iot-provisioningtemplate-tags"></a>
Metadata that can be used to manage the fleet provisioning template.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-provisioningtemplate-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TemplateBody`  <a name="cfn-iot-provisioningtemplate-templatebody"></a>
The JSON formatted contents of the fleet provisioning template version.  
*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)

`TemplateName`  <a name="cfn-iot-provisioningtemplate-templatename"></a>
The name of the fleet provisioning template.  
*Required*: No  
*Type*: String  
*Pattern*: `^[0-9A-Za-z_-]+$`  
*Minimum*: `1`  
*Maximum*: `36`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`TemplateType`  <a name="cfn-iot-provisioningtemplate-templatetype"></a>
The type of the provisioning template.  
*Required*: No  
*Type*: String  
*Allowed values*: `FLEET_PROVISIONING | JITP`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-provisioningtemplate-return-values"></a>

### Ref
<a name="aws-resource-iot-provisioningtemplate-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the template name. For example:

 `{ "Ref": "MyTemplate" }` 

For a stack named MyStack, a value similar to the following is returned:

 `MyStack-MyTemplate-AB1CDEFGHIJK` 

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-provisioningtemplate-return-values-fn--getatt-fn--getatt"></a>

`TemplateArn`  <a name="TemplateArn-fn::getatt"></a>
The ARN that identifies the provisioning template.

# AWS::IoT::ProvisioningTemplate ProvisioningHook
<a name="aws-properties-iot-provisioningtemplate-provisioninghook"></a>

Structure that contains payloadVersion and targetArn. Provisioning hooks can be used when fleet provisioning to validate device parameters before allowing the device to be provisioned.

## Syntax
<a name="aws-properties-iot-provisioningtemplate-provisioninghook-syntax"></a>

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

### JSON
<a name="aws-properties-iot-provisioningtemplate-provisioninghook-syntax.json"></a>

```
{
  "[PayloadVersion](#cfn-iot-provisioningtemplate-provisioninghook-payloadversion)" : String,
  "[TargetArn](#cfn-iot-provisioningtemplate-provisioninghook-targetarn)" : String
}
```

### YAML
<a name="aws-properties-iot-provisioningtemplate-provisioninghook-syntax.yaml"></a>

```
  [PayloadVersion](#cfn-iot-provisioningtemplate-provisioninghook-payloadversion): String
  [TargetArn](#cfn-iot-provisioningtemplate-provisioninghook-targetarn): String
```

## Properties
<a name="aws-properties-iot-provisioningtemplate-provisioninghook-properties"></a>

`PayloadVersion`  <a name="cfn-iot-provisioningtemplate-provisioninghook-payloadversion"></a>
The payload that was sent to the target function. The valid payload is `"2020-04-01"`.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TargetArn`  <a name="cfn-iot-provisioningtemplate-provisioninghook-targetarn"></a>
The ARN of the target function.  
*Required*: No  
*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::IoT::ProvisioningTemplate Tag
<a name="aws-properties-iot-provisioningtemplate-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-provisioningtemplate-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-provisioningtemplate-tag-key): String
  [Value](#cfn-iot-provisioningtemplate-tag-value): String
```

## Properties
<a name="aws-properties-iot-provisioningtemplate-tag-properties"></a>

`Key`  <a name="cfn-iot-provisioningtemplate-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-provisioningtemplate-tag-value"></a>
The tag's value.  
*Required*: Yes  
*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)

# AWS::IoT::ResourceSpecificLogging
<a name="aws-resource-iot-resourcespecificlogging"></a>

Configure resource-specific logging.

## Syntax
<a name="aws-resource-iot-resourcespecificlogging-syntax"></a>

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

### JSON
<a name="aws-resource-iot-resourcespecificlogging-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::ResourceSpecificLogging",
  "Properties" : {
      "[LogLevel](#cfn-iot-resourcespecificlogging-loglevel)" : String,
      "[TargetName](#cfn-iot-resourcespecificlogging-targetname)" : String,
      "[TargetType](#cfn-iot-resourcespecificlogging-targettype)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-resourcespecificlogging-syntax.yaml"></a>

```
Type: AWS::IoT::ResourceSpecificLogging
Properties:
  [LogLevel](#cfn-iot-resourcespecificlogging-loglevel): String
  [TargetName](#cfn-iot-resourcespecificlogging-targetname): String
  [TargetType](#cfn-iot-resourcespecificlogging-targettype): String
```

## Properties
<a name="aws-resource-iot-resourcespecificlogging-properties"></a>

`LogLevel`  <a name="cfn-iot-resourcespecificlogging-loglevel"></a>
The default log level.Valid Values: `DEBUG | INFO | ERROR | WARN | DISABLED`  
*Required*: Yes  
*Type*: String  
*Allowed values*: `ERROR | WARN | INFO | DEBUG | DISABLED`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TargetName`  <a name="cfn-iot-resourcespecificlogging-targetname"></a>
The target name.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[a-zA-Z0-9.:\s_\-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`TargetType`  <a name="cfn-iot-resourcespecificlogging-targettype"></a>
The target type. Valid Values: `DEFAULT | THING_GROUP`  
*Required*: Yes  
*Type*: String  
*Allowed values*: `THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID | EVENT_TYPE`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-resourcespecificlogging-return-values"></a>

### Ref
<a name="aws-resource-iot-resourcespecificlogging-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the resource-specific log ID. For example:

 `{"Ref": "MyResourceLog-12345" }` 

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

#### 
<a name="aws-resource-iot-resourcespecificlogging-return-values-fn--getatt-fn--getatt"></a>

`TargetId`  <a name="TargetId-fn::getatt"></a>
The target Id.

# AWS::IoT::RoleAlias
<a name="aws-resource-iot-rolealias"></a>

Specifies a role alias.

Requires permission to access the [CreateRoleAlias](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action.

## Syntax
<a name="aws-resource-iot-rolealias-syntax"></a>

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

### JSON
<a name="aws-resource-iot-rolealias-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::RoleAlias",
  "Properties" : {
      "[CredentialDurationSeconds](#cfn-iot-rolealias-credentialdurationseconds)" : Integer,
      "[RoleAlias](#cfn-iot-rolealias-rolealias)" : String,
      "[RoleArn](#cfn-iot-rolealias-rolearn)" : String,
      "[Tags](#cfn-iot-rolealias-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-rolealias-syntax.yaml"></a>

```
Type: AWS::IoT::RoleAlias
Properties:
  [CredentialDurationSeconds](#cfn-iot-rolealias-credentialdurationseconds): Integer
  [RoleAlias](#cfn-iot-rolealias-rolealias): String
  [RoleArn](#cfn-iot-rolealias-rolearn): String
  [Tags](#cfn-iot-rolealias-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-rolealias-properties"></a>

`CredentialDurationSeconds`  <a name="cfn-iot-rolealias-credentialdurationseconds"></a>
The number of seconds for which the credential is valid.  
*Required*: No  
*Type*: Integer  
*Minimum*: `900`  
*Maximum*: `43200`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleAlias`  <a name="cfn-iot-rolealias-rolealias"></a>
The role alias.  
*Required*: No  
*Type*: String  
*Pattern*: `[\w=,@-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`RoleArn`  <a name="cfn-iot-rolealias-rolearn"></a>
The role ARN.  
*Required*: Yes  
*Type*: String  
*Pattern*: `arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+`  
*Minimum*: `20`  
*Maximum*: `2048`  
*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-iot-rolealias-tags"></a>
An array of key-value pairs to apply to this resource.  
For more information, see [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html).  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-rolealias-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-iot-rolealias-return-values"></a>

### Ref
<a name="aws-resource-iot-rolealias-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the role alias name.

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-rolealias-return-values-fn--getatt-fn--getatt"></a>

`RoleAliasArn`  <a name="RoleAliasArn-fn::getatt"></a>
The role alias ARN.

# AWS::IoT::RoleAlias Tag
<a name="aws-properties-iot-rolealias-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-rolealias-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-rolealias-tag-key): String
  [Value](#cfn-iot-rolealias-tag-value): String
```

## Properties
<a name="aws-properties-iot-rolealias-tag-properties"></a>

`Key`  <a name="cfn-iot-rolealias-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*Minimum*: `1`  
*Maximum*: `127`  
*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-iot-rolealias-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*Minimum*: `1`  
*Maximum*: `255`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::ScheduledAudit
<a name="aws-resource-iot-scheduledaudit"></a>

Use the `AWS::IoT::ScheduledAudit` resource to create a scheduled audit that is run at a specified time interval. For API reference, see [CreateScheduleAudit](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateScheduledAudit.html) and for general information, see [Audit](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-audit.html).

## Syntax
<a name="aws-resource-iot-scheduledaudit-syntax"></a>

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

### JSON
<a name="aws-resource-iot-scheduledaudit-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::ScheduledAudit",
  "Properties" : {
      "[DayOfMonth](#cfn-iot-scheduledaudit-dayofmonth)" : String,
      "[DayOfWeek](#cfn-iot-scheduledaudit-dayofweek)" : String,
      "[Frequency](#cfn-iot-scheduledaudit-frequency)" : String,
      "[ScheduledAuditName](#cfn-iot-scheduledaudit-scheduledauditname)" : String,
      "[Tags](#cfn-iot-scheduledaudit-tags)" : [ Tag, ... ],
      "[TargetCheckNames](#cfn-iot-scheduledaudit-targetchecknames)" : [ String, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-scheduledaudit-syntax.yaml"></a>

```
Type: AWS::IoT::ScheduledAudit
Properties:
  [DayOfMonth](#cfn-iot-scheduledaudit-dayofmonth): String
  [DayOfWeek](#cfn-iot-scheduledaudit-dayofweek): String
  [Frequency](#cfn-iot-scheduledaudit-frequency): String
  [ScheduledAuditName](#cfn-iot-scheduledaudit-scheduledauditname): String
  [Tags](#cfn-iot-scheduledaudit-tags): 
    - Tag
  [TargetCheckNames](#cfn-iot-scheduledaudit-targetchecknames): 
    - String
```

## Properties
<a name="aws-resource-iot-scheduledaudit-properties"></a>

`DayOfMonth`  <a name="cfn-iot-scheduledaudit-dayofmonth"></a>
The day of the month on which the scheduled audit is run (if the `frequency` is "MONTHLY"). If days 29-31 are specified, and the month does not have that many days, the audit takes place on the "LAST" day of the month.  
*Required*: No  
*Type*: String  
*Pattern*: `^([1-9]|[12][0-9]|3[01])$|^LAST$|^UNSET_VALUE$`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DayOfWeek`  <a name="cfn-iot-scheduledaudit-dayofweek"></a>
The day of the week on which the scheduled audit is run (if the `frequency` is "WEEKLY" or "BIWEEKLY").  
*Required*: No  
*Type*: String  
*Allowed values*: `SUN | MON | TUE | WED | THU | FRI | SAT | UNSET_VALUE`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Frequency`  <a name="cfn-iot-scheduledaudit-frequency"></a>
How often the scheduled audit occurs.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `DAILY | WEEKLY | BIWEEKLY | MONTHLY`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ScheduledAuditName`  <a name="cfn-iot-scheduledaudit-scheduledauditname"></a>
The name of the scheduled audit.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-scheduledaudit-tags"></a>
Metadata that can be used to manage the scheduled audit.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-scheduledaudit-tag.md)  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TargetCheckNames`  <a name="cfn-iot-scheduledaudit-targetchecknames"></a>
Which checks are performed during the scheduled audit. Checks must be enabled for your account. (Use `DescribeAccountAuditConfiguration` to see the list of all checks, including those that are enabled or use `UpdateAccountAuditConfiguration` to select which checks are enabled.)  
 The following checks are currently available:   
+  `AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK` 
+  `CA_CERTIFICATE_EXPIRING_CHECK` 
+  `CA_CERTIFICATE_KEY_QUALITY_CHECK` 
+  `CONFLICTING_CLIENT_IDS_CHECK` 
+  `DEVICE_CERTIFICATE_EXPIRING_CHECK` 
+  `DEVICE_CERTIFICATE_KEY_QUALITY_CHECK` 
+  `DEVICE_CERTIFICATE_SHARED_CHECK` 
+  `IOT_POLICY_OVERLY_PERMISSIVE_CHECK` 
+  `IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK` 
+  `IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK` 
+  `LOGGING_DISABLED_CHECK` 
+  `REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK` 
+  `REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK` 
+  `UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK` 
*Required*: Yes  
*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)

## Return values
<a name="aws-resource-iot-scheduledaudit-return-values"></a>

### Ref
<a name="aws-resource-iot-scheduledaudit-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the scheduled audit name.

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-scheduledaudit-return-values-fn--getatt-fn--getatt"></a>

`ScheduledAuditArn`  <a name="ScheduledAuditArn-fn::getatt"></a>
The ARN of the scheduled audit.

## Examples
<a name="aws-resource-iot-scheduledaudit--examples"></a>

In this ScheduledAudit example, all audit checks are enabled, the frequency of the audit is weekly, and the audit will occur every Monday.

### 
<a name="aws-resource-iot-scheduledaudit--examples--"></a>



#### JSON
<a name="aws-resource-iot-scheduledaudit--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Amazon Web Services IoT ScheduledAudit Sample Template",
  "Resources": {
    "MyScheduledAudit": {
      "Type": "AWS::IoT::ScheduledAudit",
      "Properties": {
        "ScheduledAuditName": "MyScheduledAudit",
        "DayOfWeek": "MON",
        "Frequency": "WEEKLY",
        "TargetCheckNames": [
          "AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK",
          "CA_CERTIFICATE_EXPIRING_CHECK",
          "CA_CERTIFICATE_KEY_QUALITY_CHECK",
          "CONFLICTING_CLIENT_IDS_CHECK",
          "DEVICE_CERTIFICATE_EXPIRING_CHECK",
          "DEVICE_CERTIFICATE_KEY_QUALITY_CHECK",
          "DEVICE_CERTIFICATE_SHARED_CHECK",
          "IOT_POLICY_OVERLY_PERMISSIVE_CHECK",
          "IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK",
          "IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK",
          "LOGGING_DISABLED_CHECK",
          "REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK",
          "REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK",
          "UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK"
        ]
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-scheduledaudit--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon Web Services IoT ScheduledAudit Sample Template
Resources:
  MyScheduledAudit:
    Type: AWS::IoT::ScheduledAudit
    Properties:
      ScheduledAuditName: MyScheduledAudit
      DayOfWeek: 'MON'
      Frequency: WEEKLY
      TargetCheckNames:
        - AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK
        - CA_CERTIFICATE_EXPIRING_CHECK
        - CA_CERTIFICATE_KEY_QUALITY_CHECK
        - CONFLICTING_CLIENT_IDS_CHECK
        - DEVICE_CERTIFICATE_EXPIRING_CHECK
        - DEVICE_CERTIFICATE_KEY_QUALITY_CHECK
        - DEVICE_CERTIFICATE_SHARED_CHECK
        - IOT_POLICY_OVERLY_PERMISSIVE_CHECK
        - IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK
        - IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK
        - LOGGING_DISABLED_CHECK
        - REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK
        - REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK
        - UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK
```

## See also
<a name="aws-resource-iot-scheduledaudit--seealso"></a>

For more information on audit checks see [AWS::IoT::AccountAuditConfiguration AuditCheckConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditcheckconfigurations.html).

# AWS::IoT::ScheduledAudit Tag
<a name="aws-properties-iot-scheduledaudit-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-scheduledaudit-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-scheduledaudit-tag-key): String
  [Value](#cfn-iot-scheduledaudit-tag-value): String
```

## Properties
<a name="aws-properties-iot-scheduledaudit-tag-properties"></a>

`Key`  <a name="cfn-iot-scheduledaudit-tag-key"></a>
The tag's key.  
*Required*: Yes  
*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-iot-scheduledaudit-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile
<a name="aws-resource-iot-securityprofile"></a>

Use the `AWS::IoT::SecurityProfile` resource to create a Device Defender security profile. For API reference, see [CreateSecurityProfile](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateSecurityProfile.html) and for general information, see [Detect](https://docs.aws.amazon.com/iot/latest/developerguide/device-defender-detect.html).

## Syntax
<a name="aws-resource-iot-securityprofile-syntax"></a>

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

### JSON
<a name="aws-resource-iot-securityprofile-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::SecurityProfile",
  "Properties" : {
      "[AdditionalMetricsToRetainV2](#cfn-iot-securityprofile-additionalmetricstoretainv2)" : [ MetricToRetain, ... ],
      "[AlertTargets](#cfn-iot-securityprofile-alerttargets)" : {Key: Value, ...},
      "[Behaviors](#cfn-iot-securityprofile-behaviors)" : [ Behavior, ... ],
      "[MetricsExportConfig](#cfn-iot-securityprofile-metricsexportconfig)" : MetricsExportConfig,
      "[SecurityProfileDescription](#cfn-iot-securityprofile-securityprofiledescription)" : String,
      "[SecurityProfileName](#cfn-iot-securityprofile-securityprofilename)" : String,
      "[Tags](#cfn-iot-securityprofile-tags)" : [ Tag, ... ],
      "[TargetArns](#cfn-iot-securityprofile-targetarns)" : [ String, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-securityprofile-syntax.yaml"></a>

```
Type: AWS::IoT::SecurityProfile
Properties:
  [AdditionalMetricsToRetainV2](#cfn-iot-securityprofile-additionalmetricstoretainv2): 
    - MetricToRetain
  [AlertTargets](#cfn-iot-securityprofile-alerttargets): 
    Key: Value
  [Behaviors](#cfn-iot-securityprofile-behaviors): 
    - Behavior
  [MetricsExportConfig](#cfn-iot-securityprofile-metricsexportconfig): 
    MetricsExportConfig
  [SecurityProfileDescription](#cfn-iot-securityprofile-securityprofiledescription): String
  [SecurityProfileName](#cfn-iot-securityprofile-securityprofilename): String
  [Tags](#cfn-iot-securityprofile-tags): 
    - Tag
  [TargetArns](#cfn-iot-securityprofile-targetarns): 
    - String
```

## Properties
<a name="aws-resource-iot-securityprofile-properties"></a>

`AdditionalMetricsToRetainV2`  <a name="cfn-iot-securityprofile-additionalmetricstoretainv2"></a>
A list of metrics whose data is retained (stored). By default, data is retained for any metric used in the profile's `behaviors`, but it's also retained for any metric specified here. Can be used with custom metrics; can't be used with dimensions.  
*Required*: No  
*Type*: Array of [MetricToRetain](aws-properties-iot-securityprofile-metrictoretain.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`AlertTargets`  <a name="cfn-iot-securityprofile-alerttargets"></a>
Specifies the destinations to which alerts are sent. (Alerts are always sent to the console.) Alerts are generated when a device (thing) violates a behavior.  
*Required*: No  
*Type*: Object of [AlertTarget](aws-properties-iot-securityprofile-alerttarget.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Behaviors`  <a name="cfn-iot-securityprofile-behaviors"></a>
Specifies the behaviors that, when violated by a device (thing), cause an alert.  
*Required*: No  
*Type*: Array of [Behavior](aws-properties-iot-securityprofile-behavior.md)  
*Maximum*: `100`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MetricsExportConfig`  <a name="cfn-iot-securityprofile-metricsexportconfig"></a>
Specifies the MQTT topic and role ARN required for metric export.  
*Required*: No  
*Type*: [MetricsExportConfig](aws-properties-iot-securityprofile-metricsexportconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SecurityProfileDescription`  <a name="cfn-iot-securityprofile-securityprofiledescription"></a>
A description of the security profile.  
*Required*: No  
*Type*: String  
*Maximum*: `1000`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SecurityProfileName`  <a name="cfn-iot-securityprofile-securityprofilename"></a>
The name you gave to the security profile.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-securityprofile-tags"></a>
Metadata that can be used to manage the security profile.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-securityprofile-tag.md)  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TargetArns`  <a name="cfn-iot-securityprofile-targetarns"></a>
The ARN of the target (thing group) to which the security profile is attached.  
*Required*: No  
*Type*: Array of String  
*Maximum*: `2048`  
*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-iot-securityprofile-return-values"></a>

### Ref
<a name="aws-resource-iot-securityprofile-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the security profile name.

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-securityprofile-return-values-fn--getatt-fn--getatt"></a>

`SecurityProfileArn`  <a name="SecurityProfileArn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the security profile.

## Examples
<a name="aws-resource-iot-securityprofile--examples"></a>



### 
<a name="aws-resource-iot-securityprofile--examples--"></a>



#### JSON
<a name="aws-resource-iot-securityprofile--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "Amazon Web Services IoT SecurityProfile Sample Template",
  "Resources": {
    "MySecurityProfile": {
      "Type": "AWS::IoT::SecurityProfile",
      "Properties": {
        "AdditionalMetricsToRetainV2": [
          {
            "Metric": "aws:num-messages-received"
          },
          {
            "Metric": "aws:num-disconnects"
          }
        ],
        "AlertTargets": {
          "SNS": {
            "AlertTargetArn": "arn:aws:sns:us-east-1:123456789012:DeviceDefenderDetectAlerts",
            "RoleArn": "arn:aws:iam::123456789012:role/RoleForDefenderAlerts"
          }
        },
        "Behaviors": [
          {
            "Name": "MaxMessageSize",
            "Metric": "aws:message-byte-size",
            "Criteria": {
              "ConsecutiveDatapointsToAlarm": 1,
              "ConsecutiveDatapointsToClear": 1,
              "ComparisonOperator": "less-than-equals",
              "Value": {
                "Count": 5
              }
            }
          },
          {
            "Name": "OutboundMessageCount",
            "Metric": "aws:num-messages-sent",
            "Criteria": {
              "DurationSeconds": 300,
              "ComparisonOperator": "less-than-equals",
              "Value": {
                "Count": 50
              }
            }
          },
          {
            "Name": "AuthFailuresStatThreshold",
            "Metric": "aws:num-authorization-failures",
            "Criteria": {
              "ComparisonOperator": "less-than-equals",
              "DurationSeconds": 300,
              "StatisticalThreshold": {
                "Statistic": "p90"
              }
            }
          }
        ],
        "SecurityProfileDescription": "Contains expected behaviors for connected devices",
        "SecurityProfileName": "ProfileForConnectedDevices",
        "Tags": [
          {
            "Key": "Application",
            "Value": "SmartHome"
          }
        ],
        "TargetArns": [
          "arn:aws:iot:us-east-1:123456789012:all/things"
        ]
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-securityprofile--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Description: Amazon Web Services IoT SecurityProfile Sample Template
Resources:
  MySecurityProfile:
    Type: 'AWS::IoT::SecurityProfile'
    Properties:
      AdditionalMetricsToRetainV2:
        - Metric: 'aws:num-messages-received'
        - Metric: 'aws:num-disconnects'
      AlertTargets:
        SNS:
          AlertTargetArn: 'arn:aws:sns:us-east-1:123456789012:DeviceDefenderDetectAlerts'
          RoleArn: 'arn:aws:iam::123456789012:role/RoleForDefenderAlerts'
      Behaviors:
        - Name: MaxMessageSize
          Metric: 'aws:message-byte-size'
          Criteria:
            ConsecutiveDatapointsToAlarm: 1
            ConsecutiveDatapointsToClear: 1
            ComparisonOperator: less-than-equals
            Value:
              Count: 5
        - Name: OutboundMessageCount
          Metric: 'aws:num-messages-sent'
          Criteria:
            DurationSeconds: 300
            ComparisonOperator: less-than-equals
            Value:
              Count: 50
        - Name: AuthFailuresStatThreshold
          Metric: 'aws:num-authorization-failures'
          Criteria:
            ComparisonOperator: less-than-equals
            DurationSeconds: 300
            StatisticalThreshold:
              Statistic: p90
      SecurityProfileDescription: Contains expected behaviors for connected devices
      SecurityProfileName: ProfileForConnectedDevices
      Tags:
        - Key: Application
          Value: SmartHome
      TargetArns:
        - 'arn:aws:iot:us-east-1:123456789012:all/things'
```

# AWS::IoT::SecurityProfile AlertTarget
<a name="aws-properties-iot-securityprofile-alerttarget"></a>

A structure containing the alert target ARN and the role ARN.

## Syntax
<a name="aws-properties-iot-securityprofile-alerttarget-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-alerttarget-syntax.json"></a>

```
{
  "[AlertTargetArn](#cfn-iot-securityprofile-alerttarget-alerttargetarn)" : String,
  "[RoleArn](#cfn-iot-securityprofile-alerttarget-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-securityprofile-alerttarget-syntax.yaml"></a>

```
  [AlertTargetArn](#cfn-iot-securityprofile-alerttarget-alerttargetarn): String
  [RoleArn](#cfn-iot-securityprofile-alerttarget-rolearn): String
```

## Properties
<a name="aws-properties-iot-securityprofile-alerttarget-properties"></a>

`AlertTargetArn`  <a name="cfn-iot-securityprofile-alerttarget-alerttargetarn"></a>
The Amazon Resource Name (ARN) of the notification target to which alerts are sent.  
*Required*: Yes  
*Type*: String  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-securityprofile-alerttarget-rolearn"></a>
The ARN of the role that grants permission to send alerts to the notification target.  
*Required*: Yes  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile Behavior
<a name="aws-properties-iot-securityprofile-behavior"></a>

A Device Defender security profile behavior.

## Syntax
<a name="aws-properties-iot-securityprofile-behavior-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-behavior-syntax.json"></a>

```
{
  "[Criteria](#cfn-iot-securityprofile-behavior-criteria)" : BehaviorCriteria,
  "[ExportMetric](#cfn-iot-securityprofile-behavior-exportmetric)" : Boolean,
  "[Metric](#cfn-iot-securityprofile-behavior-metric)" : String,
  "[MetricDimension](#cfn-iot-securityprofile-behavior-metricdimension)" : MetricDimension,
  "[Name](#cfn-iot-securityprofile-behavior-name)" : String,
  "[SuppressAlerts](#cfn-iot-securityprofile-behavior-suppressalerts)" : Boolean
}
```

### YAML
<a name="aws-properties-iot-securityprofile-behavior-syntax.yaml"></a>

```
  [Criteria](#cfn-iot-securityprofile-behavior-criteria): 
    BehaviorCriteria
  [ExportMetric](#cfn-iot-securityprofile-behavior-exportmetric): Boolean
  [Metric](#cfn-iot-securityprofile-behavior-metric): String
  [MetricDimension](#cfn-iot-securityprofile-behavior-metricdimension): 
    MetricDimension
  [Name](#cfn-iot-securityprofile-behavior-name): String
  [SuppressAlerts](#cfn-iot-securityprofile-behavior-suppressalerts): Boolean
```

## Properties
<a name="aws-properties-iot-securityprofile-behavior-properties"></a>

`Criteria`  <a name="cfn-iot-securityprofile-behavior-criteria"></a>
The criteria that determine if a device is behaving normally in regard to the `metric`.  
In the AWS IoT console, you can choose to be sent an alert through Amazon SNS when AWS IoT Device Defender detects that a device is behaving anomalously.
*Required*: No  
*Type*: [BehaviorCriteria](aws-properties-iot-securityprofile-behaviorcriteria.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ExportMetric`  <a name="cfn-iot-securityprofile-behavior-exportmetric"></a>
Value indicates exporting metrics related to the behavior when it is true.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Metric`  <a name="cfn-iot-securityprofile-behavior-metric"></a>
What is measured by the behavior.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*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)

`MetricDimension`  <a name="cfn-iot-securityprofile-behavior-metricdimension"></a>
The dimension of the metric.  
*Required*: No  
*Type*: [MetricDimension](aws-properties-iot-securityprofile-metricdimension.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Name`  <a name="cfn-iot-securityprofile-behavior-name"></a>
The name you've given to the behavior.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*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)

`SuppressAlerts`  <a name="cfn-iot-securityprofile-behavior-suppressalerts"></a>
The alert status. If you set the value to `true`, alerts will be suppressed.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile BehaviorCriteria
<a name="aws-properties-iot-securityprofile-behaviorcriteria"></a>

The criteria by which the behavior is determined to be normal.

## Syntax
<a name="aws-properties-iot-securityprofile-behaviorcriteria-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-behaviorcriteria-syntax.json"></a>

```
{
  "[ComparisonOperator](#cfn-iot-securityprofile-behaviorcriteria-comparisonoperator)" : String,
  "[ConsecutiveDatapointsToAlarm](#cfn-iot-securityprofile-behaviorcriteria-consecutivedatapointstoalarm)" : Integer,
  "[ConsecutiveDatapointsToClear](#cfn-iot-securityprofile-behaviorcriteria-consecutivedatapointstoclear)" : Integer,
  "[DurationSeconds](#cfn-iot-securityprofile-behaviorcriteria-durationseconds)" : Integer,
  "[MlDetectionConfig](#cfn-iot-securityprofile-behaviorcriteria-mldetectionconfig)" : MachineLearningDetectionConfig,
  "[StatisticalThreshold](#cfn-iot-securityprofile-behaviorcriteria-statisticalthreshold)" : StatisticalThreshold,
  "[Value](#cfn-iot-securityprofile-behaviorcriteria-value)" : MetricValue
}
```

### YAML
<a name="aws-properties-iot-securityprofile-behaviorcriteria-syntax.yaml"></a>

```
  [ComparisonOperator](#cfn-iot-securityprofile-behaviorcriteria-comparisonoperator): String
  [ConsecutiveDatapointsToAlarm](#cfn-iot-securityprofile-behaviorcriteria-consecutivedatapointstoalarm): Integer
  [ConsecutiveDatapointsToClear](#cfn-iot-securityprofile-behaviorcriteria-consecutivedatapointstoclear): Integer
  [DurationSeconds](#cfn-iot-securityprofile-behaviorcriteria-durationseconds): Integer
  [MlDetectionConfig](#cfn-iot-securityprofile-behaviorcriteria-mldetectionconfig): 
    MachineLearningDetectionConfig
  [StatisticalThreshold](#cfn-iot-securityprofile-behaviorcriteria-statisticalthreshold): 
    StatisticalThreshold
  [Value](#cfn-iot-securityprofile-behaviorcriteria-value): 
    MetricValue
```

## Properties
<a name="aws-properties-iot-securityprofile-behaviorcriteria-properties"></a>

`ComparisonOperator`  <a name="cfn-iot-securityprofile-behaviorcriteria-comparisonoperator"></a>
The operator that relates the thing measured (`metric`) to the criteria (containing a `value` or `statisticalThreshold`). Valid operators include:  
+ `string-list`: `in-set` and `not-in-set`
+ `number-list`: `in-set` and `not-in-set`
+ `ip-address-list`: `in-cidr-set` and `not-in-cidr-set`
+ `number`: `less-than`, `less-than-equals`, `greater-than`, and `greater-than-equals`
*Required*: No  
*Type*: String  
*Allowed values*: `less-than | less-than-equals | greater-than | greater-than-equals | in-cidr-set | not-in-cidr-set | in-port-set | not-in-port-set | in-set | not-in-set`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ConsecutiveDatapointsToAlarm`  <a name="cfn-iot-securityprofile-behaviorcriteria-consecutivedatapointstoalarm"></a>
If a device is in violation of the behavior for the specified number of consecutive datapoints, an alarm occurs. If not specified, the default is 1.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Maximum*: `10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ConsecutiveDatapointsToClear`  <a name="cfn-iot-securityprofile-behaviorcriteria-consecutivedatapointstoclear"></a>
If an alarm has occurred and the offending device is no longer in violation of the behavior for the specified number of consecutive datapoints, the alarm is cleared. If not specified, the default is 1.  
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Maximum*: `10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DurationSeconds`  <a name="cfn-iot-securityprofile-behaviorcriteria-durationseconds"></a>
Use this to specify the time duration over which the behavior is evaluated, for those criteria that have a time dimension (for example, `NUM_MESSAGES_SENT`). For a `statisticalThreshhold` metric comparison, measurements from all devices are accumulated over this time duration before being used to calculate percentiles, and later, measurements from an individual device are also accumulated over this time duration before being given a percentile rank. Cannot be used with list-based metric datatypes.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MlDetectionConfig`  <a name="cfn-iot-securityprofile-behaviorcriteria-mldetectionconfig"></a>
The confidence level of the detection model.  
*Required*: No  
*Type*: [MachineLearningDetectionConfig](aws-properties-iot-securityprofile-machinelearningdetectionconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`StatisticalThreshold`  <a name="cfn-iot-securityprofile-behaviorcriteria-statisticalthreshold"></a>
A statistical ranking (percentile)that indicates a threshold value by which a behavior is determined to be in compliance or in violation of the behavior.  
*Required*: No  
*Type*: [StatisticalThreshold](aws-properties-iot-securityprofile-statisticalthreshold.md)  
*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-iot-securityprofile-behaviorcriteria-value"></a>
The value to be compared with the `metric`.  
*Required*: No  
*Type*: [MetricValue](aws-properties-iot-securityprofile-metricvalue.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile MachineLearningDetectionConfig
<a name="aws-properties-iot-securityprofile-machinelearningdetectionconfig"></a>

The `MachineLearningDetectionConfig` property type controls confidence of the machine learning model.

## Syntax
<a name="aws-properties-iot-securityprofile-machinelearningdetectionconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-machinelearningdetectionconfig-syntax.json"></a>

```
{
  "[ConfidenceLevel](#cfn-iot-securityprofile-machinelearningdetectionconfig-confidencelevel)" : String
}
```

### YAML
<a name="aws-properties-iot-securityprofile-machinelearningdetectionconfig-syntax.yaml"></a>

```
  [ConfidenceLevel](#cfn-iot-securityprofile-machinelearningdetectionconfig-confidencelevel): String
```

## Properties
<a name="aws-properties-iot-securityprofile-machinelearningdetectionconfig-properties"></a>

`ConfidenceLevel`  <a name="cfn-iot-securityprofile-machinelearningdetectionconfig-confidencelevel"></a>
The model confidence level.  
There are three levels of confidence, `"high"`, `"medium"`, and `"low"`.  
The higher the confidence level, the lower the sensitivity, and the lower the alarm frequency will be.  
*Required*: No  
*Type*: String  
*Allowed values*: `LOW | MEDIUM | HIGH`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile MetricDimension
<a name="aws-properties-iot-securityprofile-metricdimension"></a>

The dimension of the metric.

## Syntax
<a name="aws-properties-iot-securityprofile-metricdimension-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-metricdimension-syntax.json"></a>

```
{
  "[DimensionName](#cfn-iot-securityprofile-metricdimension-dimensionname)" : String,
  "[Operator](#cfn-iot-securityprofile-metricdimension-operator)" : String
}
```

### YAML
<a name="aws-properties-iot-securityprofile-metricdimension-syntax.yaml"></a>

```
  [DimensionName](#cfn-iot-securityprofile-metricdimension-dimensionname): String
  [Operator](#cfn-iot-securityprofile-metricdimension-operator): String
```

## Properties
<a name="aws-properties-iot-securityprofile-metricdimension-properties"></a>

`DimensionName`  <a name="cfn-iot-securityprofile-metricdimension-dimensionname"></a>
The name of the dimension.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*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)

`Operator`  <a name="cfn-iot-securityprofile-metricdimension-operator"></a>
Operators are constructs that perform logical operations. Valid values are `IN` and `NOT_IN`.   
*Required*: No  
*Type*: String  
*Allowed values*: `IN | NOT_IN`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile MetricsExportConfig
<a name="aws-properties-iot-securityprofile-metricsexportconfig"></a>

Specifies the MQTT topic and role ARN required for metric export.

## Syntax
<a name="aws-properties-iot-securityprofile-metricsexportconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-metricsexportconfig-syntax.json"></a>

```
{
  "[MqttTopic](#cfn-iot-securityprofile-metricsexportconfig-mqtttopic)" : String,
  "[RoleArn](#cfn-iot-securityprofile-metricsexportconfig-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-securityprofile-metricsexportconfig-syntax.yaml"></a>

```
  [MqttTopic](#cfn-iot-securityprofile-metricsexportconfig-mqtttopic): String
  [RoleArn](#cfn-iot-securityprofile-metricsexportconfig-rolearn): String
```

## Properties
<a name="aws-properties-iot-securityprofile-metricsexportconfig-properties"></a>

`MqttTopic`  <a name="cfn-iot-securityprofile-metricsexportconfig-mqtttopic"></a>
The MQTT topic that Device Defender Detect should publish messages to for metrics export.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `512`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-securityprofile-metricsexportconfig-rolearn"></a>
This role ARN has permission to publish MQTT messages, after which Device Defender Detect can assume the role and publish messages on your behalf.  
*Required*: Yes  
*Type*: String  
*Minimum*: `20`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile MetricToRetain
<a name="aws-properties-iot-securityprofile-metrictoretain"></a>

The metric you want to retain. Dimensions are optional.

## Syntax
<a name="aws-properties-iot-securityprofile-metrictoretain-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-metrictoretain-syntax.json"></a>

```
{
  "[ExportMetric](#cfn-iot-securityprofile-metrictoretain-exportmetric)" : Boolean,
  "[Metric](#cfn-iot-securityprofile-metrictoretain-metric)" : String,
  "[MetricDimension](#cfn-iot-securityprofile-metrictoretain-metricdimension)" : MetricDimension
}
```

### YAML
<a name="aws-properties-iot-securityprofile-metrictoretain-syntax.yaml"></a>

```
  [ExportMetric](#cfn-iot-securityprofile-metrictoretain-exportmetric): Boolean
  [Metric](#cfn-iot-securityprofile-metrictoretain-metric): String
  [MetricDimension](#cfn-iot-securityprofile-metrictoretain-metricdimension): 
    MetricDimension
```

## Properties
<a name="aws-properties-iot-securityprofile-metrictoretain-properties"></a>

`ExportMetric`  <a name="cfn-iot-securityprofile-metrictoretain-exportmetric"></a>
The value indicates exporting metrics related to the `MetricToRetain` when it's true.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Metric`  <a name="cfn-iot-securityprofile-metrictoretain-metric"></a>
A standard of measurement.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*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)

`MetricDimension`  <a name="cfn-iot-securityprofile-metrictoretain-metricdimension"></a>
The dimension of the metric.  
*Required*: No  
*Type*: [MetricDimension](aws-properties-iot-securityprofile-metricdimension.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile MetricValue
<a name="aws-properties-iot-securityprofile-metricvalue"></a>

The value to be compared with the `metric`.

## Syntax
<a name="aws-properties-iot-securityprofile-metricvalue-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-metricvalue-syntax.json"></a>

```
{
  "[Cidrs](#cfn-iot-securityprofile-metricvalue-cidrs)" : [ String, ... ],
  "[Count](#cfn-iot-securityprofile-metricvalue-count)" : String,
  "[Number](#cfn-iot-securityprofile-metricvalue-number)" : Number,
  "[Numbers](#cfn-iot-securityprofile-metricvalue-numbers)" : [ Number, ... ],
  "[Ports](#cfn-iot-securityprofile-metricvalue-ports)" : [ Integer, ... ],
  "[Strings](#cfn-iot-securityprofile-metricvalue-strings)" : [ String, ... ]
}
```

### YAML
<a name="aws-properties-iot-securityprofile-metricvalue-syntax.yaml"></a>

```
  [Cidrs](#cfn-iot-securityprofile-metricvalue-cidrs): 
    - String
  [Count](#cfn-iot-securityprofile-metricvalue-count): String
  [Number](#cfn-iot-securityprofile-metricvalue-number): 
    Number
  [Numbers](#cfn-iot-securityprofile-metricvalue-numbers): 
    - Number
  [Ports](#cfn-iot-securityprofile-metricvalue-ports): 
    - Integer
  [Strings](#cfn-iot-securityprofile-metricvalue-strings): 
    - String
```

## Properties
<a name="aws-properties-iot-securityprofile-metricvalue-properties"></a>

`Cidrs`  <a name="cfn-iot-securityprofile-metricvalue-cidrs"></a>
If the `comparisonOperator` calls for a set of CIDRs, use this to specify that set to be compared with the `metric`.  
*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)

`Count`  <a name="cfn-iot-securityprofile-metricvalue-count"></a>
If the `comparisonOperator` calls for a numeric value, use this to specify that numeric value to be compared with the `metric`.  
*Required*: No  
*Type*: String  
*Minimum*: `0`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Number`  <a name="cfn-iot-securityprofile-metricvalue-number"></a>
The numeric values of a metric.  
*Required*: No  
*Type*: Number  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Numbers`  <a name="cfn-iot-securityprofile-metricvalue-numbers"></a>
The numeric value of a metric.  
*Required*: No  
*Type*: Array of Number  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Ports`  <a name="cfn-iot-securityprofile-metricvalue-ports"></a>
If the `comparisonOperator` calls for a set of ports, use this to specify that set to be compared with the `metric`.  
*Required*: No  
*Type*: Array of Integer  
*Minimum*: `0`  
*Maximum*: `65535`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Strings`  <a name="cfn-iot-securityprofile-metricvalue-strings"></a>
The string values of a metric.  
*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)

# AWS::IoT::SecurityProfile StatisticalThreshold
<a name="aws-properties-iot-securityprofile-statisticalthreshold"></a>

A statistical ranking (percentile) that indicates a threshold value by which a behavior is determined to be in compliance or in violation of the behavior.

## Syntax
<a name="aws-properties-iot-securityprofile-statisticalthreshold-syntax"></a>

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

### JSON
<a name="aws-properties-iot-securityprofile-statisticalthreshold-syntax.json"></a>

```
{
  "[Statistic](#cfn-iot-securityprofile-statisticalthreshold-statistic)" : String
}
```

### YAML
<a name="aws-properties-iot-securityprofile-statisticalthreshold-syntax.yaml"></a>

```
  [Statistic](#cfn-iot-securityprofile-statisticalthreshold-statistic): String
```

## Properties
<a name="aws-properties-iot-securityprofile-statisticalthreshold-properties"></a>

`Statistic`  <a name="cfn-iot-securityprofile-statisticalthreshold-statistic"></a>
The percentile that resolves to a threshold value by which compliance with a behavior is determined. Metrics are collected over the specified period (`durationSeconds`) from all reporting devices in your account and statistical ranks are calculated. Then, the measurements from a device are collected over the same period. If the accumulated measurements from the device fall above or below (`comparisonOperator`) the value associated with the percentile specified, then the device is considered to be in compliance with the behavior, otherwise a violation occurs.  
*Required*: No  
*Type*: String  
*Allowed values*: `Average | p0 | p0.1 | p0.01 | p1 | p10 | p50 | p90 | p99 | p99.9 | p99.99 | p100`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SecurityProfile Tag
<a name="aws-properties-iot-securityprofile-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-securityprofile-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-securityprofile-tag-key): String
  [Value](#cfn-iot-securityprofile-tag-value): String
```

## Properties
<a name="aws-properties-iot-securityprofile-tag-properties"></a>

`Key`  <a name="cfn-iot-securityprofile-tag-key"></a>
The tag's key.  
*Required*: Yes  
*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-iot-securityprofile-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SoftwarePackage
<a name="aws-resource-iot-softwarepackage"></a>

Use the `AWS::IoT::SoftwarePackage` resource to create a software package.

For information about working with software packages, see [AWS IoT Device Management Software Package Catalog](https://docs.aws.amazon.com/iot/latest/developerguide/software-package-catalog.html) and [Creating a software package and package version](https://docs.aws.amazon.com/iot/latest/developerguide/creating-package-and-version.html) in the *AWS IoT Developer Guide*. See also, [CreatePackage](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackage.html) in the *API Guide*.

## Syntax
<a name="aws-resource-iot-softwarepackage-syntax"></a>

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

### JSON
<a name="aws-resource-iot-softwarepackage-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::SoftwarePackage",
  "Properties" : {
      "[Description](#cfn-iot-softwarepackage-description)" : String,
      "[PackageName](#cfn-iot-softwarepackage-packagename)" : String,
      "[Tags](#cfn-iot-softwarepackage-tags)" : [ Tag, ... ]
    }
}
```

### YAML
<a name="aws-resource-iot-softwarepackage-syntax.yaml"></a>

```
Type: AWS::IoT::SoftwarePackage
Properties:
  [Description](#cfn-iot-softwarepackage-description): String
  [PackageName](#cfn-iot-softwarepackage-packagename): String
  [Tags](#cfn-iot-softwarepackage-tags): 
    - Tag
```

## Properties
<a name="aws-resource-iot-softwarepackage-properties"></a>

`Description`  <a name="cfn-iot-softwarepackage-description"></a>
A summary of the package being created. This can be used to outline the package's contents or purpose.  
*Required*: No  
*Type*: String  
*Pattern*: `^[^\p{C}]+$`  
*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)

`PackageName`  <a name="cfn-iot-softwarepackage-packagename"></a>
The name of the new software package.  
*Required*: No  
*Type*: String  
*Pattern*: `^[a-zA-Z0-9-_.]+$`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-softwarepackage-tags"></a>
Metadata that can be used to manage the package.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-softwarepackage-tag.md)  
*Maximum*: `50`  
*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-iot-softwarepackage-return-values"></a>

### Ref
<a name="aws-resource-iot-softwarepackage-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the software package name. For example:

```
{ "Ref": "MyPackage" }
```

Response:

```
package-name
```

For a stack named MyStack, a value that is similar to the following is returned:

```
MyStack-MySoftwarePackage-AB1CDEFGHIJK
```

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

For example:

```
{ "GetAtt": "MySoftwarePackage.PackageArn" }
```

#### 
<a name="aws-resource-iot-softwarepackage-return-values-fn--getatt-fn--getatt"></a>

`PackageArn`  <a name="PackageArn-fn::getatt"></a>
The Amazon Resource Name (ARN) for the package.

## Examples
<a name="aws-resource-iot-softwarepackage--examples"></a>

The following example declares a software package and the values of its attributes.

### 
<a name="aws-resource-iot-softwarepackage--examples--"></a>



#### JSON
<a name="aws-resource-iot-softwarepackage--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MySoftwarePackage": {
      "Type": "AWS::IoT::SoftwarePackage",
      "Properties": {
        "PackageName": "Package",
        "Description": "description",
        "Tags": [
          {
            "Key": "TagKey",
            "Value": "TagValue"
          }
        ]
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-softwarepackage--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MySoftwarePackage:
    Type: AWS::IoT::SoftwarePackage
    Properties:
      PackageName: "Package"
      Description: "description"
      Tags:
        - Key: "TagKey"
          Value: "TagValue"
```

# AWS::IoT::SoftwarePackage Tag
<a name="aws-properties-iot-softwarepackage-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-softwarepackage-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-softwarepackage-tag-key): String
  [Value](#cfn-iot-softwarepackage-tag-value): String
```

## Properties
<a name="aws-properties-iot-softwarepackage-tag-properties"></a>

`Key`  <a name="cfn-iot-softwarepackage-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-softwarepackage-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SoftwarePackageVersion
<a name="aws-resource-iot-softwarepackageversion"></a>

Use the `AWS::IoT::SoftwarePackageVersion` resource to create a software package version.

For information about working with software package versions, see [AWS IoT Device ManagementSoftware Package Catalog](https://docs.aws.amazon.com/iot/latest/developerguide/software-package-catalog.html) and [Creating a software package and package version](https://docs.aws.amazon.com/iot/latest/developerguide/creating-package-and-version.html) in the *AWS IoT Developer Guide*. See also, [CreatePackageVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePackageVersion.html) in the *API Guide*.

**Note**  
The associated software package must exist before the package version is created. If you create a software package and package version in the same CloudFormation template, set the software package as a [dependency](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) of the package version. If they are created out of sequence, you will receive an error.  
Package versions and created in a `draft` state, for more information, see [Package version lifecycle](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#package-version-lifecycle). To change the package version state after it’s created, use the [UpdatePackageVersionAPI](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdatePackageVersion.html) command.

## Syntax
<a name="aws-resource-iot-softwarepackageversion-syntax"></a>

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

### JSON
<a name="aws-resource-iot-softwarepackageversion-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::SoftwarePackageVersion",
  "Properties" : {
      "[Artifact](#cfn-iot-softwarepackageversion-artifact)" : PackageVersionArtifact,
      "[Attributes](#cfn-iot-softwarepackageversion-attributes)" : {Key: Value, ...},
      "[Description](#cfn-iot-softwarepackageversion-description)" : String,
      "[PackageName](#cfn-iot-softwarepackageversion-packagename)" : String,
      "[Recipe](#cfn-iot-softwarepackageversion-recipe)" : String,
      "[Sbom](#cfn-iot-softwarepackageversion-sbom)" : Sbom,
      "[Tags](#cfn-iot-softwarepackageversion-tags)" : [ Tag, ... ],
      "[VersionName](#cfn-iot-softwarepackageversion-versionname)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-softwarepackageversion-syntax.yaml"></a>

```
Type: AWS::IoT::SoftwarePackageVersion
Properties:
  [Artifact](#cfn-iot-softwarepackageversion-artifact): 
    PackageVersionArtifact
  [Attributes](#cfn-iot-softwarepackageversion-attributes): 
    Key: Value
  [Description](#cfn-iot-softwarepackageversion-description): String
  [PackageName](#cfn-iot-softwarepackageversion-packagename): String
  [Recipe](#cfn-iot-softwarepackageversion-recipe): String
  [Sbom](#cfn-iot-softwarepackageversion-sbom): 
    Sbom
  [Tags](#cfn-iot-softwarepackageversion-tags): 
    - Tag
  [VersionName](#cfn-iot-softwarepackageversion-versionname): String
```

## Properties
<a name="aws-resource-iot-softwarepackageversion-properties"></a>

`Artifact`  <a name="cfn-iot-softwarepackageversion-artifact"></a>
Property description not available.  
*Required*: No  
*Type*: [PackageVersionArtifact](aws-properties-iot-softwarepackageversion-packageversionartifact.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Attributes`  <a name="cfn-iot-softwarepackageversion-attributes"></a>
Metadata that can be used to define a package version’s configuration. For example, the S3 file location, configuration options that are being sent to the device or fleet.  
The combined size of all the attributes on a package version is limited to 3KB.  
*Required*: No  
*Type*: Object of String  
*Pattern*: `^[a-zA-Z0-9:_-]+$`  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Description`  <a name="cfn-iot-softwarepackageversion-description"></a>
A summary of the package version being created. This can be used to outline the package's contents or purpose.  
*Required*: No  
*Type*: String  
*Pattern*: `^[^\p{C}]+$`  
*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)

`PackageName`  <a name="cfn-iot-softwarepackageversion-packagename"></a>
The name of the associated software package.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^[a-zA-Z0-9-_.]+$`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Recipe`  <a name="cfn-iot-softwarepackageversion-recipe"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Sbom`  <a name="cfn-iot-softwarepackageversion-sbom"></a>
Property description not available.  
*Required*: No  
*Type*: [Sbom](aws-properties-iot-softwarepackageversion-sbom.md)  
*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-iot-softwarepackageversion-tags"></a>
Metadata that can be used to manage the package version.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-softwarepackageversion-tag.md)  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`VersionName`  <a name="cfn-iot-softwarepackageversion-versionname"></a>
The name of the new package version.  
*Required*: No  
*Type*: String  
*Pattern*: `^[a-zA-Z0-9-_.]+$`  
*Minimum*: `1`  
*Maximum*: `64`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-softwarepackageversion-return-values"></a>

### Ref
<a name="aws-resource-iot-softwarepackageversion-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the software package name and package version. For example:

```
{ "Ref": "MyPackageVersion" }
```

Response:

```
package-name|version-name
```

For a stack named MyStack, a value that is similar to the following is returned:

```
MyStack-MyPackageVersion-AB1CDEFGHIJK
```

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

For example:

```
{ "GetAtt": "MySoftwarePackageVersion.PackageVersionArn" }
```

#### 
<a name="aws-resource-iot-softwarepackageversion-return-values-fn--getatt-fn--getatt"></a>

`ErrorReason`  <a name="ErrorReason-fn::getatt"></a>
Error reason for a package version failure during creation or update.

`PackageVersionArn`  <a name="PackageVersionArn-fn::getatt"></a>
The Amazon Resource Name (ARN) for the package.

`SbomValidationStatus`  <a name="SbomValidationStatus-fn::getatt"></a>
Property description not available.

`Status`  <a name="Status-fn::getatt"></a>
The status of the package version. For more information, see [Package version lifecycle](https://docs.aws.amazon.com/iot/latest/developerguide/preparing-to-use-software-package-catalog.html#package-version-lifecycle).

## Examples
<a name="aws-resource-iot-softwarepackageversion--examples"></a>

The following example declares a package version and the values of its attributes.

### 
<a name="aws-resource-iot-softwarepackageversion--examples--"></a>



#### JSON
<a name="aws-resource-iot-softwarepackageversion--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyPackageVersion": {
      "Type": "AWS::IoT::SoftwarePackageVersion",
      "Properties": {
        "PackageName": "PackageName",
        "VersionName": "1.0.0",
        "Description": "description",
        "Tags": [
          {
            "Key": "TagKey",
            "Value": "TagValue"
          }
        ]
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-softwarepackageversion--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyPackageVersion:
    Type: AWS::IoT::SoftwarePackageVersion
    Properties:
      PackageName: "PackageName"
      VersionName: "1.0.0"
      Description: "description"
      Tags:
        - Key: "TagKey"
          Value: "TagValue"
```

# AWS::IoT::SoftwarePackageVersion PackageVersionArtifact
<a name="aws-properties-iot-softwarepackageversion-packageversionartifact"></a>

<a name="aws-properties-iot-softwarepackageversion-packageversionartifact-description"></a>The `PackageVersionArtifact` property type specifies Property description not available. for an [AWS::IoT::SoftwarePackageVersion](aws-resource-iot-softwarepackageversion.md).

## Syntax
<a name="aws-properties-iot-softwarepackageversion-packageversionartifact-syntax"></a>

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

### JSON
<a name="aws-properties-iot-softwarepackageversion-packageversionartifact-syntax.json"></a>

```
{
  "[S3Location](#cfn-iot-softwarepackageversion-packageversionartifact-s3location)" : S3Location
}
```

### YAML
<a name="aws-properties-iot-softwarepackageversion-packageversionartifact-syntax.yaml"></a>

```
  [S3Location](#cfn-iot-softwarepackageversion-packageversionartifact-s3location): 
    S3Location
```

## Properties
<a name="aws-properties-iot-softwarepackageversion-packageversionartifact-properties"></a>

`S3Location`  <a name="cfn-iot-softwarepackageversion-packageversionartifact-s3location"></a>
Property description not available.  
*Required*: Yes  
*Type*: [S3Location](aws-properties-iot-softwarepackageversion-s3location.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SoftwarePackageVersion S3Location
<a name="aws-properties-iot-softwarepackageversion-s3location"></a>

<a name="aws-properties-iot-softwarepackageversion-s3location-description"></a>The `S3Location` property type specifies Property description not available. for an [AWS::IoT::SoftwarePackageVersion](aws-resource-iot-softwarepackageversion.md).

## Syntax
<a name="aws-properties-iot-softwarepackageversion-s3location-syntax"></a>

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

### JSON
<a name="aws-properties-iot-softwarepackageversion-s3location-syntax.json"></a>

```
{
  "[Bucket](#cfn-iot-softwarepackageversion-s3location-bucket)" : String,
  "[Key](#cfn-iot-softwarepackageversion-s3location-key)" : String,
  "[Version](#cfn-iot-softwarepackageversion-s3location-version)" : String
}
```

### YAML
<a name="aws-properties-iot-softwarepackageversion-s3location-syntax.yaml"></a>

```
  [Bucket](#cfn-iot-softwarepackageversion-s3location-bucket): String
  [Key](#cfn-iot-softwarepackageversion-s3location-key): String
  [Version](#cfn-iot-softwarepackageversion-s3location-version): String
```

## Properties
<a name="aws-properties-iot-softwarepackageversion-s3location-properties"></a>

`Bucket`  <a name="cfn-iot-softwarepackageversion-s3location-bucket"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Key`  <a name="cfn-iot-softwarepackageversion-s3location-key"></a>
Property description not available.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Version`  <a name="cfn-iot-softwarepackageversion-s3location-version"></a>
Property description not available.  
*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::IoT::SoftwarePackageVersion Sbom
<a name="aws-properties-iot-softwarepackageversion-sbom"></a>

<a name="aws-properties-iot-softwarepackageversion-sbom-description"></a>The `Sbom` property type specifies Property description not available. for an [AWS::IoT::SoftwarePackageVersion](aws-resource-iot-softwarepackageversion.md).

## Syntax
<a name="aws-properties-iot-softwarepackageversion-sbom-syntax"></a>

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

### JSON
<a name="aws-properties-iot-softwarepackageversion-sbom-syntax.json"></a>

```
{
  "[S3Location](#cfn-iot-softwarepackageversion-sbom-s3location)" : S3Location
}
```

### YAML
<a name="aws-properties-iot-softwarepackageversion-sbom-syntax.yaml"></a>

```
  [S3Location](#cfn-iot-softwarepackageversion-sbom-s3location): 
    S3Location
```

## Properties
<a name="aws-properties-iot-softwarepackageversion-sbom-properties"></a>

`S3Location`  <a name="cfn-iot-softwarepackageversion-sbom-s3location"></a>
Property description not available.  
*Required*: Yes  
*Type*: [S3Location](aws-properties-iot-softwarepackageversion-s3location.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::SoftwarePackageVersion Tag
<a name="aws-properties-iot-softwarepackageversion-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-softwarepackageversion-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-softwarepackageversion-tag-key): String
  [Value](#cfn-iot-softwarepackageversion-tag-value): String
```

## Properties
<a name="aws-properties-iot-softwarepackageversion-tag-properties"></a>

`Key`  <a name="cfn-iot-softwarepackageversion-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-softwarepackageversion-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::Thing
<a name="aws-resource-iot-thing"></a>

Use the `AWS::IoT::Thing` resource to declare an AWS IoT thing.

For information about working with things, see [How AWS IoT Works](https://docs.aws.amazon.com/iot/latest/developerguide/aws-iot-how-it-works.html) and [Device Registry for AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/thing-registry.html) in the *AWS IoT Developer Guide*.

## Syntax
<a name="aws-resource-iot-thing-syntax"></a>

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

### JSON
<a name="aws-resource-iot-thing-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::Thing",
  "Properties" : {
      "[AttributePayload](#cfn-iot-thing-attributepayload)" : AttributePayload,
      "[ThingName](#cfn-iot-thing-thingname)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-thing-syntax.yaml"></a>

```
Type: AWS::IoT::Thing
Properties:
  [AttributePayload](#cfn-iot-thing-attributepayload): 
    AttributePayload
  [ThingName](#cfn-iot-thing-thingname): String
```

## Properties
<a name="aws-resource-iot-thing-properties"></a>

`AttributePayload`  <a name="cfn-iot-thing-attributepayload"></a>
A string that contains up to three key value pairs. Maximum length of 800. Duplicates not allowed.  
*Required*: No  
*Type*: [AttributePayload](aws-properties-iot-thing-attributepayload.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ThingName`  <a name="cfn-iot-thing-thingname"></a>
The name of the thing to update.  
You can't change a thing's name. To change a thing's name, you must create a new thing, give it the new name, and then delete the old thing.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-thing-return-values"></a>

### Ref
<a name="aws-resource-iot-thing-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the thing name. For example:

 `{ "Ref": "MyThing" }` 

For a stack named MyStack, a value similar to the following is returned:

 `MyStack-MyThing-AB1CDEFGHIJK` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-thing-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the AWS IoT thing, such as `arn:aws:iot:us-east-2:123456789012:thing/MyThing`.

`Id`  <a name="Id-fn::getatt"></a>
The Id of this thing.

## Examples
<a name="aws-resource-iot-thing--examples"></a>

### 
<a name="aws-resource-iot-thing--examples--"></a>

The following example declares a thing and the values of its attributes.

#### JSON
<a name="aws-resource-iot-thing--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyThing": {
      "Type": "AWS::IoT::Thing",
      "Properties": {
        "ThingName": {
          "Ref": "NameParameter"
        },
        "AttributePayload": {
          "Attributes": {
            "myAttributeA": {
              "Ref": "MyAttributeValueA"
            },
            "myAttributeB": {
              "Ref": "MyAttributeValueB"
            },
            "myAttributeC": {
              "Ref": "MyAttributeValueC"
            }
          }
        }
      }
    }
  },
  "Parameters": {
    "NameParameter": {
      "Type": "String"
    },
    "MyAttributeValueA": {
      "Type": "String",
      "Default": "myStringA123"
    },
    "MyAttributeValueB": {
      "Type": "String",
      "Default": "myStringB123"
    },
    "MyAttributeValueC": {
      "Type": "String",
      "Default": "myStringC123"
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-thing--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyThing:
    Type: AWS::IoT::Thing
    Properties:
      ThingName:
        Ref: NameParameter
      AttributePayload:
        Attributes:
          myAttributeA:
            Ref: MyAttributeValueA
          myAttributeB:
            Ref: MyAttributeValueB
          myAttributeC:
            Ref: MyAttributeValueC

Parameters:
  NameParameter:
    Type: String
  MyAttributeValueA:
    Type: String
    Default: myStringA123
  MyAttributeValueB:
    Type: String
    Default: myStringB123
  MyAttributeValueC:
    Type: String
    Default: myStringC123
```

# AWS::IoT::Thing AttributePayload
<a name="aws-properties-iot-thing-attributepayload"></a>

The AttributePayload property specifies up to three attributes for an AWS IoT as key-value pairs. AttributePayload is a property of the [AWS::IoT::Thing](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-thing.html) resource.

## Syntax
<a name="aws-properties-iot-thing-attributepayload-syntax"></a>

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

### JSON
<a name="aws-properties-iot-thing-attributepayload-syntax.json"></a>

```
{
  "[Attributes](#cfn-iot-thing-attributepayload-attributes)" : {Key: Value, ...}
}
```

### YAML
<a name="aws-properties-iot-thing-attributepayload-syntax.yaml"></a>

```
  [Attributes](#cfn-iot-thing-attributepayload-attributes): 
    Key: Value
```

## Properties
<a name="aws-properties-iot-thing-attributepayload-properties"></a>

`Attributes`  <a name="cfn-iot-thing-attributepayload-attributes"></a>
A JSON string containing up to three key-value pair in JSON format. For example:  
 `{\"attributes\":{\"string1\":\"string2\"}}`   
*Required*: No  
*Type*: Object of String  
*Pattern*: `[a-zA-Z0-9_.,@/:#-]+`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

## Examples
<a name="aws-properties-iot-thing-attributepayload--examples"></a>

### 
<a name="aws-properties-iot-thing-attributepayload--examples--"></a>

The following example declares an attribute payload with three attributes.

#### JSON
<a name="aws-properties-iot-thing-attributepayload--examples----json"></a>

```
 { "AttributePayload":{ "Attributes":{ "myAttributeA":{
            "Ref":"MyAttributeValueA" }, "myAttributeB":{ "Ref":"MyAttributeValueB" },
            "myAttributeC":{ "Ref":"MyAttributeValueC" } } } }
```

#### YAML
<a name="aws-properties-iot-thing-attributepayload--examples----yaml"></a>

```
 AttributePayload: Attributes: myAttributeA: Ref:
            MyAttributeValueA myAttributeB: Ref: MyAttributeValueB myAttributeC: Ref:
            MyAttributeValueC
```

# AWS::IoT::ThingGroup
<a name="aws-resource-iot-thinggroup"></a>

Creates a new thing group. A dynamic thing group is created if the resource template contains the `QueryString` attribute. A dynamic thing group will not contain the `ParentGroupName` attribute. A static thing group and dynamic thing group can't be converted to each other via the addition or removal of the `QueryString` attribute.

**Note**  
This is a control plane operation. See [Authorization](https://docs.aws.amazon.com/iot/latest/developerguide/iot-authorization.html) for information about authorizing control plane actions.

Requires permission to access the [CreateThingGroup](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action.

## Syntax
<a name="aws-resource-iot-thinggroup-syntax"></a>

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

### JSON
<a name="aws-resource-iot-thinggroup-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::ThingGroup",
  "Properties" : {
      "[ParentGroupName](#cfn-iot-thinggroup-parentgroupname)" : String,
      "[QueryString](#cfn-iot-thinggroup-querystring)" : String,
      "[Tags](#cfn-iot-thinggroup-tags)" : [ Tag, ... ],
      "[ThingGroupName](#cfn-iot-thinggroup-thinggroupname)" : String,
      "[ThingGroupProperties](#cfn-iot-thinggroup-thinggroupproperties)" : ThingGroupProperties
    }
}
```

### YAML
<a name="aws-resource-iot-thinggroup-syntax.yaml"></a>

```
Type: AWS::IoT::ThingGroup
Properties:
  [ParentGroupName](#cfn-iot-thinggroup-parentgroupname): String
  [QueryString](#cfn-iot-thinggroup-querystring): 
    String
  [Tags](#cfn-iot-thinggroup-tags): 
    - Tag
  [ThingGroupName](#cfn-iot-thinggroup-thinggroupname): String
  [ThingGroupProperties](#cfn-iot-thinggroup-thinggroupproperties): 
    ThingGroupProperties
```

## Properties
<a name="aws-resource-iot-thinggroup-properties"></a>

`ParentGroupName`  <a name="cfn-iot-thinggroup-parentgroupname"></a>
The parent thing group name.  
A Dynamic Thing Group does not have `parentGroupName` defined.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`QueryString`  <a name="cfn-iot-thinggroup-querystring"></a>
The dynamic thing group search query string.  
The `queryString` attribute *is* required for `CreateDynamicThingGroup`. The `queryString` attribute *is not* required for `CreateThingGroup`.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `1000`  
*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-iot-thinggroup-tags"></a>
Metadata which can be used to manage the thing group or dynamic thing group.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-thinggroup-tag.md)  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ThingGroupName`  <a name="cfn-iot-thinggroup-thinggroupname"></a>
The thing group name.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ThingGroupProperties`  <a name="cfn-iot-thinggroup-thinggroupproperties"></a>
Thing group properties.  
*Required*: No  
*Type*: [ThingGroupProperties](aws-properties-iot-thinggroup-thinggroupproperties.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-iot-thinggroup-return-values"></a>

### Ref
<a name="aws-resource-iot-thinggroup-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the thing group id.

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-thinggroup-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The thing group ARN.

`Id`  <a name="Id-fn::getatt"></a>
The thing group ID.

# AWS::IoT::ThingGroup AttributePayload
<a name="aws-properties-iot-thinggroup-attributepayload"></a>

The attribute payload.

## Syntax
<a name="aws-properties-iot-thinggroup-attributepayload-syntax"></a>

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

### JSON
<a name="aws-properties-iot-thinggroup-attributepayload-syntax.json"></a>

```
{
  "[Attributes](#cfn-iot-thinggroup-attributepayload-attributes)" : {Key: Value, ...}
}
```

### YAML
<a name="aws-properties-iot-thinggroup-attributepayload-syntax.yaml"></a>

```
  [Attributes](#cfn-iot-thinggroup-attributepayload-attributes): 
    Key: Value
```

## Properties
<a name="aws-properties-iot-thinggroup-attributepayload-properties"></a>

`Attributes`  <a name="cfn-iot-thinggroup-attributepayload-attributes"></a>
A JSON string containing up to three key-value pair in JSON format. For example:  
 `{\"attributes\":{\"string1\":\"string2\"}}`   
*Required*: No  
*Type*: Object of String  
*Pattern*: `[a-zA-Z0-9_.,@/:#-]+`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::ThingGroup Tag
<a name="aws-properties-iot-thinggroup-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-thinggroup-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-thinggroup-tag-key): String
  [Value](#cfn-iot-thinggroup-tag-value): String
```

## Properties
<a name="aws-properties-iot-thinggroup-tag-properties"></a>

`Key`  <a name="cfn-iot-thinggroup-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-thinggroup-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::ThingGroup ThingGroupProperties
<a name="aws-properties-iot-thinggroup-thinggroupproperties"></a>

Thing group properties.

## Syntax
<a name="aws-properties-iot-thinggroup-thinggroupproperties-syntax"></a>

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

### JSON
<a name="aws-properties-iot-thinggroup-thinggroupproperties-syntax.json"></a>

```
{
  "[AttributePayload](#cfn-iot-thinggroup-thinggroupproperties-attributepayload)" : AttributePayload,
  "[ThingGroupDescription](#cfn-iot-thinggroup-thinggroupproperties-thinggroupdescription)" : String
}
```

### YAML
<a name="aws-properties-iot-thinggroup-thinggroupproperties-syntax.yaml"></a>

```
  [AttributePayload](#cfn-iot-thinggroup-thinggroupproperties-attributepayload): 
    AttributePayload
  [ThingGroupDescription](#cfn-iot-thinggroup-thinggroupproperties-thinggroupdescription): String
```

## Properties
<a name="aws-properties-iot-thinggroup-thinggroupproperties-properties"></a>

`AttributePayload`  <a name="cfn-iot-thinggroup-thinggroupproperties-attributepayload"></a>
The thing group attributes in JSON format.  
*Required*: No  
*Type*: [AttributePayload](aws-properties-iot-thinggroup-attributepayload.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ThingGroupDescription`  <a name="cfn-iot-thinggroup-thinggroupproperties-thinggroupdescription"></a>
The thing group description.  
*Required*: No  
*Type*: String  
*Pattern*: `[\p{Graph}\x20]*`  
*Maximum*: `2028`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::ThingPrincipalAttachment
<a name="aws-resource-iot-thingprincipalattachment"></a>

Use the `AWS::IoT::ThingPrincipalAttachment` resource to attach a principal (an X.509 certificate or another credential) to a thing.

For more information about working with AWS IoT things and principals, see [Authorization](https://docs.aws.amazon.com/iot/latest/developerguide/authorization.html) in the *AWS IoT Developer Guide*.

## Syntax
<a name="aws-resource-iot-thingprincipalattachment-syntax"></a>

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

### JSON
<a name="aws-resource-iot-thingprincipalattachment-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::ThingPrincipalAttachment",
  "Properties" : {
      "[Principal](#cfn-iot-thingprincipalattachment-principal)" : String,
      "[ThingName](#cfn-iot-thingprincipalattachment-thingname)" : String,
      "[ThingPrincipalType](#cfn-iot-thingprincipalattachment-thingprincipaltype)" : String
    }
}
```

### YAML
<a name="aws-resource-iot-thingprincipalattachment-syntax.yaml"></a>

```
Type: AWS::IoT::ThingPrincipalAttachment
Properties:
  [Principal](#cfn-iot-thingprincipalattachment-principal): String
  [ThingName](#cfn-iot-thingprincipalattachment-thingname): String
  [ThingPrincipalType](#cfn-iot-thingprincipalattachment-thingprincipaltype): String
```

## Properties
<a name="aws-resource-iot-thingprincipalattachment-properties"></a>

`Principal`  <a name="cfn-iot-thingprincipalattachment-principal"></a>
The principal, which can be a certificate ARN (as returned from the `CreateCertificate` operation) or an Amazon Cognito ID.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ThingName`  <a name="cfn-iot-thingprincipalattachment-thingname"></a>
The name of the AWS IoT thing.  
*Required*: Yes  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ThingPrincipalType`  <a name="cfn-iot-thingprincipalattachment-thingprincipaltype"></a>
Property description not available.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

## Examples
<a name="aws-resource-iot-thingprincipalattachment--examples"></a>

### 
<a name="aws-resource-iot-thingprincipalattachment--examples--"></a>

The following example attaches a principal to a thing.

#### JSON
<a name="aws-resource-iot-thingprincipalattachment--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "NameParameter": {
      "Type": "String",
      "Description": "Name of the IoT Thing to attach the principal to"
    }
  },
  "Resources": {
    "MyThingPrincipalAttachment": {
      "Type": "AWS::IoT::ThingPrincipalAttachment",
      "Properties": {
        "ThingName": {
          "Ref": "NameParameter"
        },
        "Principal": "arn:aws:iot:ap-southeast-2:123456789012:cert/a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2"
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-thingprincipalattachment--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyThingPrincipalAttachment:
    Type: AWS::IoT::ThingPrincipalAttachment
    Properties:
      ThingName:
        Ref: NameParameter
      Principal: arn:aws:iot:ap-southeast-2:123456789012:cert/a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2

Parameters:
  NameParameter:
    Type: String
```

# AWS::IoT::ThingType
<a name="aws-resource-iot-thingtype"></a>

Creates a new thing type.

## Syntax
<a name="aws-resource-iot-thingtype-syntax"></a>

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

### JSON
<a name="aws-resource-iot-thingtype-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::ThingType",
  "Properties" : {
      "[DeprecateThingType](#cfn-iot-thingtype-deprecatethingtype)" : Boolean,
      "[Tags](#cfn-iot-thingtype-tags)" : [ Tag, ... ],
      "[ThingTypeName](#cfn-iot-thingtype-thingtypename)" : String,
      "[ThingTypeProperties](#cfn-iot-thingtype-thingtypeproperties)" : ThingTypeProperties
    }
}
```

### YAML
<a name="aws-resource-iot-thingtype-syntax.yaml"></a>

```
Type: AWS::IoT::ThingType
Properties:
  [DeprecateThingType](#cfn-iot-thingtype-deprecatethingtype): Boolean
  [Tags](#cfn-iot-thingtype-tags): 
    - Tag
  [ThingTypeName](#cfn-iot-thingtype-thingtypename): String
  [ThingTypeProperties](#cfn-iot-thingtype-thingtypeproperties): 
    ThingTypeProperties
```

## Properties
<a name="aws-resource-iot-thingtype-properties"></a>

`DeprecateThingType`  <a name="cfn-iot-thingtype-deprecatethingtype"></a>
Deprecates a thing type. You can not associate new things with deprecated thing type.  
Requires permission to access the [DeprecateThingType](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action.  
*Required*: No  
*Type*: Boolean  
*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-iot-thingtype-tags"></a>
Metadata which can be used to manage the thing type.  
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-thingtype-tag.md)  
*Maximum*: `50`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ThingTypeName`  <a name="cfn-iot-thingtype-thingtypename"></a>
The name of the thing type.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:_-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`ThingTypeProperties`  <a name="cfn-iot-thingtype-thingtypeproperties"></a>
The thing type properties for the thing type to create. It contains information about the new thing type including a description, a list of searchable thing attribute names, and a list of propagating attributes. After a thing type is created, you can only update `Mqtt5Configuration`.   
*Required*: No  
*Type*: [ThingTypeProperties](aws-properties-iot-thingtype-thingtypeproperties.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-iot-thingtype-return-values"></a>

### Ref
<a name="aws-resource-iot-thingtype-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the thing type id.

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-thingtype-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The thing type arn.

`Id`  <a name="Id-fn::getatt"></a>
The thing type id.

# AWS::IoT::ThingType Mqtt5Configuration
<a name="aws-properties-iot-thingtype-mqtt5configuration"></a>

The configuration to add user-defined properties to enrich MQTT 5 messages.

## Syntax
<a name="aws-properties-iot-thingtype-mqtt5configuration-syntax"></a>

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

### JSON
<a name="aws-properties-iot-thingtype-mqtt5configuration-syntax.json"></a>

```
{
  "[PropagatingAttributes](#cfn-iot-thingtype-mqtt5configuration-propagatingattributes)" : [ PropagatingAttribute, ... ]
}
```

### YAML
<a name="aws-properties-iot-thingtype-mqtt5configuration-syntax.yaml"></a>

```
  [PropagatingAttributes](#cfn-iot-thingtype-mqtt5configuration-propagatingattributes): 
    - PropagatingAttribute
```

## Properties
<a name="aws-properties-iot-thingtype-mqtt5configuration-properties"></a>

`PropagatingAttributes`  <a name="cfn-iot-thingtype-mqtt5configuration-propagatingattributes"></a>
An object that represents the connection attribute, the thing attribute, and the MQTT 5 user property key.  
*Required*: No  
*Type*: Array of [PropagatingAttribute](aws-properties-iot-thingtype-propagatingattribute.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::ThingType PropagatingAttribute
<a name="aws-properties-iot-thingtype-propagatingattribute"></a>

An object that represents the connection attribute, the thing attribute, and the MQTT 5 user property key.

## Syntax
<a name="aws-properties-iot-thingtype-propagatingattribute-syntax"></a>

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

### JSON
<a name="aws-properties-iot-thingtype-propagatingattribute-syntax.json"></a>

```
{
  "[ConnectionAttribute](#cfn-iot-thingtype-propagatingattribute-connectionattribute)" : String,
  "[ThingAttribute](#cfn-iot-thingtype-propagatingattribute-thingattribute)" : String,
  "[UserPropertyKey](#cfn-iot-thingtype-propagatingattribute-userpropertykey)" : String
}
```

### YAML
<a name="aws-properties-iot-thingtype-propagatingattribute-syntax.yaml"></a>

```
  [ConnectionAttribute](#cfn-iot-thingtype-propagatingattribute-connectionattribute): String
  [ThingAttribute](#cfn-iot-thingtype-propagatingattribute-thingattribute): String
  [UserPropertyKey](#cfn-iot-thingtype-propagatingattribute-userpropertykey): String
```

## Properties
<a name="aws-properties-iot-thingtype-propagatingattribute-properties"></a>

`ConnectionAttribute`  <a name="cfn-iot-thingtype-propagatingattribute-connectionattribute"></a>
The attribute associated with the connection details.  
*Required*: No  
*Type*: String  
*Allowed values*: `iot:ClientId | iot:Thing.ThingName`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ThingAttribute`  <a name="cfn-iot-thingtype-propagatingattribute-thingattribute"></a>
The thing attribute that is propagating for MQTT 5 message enrichment.  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9_.,@/:#-]+`  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`UserPropertyKey`  <a name="cfn-iot-thingtype-propagatingattribute-userpropertykey"></a>
The key of the MQTT 5 user property, which is a key-value pair.  
*Required*: Yes  
*Type*: String  
*Pattern*: `[a-zA-Z0-9:$.]+`  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::ThingType Tag
<a name="aws-properties-iot-thingtype-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-thingtype-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-thingtype-tag-key): String
  [Value](#cfn-iot-thingtype-tag-value): String
```

## Properties
<a name="aws-properties-iot-thingtype-tag-properties"></a>

`Key`  <a name="cfn-iot-thingtype-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-thingtype-tag-value"></a>
The tag's value.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `256`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::ThingType ThingTypeProperties
<a name="aws-properties-iot-thingtype-thingtypeproperties"></a>

The ThingTypeProperties contains information about the thing type including: a thing type description, and a list of searchable thing attribute names.

## Syntax
<a name="aws-properties-iot-thingtype-thingtypeproperties-syntax"></a>

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

### JSON
<a name="aws-properties-iot-thingtype-thingtypeproperties-syntax.json"></a>

```
{
  "[Mqtt5Configuration](#cfn-iot-thingtype-thingtypeproperties-mqtt5configuration)" : Mqtt5Configuration,
  "[SearchableAttributes](#cfn-iot-thingtype-thingtypeproperties-searchableattributes)" : [ String, ... ],
  "[ThingTypeDescription](#cfn-iot-thingtype-thingtypeproperties-thingtypedescription)" : String
}
```

### YAML
<a name="aws-properties-iot-thingtype-thingtypeproperties-syntax.yaml"></a>

```
  [Mqtt5Configuration](#cfn-iot-thingtype-thingtypeproperties-mqtt5configuration): 
    Mqtt5Configuration
  [SearchableAttributes](#cfn-iot-thingtype-thingtypeproperties-searchableattributes): 
    - String
  [ThingTypeDescription](#cfn-iot-thingtype-thingtypeproperties-thingtypedescription): String
```

## Properties
<a name="aws-properties-iot-thingtype-thingtypeproperties-properties"></a>

`Mqtt5Configuration`  <a name="cfn-iot-thingtype-thingtypeproperties-mqtt5configuration"></a>
The configuration to add user-defined properties to enrich MQTT 5 messages.  
*Required*: No  
*Type*: [Mqtt5Configuration](aws-properties-iot-thingtype-mqtt5configuration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SearchableAttributes`  <a name="cfn-iot-thingtype-thingtypeproperties-searchableattributes"></a>
A list of searchable thing attribute names.  
*Required*: No  
*Type*: Array of String  
*Maximum*: `128 | 3`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ThingTypeDescription`  <a name="cfn-iot-thingtype-thingtypeproperties-thingtypedescription"></a>
The description of the thing type.  
*Required*: No  
*Type*: String  
*Pattern*: `[\p{Graph}\x20]*`  
*Maximum*: `2028`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule
<a name="aws-resource-iot-topicrule"></a>

Use the `AWS::IoT::TopicRule` resource to declare an AWS IoT rule. For information about working with AWS IoT rules, see [Rules for AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) in the *AWS IoT Developer Guide*.

## Syntax
<a name="aws-resource-iot-topicrule-syntax"></a>

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

### JSON
<a name="aws-resource-iot-topicrule-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::TopicRule",
  "Properties" : {
      "[RuleName](#cfn-iot-topicrule-rulename)" : String,
      "[Tags](#cfn-iot-topicrule-tags)" : [ Tag, ... ],
      "[TopicRulePayload](#cfn-iot-topicrule-topicrulepayload)" : TopicRulePayload
    }
}
```

### YAML
<a name="aws-resource-iot-topicrule-syntax.yaml"></a>

```
Type: AWS::IoT::TopicRule
Properties:
  [RuleName](#cfn-iot-topicrule-rulename): String
  [Tags](#cfn-iot-topicrule-tags): 
    - Tag
  [TopicRulePayload](#cfn-iot-topicrule-topicrulepayload): 
    TopicRulePayload
```

## Properties
<a name="aws-resource-iot-topicrule-properties"></a>

`RuleName`  <a name="cfn-iot-topicrule-rulename"></a>
The name of the rule.  
*Required*: No  
*Type*: String  
*Pattern*: `^[a-zA-Z0-9_]+$`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Tags`  <a name="cfn-iot-topicrule-tags"></a>
Metadata which can be used to manage the topic rule.  
For URI Request parameters use format: ...key1=value1&key2=value2...  
For the CLI command-line parameter use format: --tags "key1=value1&key2=value2..."  
For the cli-input-json file use format: "tags": "key1=value1&key2=value2..."
*Required*: No  
*Type*: Array of [Tag](aws-properties-iot-topicrule-tag.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TopicRulePayload`  <a name="cfn-iot-topicrule-topicrulepayload"></a>
The rule payload.  
*Required*: Yes  
*Type*: [TopicRulePayload](aws-properties-iot-topicrule-topicrulepayload.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-iot-topicrule-return-values"></a>

### Ref
<a name="aws-resource-iot-topicrule-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the topic rule name. For example:

 `{ "Ref": "MyTopicRule" }` 

For a stack named My-Stack (the - character is omitted), a value similar to the following is returned:

 `MyStackMyTopicRule12ABC3D456EFG` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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

The `Fn::GetAtt` intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the `Fn::GetAtt` intrinsic function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-getatt.html).

#### 
<a name="aws-resource-iot-topicrule-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The Amazon Resource Name (ARN) of the AWS IoT rule, such as `arn:aws:iot:us-east-2:123456789012:rule/MyIoTRule`.

## Examples
<a name="aws-resource-iot-topicrule--examples"></a>

### 
<a name="aws-resource-iot-topicrule--examples--"></a>

The following example declares an AWS IoT rule.

#### JSON
<a name="aws-resource-iot-topicrule--examples----json"></a>

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MyTopicRule": {
      "Type": "AWS::IoT::TopicRule",
      "Properties": {
        "RuleName": {
          "Ref": "NameParameter"
        },
        "TopicRulePayload": {
          "RuleDisabled": "true",
          "Sql": "SELECT temp FROM 'SomeTopic' WHERE temp > 60",
          "Actions": [
            {
              "S3": {
                "BucketName": {
                  "Ref": "amzn-s3-demo-bucket"
                },
                "RoleArn": {
                  "Fn::GetAtt": [
                    "MyRole",
                    "Arn"
                  ]
                },
                "Key": "MyKey.txt"
              }
            }
          ]
        }
      }
    }
  }
}
```

#### YAML
<a name="aws-resource-iot-topicrule--examples----yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  MyTopicRule:
    Type: AWS::IoT::TopicRule
    Properties:
      RuleName:
        Ref: NameParameter
      TopicRulePayload:
        RuleDisabled: 'true'
        Sql: "SELECT temp FROM 'SomeTopic' WHERE temp > 60"
        Actions:
          - S3:
              BucketName:
                Ref: amzn-s3-demo-bucket
              RoleArn:
                Fn::GetAtt:
                  - MyRole
                  - Arn
              Key: MyKey.txt
```

# AWS::IoT::TopicRule Action
<a name="aws-properties-iot-topicrule-action"></a>

Describes the actions associated with a rule.

## Syntax
<a name="aws-properties-iot-topicrule-action-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-action-syntax.json"></a>

```
{
  "[CloudwatchAlarm](#cfn-iot-topicrule-action-cloudwatchalarm)" : CloudwatchAlarmAction,
  "[CloudwatchLogs](#cfn-iot-topicrule-action-cloudwatchlogs)" : CloudwatchLogsAction,
  "[CloudwatchMetric](#cfn-iot-topicrule-action-cloudwatchmetric)" : CloudwatchMetricAction,
  "[DynamoDB](#cfn-iot-topicrule-action-dynamodb)" : DynamoDBAction,
  "[DynamoDBv2](#cfn-iot-topicrule-action-dynamodbv2)" : DynamoDBv2Action,
  "[Elasticsearch](#cfn-iot-topicrule-action-elasticsearch)" : ElasticsearchAction,
  "[Firehose](#cfn-iot-topicrule-action-firehose)" : FirehoseAction,
  "[Http](#cfn-iot-topicrule-action-http)" : HttpAction,
  "[IotAnalytics](#cfn-iot-topicrule-action-iotanalytics)" : IotAnalyticsAction,
  "[IotEvents](#cfn-iot-topicrule-action-iotevents)" : IotEventsAction,
  "[IotSiteWise](#cfn-iot-topicrule-action-iotsitewise)" : IotSiteWiseAction,
  "[Kafka](#cfn-iot-topicrule-action-kafka)" : KafkaAction,
  "[Kinesis](#cfn-iot-topicrule-action-kinesis)" : KinesisAction,
  "[Lambda](#cfn-iot-topicrule-action-lambda)" : LambdaAction,
  "[Location](#cfn-iot-topicrule-action-location)" : LocationAction,
  "[OpenSearch](#cfn-iot-topicrule-action-opensearch)" : OpenSearchAction,
  "[Republish](#cfn-iot-topicrule-action-republish)" : RepublishAction,
  "[S3](#cfn-iot-topicrule-action-s3)" : S3Action,
  "[Sns](#cfn-iot-topicrule-action-sns)" : SnsAction,
  "[Sqs](#cfn-iot-topicrule-action-sqs)" : SqsAction,
  "[StepFunctions](#cfn-iot-topicrule-action-stepfunctions)" : StepFunctionsAction,
  "[Timestream](#cfn-iot-topicrule-action-timestream)" : TimestreamAction
}
```

### YAML
<a name="aws-properties-iot-topicrule-action-syntax.yaml"></a>

```
  [CloudwatchAlarm](#cfn-iot-topicrule-action-cloudwatchalarm): 
    CloudwatchAlarmAction
  [CloudwatchLogs](#cfn-iot-topicrule-action-cloudwatchlogs): 
    CloudwatchLogsAction
  [CloudwatchMetric](#cfn-iot-topicrule-action-cloudwatchmetric): 
    CloudwatchMetricAction
  [DynamoDB](#cfn-iot-topicrule-action-dynamodb): 
    DynamoDBAction
  [DynamoDBv2](#cfn-iot-topicrule-action-dynamodbv2): 
    DynamoDBv2Action
  [Elasticsearch](#cfn-iot-topicrule-action-elasticsearch): 
    ElasticsearchAction
  [Firehose](#cfn-iot-topicrule-action-firehose): 
    FirehoseAction
  [Http](#cfn-iot-topicrule-action-http): 
    HttpAction
  [IotAnalytics](#cfn-iot-topicrule-action-iotanalytics): 
    IotAnalyticsAction
  [IotEvents](#cfn-iot-topicrule-action-iotevents): 
    IotEventsAction
  [IotSiteWise](#cfn-iot-topicrule-action-iotsitewise): 
    IotSiteWiseAction
  [Kafka](#cfn-iot-topicrule-action-kafka): 
    KafkaAction
  [Kinesis](#cfn-iot-topicrule-action-kinesis): 
    KinesisAction
  [Lambda](#cfn-iot-topicrule-action-lambda): 
    LambdaAction
  [Location](#cfn-iot-topicrule-action-location): 
    LocationAction
  [OpenSearch](#cfn-iot-topicrule-action-opensearch): 
    OpenSearchAction
  [Republish](#cfn-iot-topicrule-action-republish): 
    RepublishAction
  [S3](#cfn-iot-topicrule-action-s3): 
    S3Action
  [Sns](#cfn-iot-topicrule-action-sns): 
    SnsAction
  [Sqs](#cfn-iot-topicrule-action-sqs): 
    SqsAction
  [StepFunctions](#cfn-iot-topicrule-action-stepfunctions): 
    StepFunctionsAction
  [Timestream](#cfn-iot-topicrule-action-timestream): 
    TimestreamAction
```

## Properties
<a name="aws-properties-iot-topicrule-action-properties"></a>

`CloudwatchAlarm`  <a name="cfn-iot-topicrule-action-cloudwatchalarm"></a>
Change the state of a CloudWatch alarm.  
*Required*: No  
*Type*: [CloudwatchAlarmAction](aws-properties-iot-topicrule-cloudwatchalarmaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`CloudwatchLogs`  <a name="cfn-iot-topicrule-action-cloudwatchlogs"></a>
Sends data to CloudWatch.  
*Required*: No  
*Type*: [CloudwatchLogsAction](aws-properties-iot-topicrule-cloudwatchlogsaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`CloudwatchMetric`  <a name="cfn-iot-topicrule-action-cloudwatchmetric"></a>
Capture a CloudWatch metric.  
*Required*: No  
*Type*: [CloudwatchMetricAction](aws-properties-iot-topicrule-cloudwatchmetricaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DynamoDB`  <a name="cfn-iot-topicrule-action-dynamodb"></a>
Write to a DynamoDB table.  
*Required*: No  
*Type*: [DynamoDBAction](aws-properties-iot-topicrule-dynamodbaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DynamoDBv2`  <a name="cfn-iot-topicrule-action-dynamodbv2"></a>
Write to a DynamoDB table. This is a new version of the DynamoDB action. It allows you to write each attribute in an MQTT message payload into a separate DynamoDB column.  
*Required*: No  
*Type*: [DynamoDBv2Action](aws-properties-iot-topicrule-dynamodbv2action.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Elasticsearch`  <a name="cfn-iot-topicrule-action-elasticsearch"></a>
Write data to an Amazon OpenSearch Service domain.  
The `Elasticsearch` action can only be used by existing rule actions. To create a new rule action or to update an existing rule action, use the `OpenSearch` rule action instead. For more information, see [OpenSearchAction](https://docs.aws.amazon.com//iot/latest/apireference/API_OpenSearchAction.html).
*Required*: No  
*Type*: [ElasticsearchAction](aws-properties-iot-topicrule-elasticsearchaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Firehose`  <a name="cfn-iot-topicrule-action-firehose"></a>
Write to an Amazon Kinesis Firehose stream.  
*Required*: No  
*Type*: [FirehoseAction](aws-properties-iot-topicrule-firehoseaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Http`  <a name="cfn-iot-topicrule-action-http"></a>
Send data to an HTTPS endpoint.  
*Required*: No  
*Type*: [HttpAction](aws-properties-iot-topicrule-httpaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IotAnalytics`  <a name="cfn-iot-topicrule-action-iotanalytics"></a>
Sends message data to an AWS IoT Analytics channel.  
*Required*: No  
*Type*: [IotAnalyticsAction](aws-properties-iot-topicrule-iotanalyticsaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IotEvents`  <a name="cfn-iot-topicrule-action-iotevents"></a>
Sends an input to an AWS IoT Events detector.  
*Required*: No  
*Type*: [IotEventsAction](aws-properties-iot-topicrule-ioteventsaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IotSiteWise`  <a name="cfn-iot-topicrule-action-iotsitewise"></a>
Sends data from the MQTT message that triggered the rule to AWS IoT SiteWise asset properties.  
*Required*: No  
*Type*: [IotSiteWiseAction](aws-properties-iot-topicrule-iotsitewiseaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Kafka`  <a name="cfn-iot-topicrule-action-kafka"></a>
Send messages to an Amazon Managed Streaming for Apache Kafka (Amazon MSK) or self-managed Apache Kafka cluster.  
*Required*: No  
*Type*: [KafkaAction](aws-properties-iot-topicrule-kafkaaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Kinesis`  <a name="cfn-iot-topicrule-action-kinesis"></a>
Write data to an Amazon Kinesis stream.  
*Required*: No  
*Type*: [KinesisAction](aws-properties-iot-topicrule-kinesisaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Lambda`  <a name="cfn-iot-topicrule-action-lambda"></a>
Invoke a Lambda function.  
*Required*: No  
*Type*: [LambdaAction](aws-properties-iot-topicrule-lambdaaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Location`  <a name="cfn-iot-topicrule-action-location"></a>
Sends device location data to [Amazon Location Service](https://docs.aws.amazon.com//location/latest/developerguide/welcome.html).  
*Required*: No  
*Type*: [LocationAction](aws-properties-iot-topicrule-locationaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`OpenSearch`  <a name="cfn-iot-topicrule-action-opensearch"></a>
Write data to an Amazon OpenSearch Service domain.  
*Required*: No  
*Type*: [OpenSearchAction](aws-properties-iot-topicrule-opensearchaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Republish`  <a name="cfn-iot-topicrule-action-republish"></a>
Publish to another MQTT topic.  
*Required*: No  
*Type*: [RepublishAction](aws-properties-iot-topicrule-republishaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`S3`  <a name="cfn-iot-topicrule-action-s3"></a>
Write to an Amazon S3 bucket.  
*Required*: No  
*Type*: [S3Action](aws-properties-iot-topicrule-s3action.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Sns`  <a name="cfn-iot-topicrule-action-sns"></a>
Publish to an Amazon SNS topic.  
*Required*: No  
*Type*: [SnsAction](aws-properties-iot-topicrule-snsaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Sqs`  <a name="cfn-iot-topicrule-action-sqs"></a>
Publish to an Amazon SQS queue.  
*Required*: No  
*Type*: [SqsAction](aws-properties-iot-topicrule-sqsaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`StepFunctions`  <a name="cfn-iot-topicrule-action-stepfunctions"></a>
Starts execution of a Step Functions state machine.  
*Required*: No  
*Type*: [StepFunctionsAction](aws-properties-iot-topicrule-stepfunctionsaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Timestream`  <a name="cfn-iot-topicrule-action-timestream"></a>
Writes attributes from an MQTT message.  
*Required*: No  
*Type*: [TimestreamAction](aws-properties-iot-topicrule-timestreamaction.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule AssetPropertyTimestamp
<a name="aws-properties-iot-topicrule-assetpropertytimestamp"></a>

An asset property timestamp entry containing the following information.

## Syntax
<a name="aws-properties-iot-topicrule-assetpropertytimestamp-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-assetpropertytimestamp-syntax.json"></a>

```
{
  "[OffsetInNanos](#cfn-iot-topicrule-assetpropertytimestamp-offsetinnanos)" : String,
  "[TimeInSeconds](#cfn-iot-topicrule-assetpropertytimestamp-timeinseconds)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-assetpropertytimestamp-syntax.yaml"></a>

```
  [OffsetInNanos](#cfn-iot-topicrule-assetpropertytimestamp-offsetinnanos): String
  [TimeInSeconds](#cfn-iot-topicrule-assetpropertytimestamp-timeinseconds): String
```

## Properties
<a name="aws-properties-iot-topicrule-assetpropertytimestamp-properties"></a>

`OffsetInNanos`  <a name="cfn-iot-topicrule-assetpropertytimestamp-offsetinnanos"></a>
Optional. A string that contains the nanosecond time offset. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TimeInSeconds`  <a name="cfn-iot-topicrule-assetpropertytimestamp-timeinseconds"></a>
A string that contains the time in seconds since epoch. Accepts substitution templates.  
*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::IoT::TopicRule AssetPropertyValue
<a name="aws-properties-iot-topicrule-assetpropertyvalue"></a>

An asset property value entry containing the following information.

## Syntax
<a name="aws-properties-iot-topicrule-assetpropertyvalue-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-assetpropertyvalue-syntax.json"></a>

```
{
  "[Quality](#cfn-iot-topicrule-assetpropertyvalue-quality)" : String,
  "[Timestamp](#cfn-iot-topicrule-assetpropertyvalue-timestamp)" : AssetPropertyTimestamp,
  "[Value](#cfn-iot-topicrule-assetpropertyvalue-value)" : AssetPropertyVariant
}
```

### YAML
<a name="aws-properties-iot-topicrule-assetpropertyvalue-syntax.yaml"></a>

```
  [Quality](#cfn-iot-topicrule-assetpropertyvalue-quality): String
  [Timestamp](#cfn-iot-topicrule-assetpropertyvalue-timestamp): 
    AssetPropertyTimestamp
  [Value](#cfn-iot-topicrule-assetpropertyvalue-value): 
    AssetPropertyVariant
```

## Properties
<a name="aws-properties-iot-topicrule-assetpropertyvalue-properties"></a>

`Quality`  <a name="cfn-iot-topicrule-assetpropertyvalue-quality"></a>
Optional. A string that describes the quality of the value. Accepts substitution templates. Must be `GOOD`, `BAD`, or `UNCERTAIN`.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Timestamp`  <a name="cfn-iot-topicrule-assetpropertyvalue-timestamp"></a>
The asset property value timestamp.  
*Required*: Yes  
*Type*: [AssetPropertyTimestamp](aws-properties-iot-topicrule-assetpropertytimestamp.md)  
*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-iot-topicrule-assetpropertyvalue-value"></a>
The value of the asset property.  
*Required*: Yes  
*Type*: [AssetPropertyVariant](aws-properties-iot-topicrule-assetpropertyvariant.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule AssetPropertyVariant
<a name="aws-properties-iot-topicrule-assetpropertyvariant"></a>

Contains an asset property value (of a single type).

## Syntax
<a name="aws-properties-iot-topicrule-assetpropertyvariant-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-assetpropertyvariant-syntax.json"></a>

```
{
  "[BooleanValue](#cfn-iot-topicrule-assetpropertyvariant-booleanvalue)" : String,
  "[DoubleValue](#cfn-iot-topicrule-assetpropertyvariant-doublevalue)" : String,
  "[IntegerValue](#cfn-iot-topicrule-assetpropertyvariant-integervalue)" : String,
  "[StringValue](#cfn-iot-topicrule-assetpropertyvariant-stringvalue)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-assetpropertyvariant-syntax.yaml"></a>

```
  [BooleanValue](#cfn-iot-topicrule-assetpropertyvariant-booleanvalue): String
  [DoubleValue](#cfn-iot-topicrule-assetpropertyvariant-doublevalue): String
  [IntegerValue](#cfn-iot-topicrule-assetpropertyvariant-integervalue): String
  [StringValue](#cfn-iot-topicrule-assetpropertyvariant-stringvalue): 
    String
```

## Properties
<a name="aws-properties-iot-topicrule-assetpropertyvariant-properties"></a>

`BooleanValue`  <a name="cfn-iot-topicrule-assetpropertyvariant-booleanvalue"></a>
Optional. A string that contains the boolean value (`true` or `false`) of the value entry. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DoubleValue`  <a name="cfn-iot-topicrule-assetpropertyvariant-doublevalue"></a>
Optional. A string that contains the double value of the value entry. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`IntegerValue`  <a name="cfn-iot-topicrule-assetpropertyvariant-integervalue"></a>
Optional. A string that contains the integer value of the value entry. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`StringValue`  <a name="cfn-iot-topicrule-assetpropertyvariant-stringvalue"></a>
Optional. The string value of the value entry. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `1024`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule BatchConfig
<a name="aws-properties-iot-topicrule-batchconfig"></a>

<a name="aws-properties-iot-topicrule-batchconfig-description"></a>The `BatchConfig` property type specifies Property description not available. for an [AWS::IoT::TopicRule](aws-resource-iot-topicrule.md).

## Syntax
<a name="aws-properties-iot-topicrule-batchconfig-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-batchconfig-syntax.json"></a>

```
{
  "[MaxBatchOpenMs](#cfn-iot-topicrule-batchconfig-maxbatchopenms)" : Integer,
  "[MaxBatchSize](#cfn-iot-topicrule-batchconfig-maxbatchsize)" : Integer,
  "[MaxBatchSizeBytes](#cfn-iot-topicrule-batchconfig-maxbatchsizebytes)" : Integer
}
```

### YAML
<a name="aws-properties-iot-topicrule-batchconfig-syntax.yaml"></a>

```
  [MaxBatchOpenMs](#cfn-iot-topicrule-batchconfig-maxbatchopenms): Integer
  [MaxBatchSize](#cfn-iot-topicrule-batchconfig-maxbatchsize): Integer
  [MaxBatchSizeBytes](#cfn-iot-topicrule-batchconfig-maxbatchsizebytes): Integer
```

## Properties
<a name="aws-properties-iot-topicrule-batchconfig-properties"></a>

`MaxBatchOpenMs`  <a name="cfn-iot-topicrule-batchconfig-maxbatchopenms"></a>
Property description not available.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MaxBatchSize`  <a name="cfn-iot-topicrule-batchconfig-maxbatchsize"></a>
Property description not available.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MaxBatchSizeBytes`  <a name="cfn-iot-topicrule-batchconfig-maxbatchsizebytes"></a>
Property description not available.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule CloudwatchAlarmAction
<a name="aws-properties-iot-topicrule-cloudwatchalarmaction"></a>

Describes an action that updates a CloudWatch alarm.

## Syntax
<a name="aws-properties-iot-topicrule-cloudwatchalarmaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-cloudwatchalarmaction-syntax.json"></a>

```
{
  "[AlarmName](#cfn-iot-topicrule-cloudwatchalarmaction-alarmname)" : String,
  "[RoleArn](#cfn-iot-topicrule-cloudwatchalarmaction-rolearn)" : String,
  "[StateReason](#cfn-iot-topicrule-cloudwatchalarmaction-statereason)" : String,
  "[StateValue](#cfn-iot-topicrule-cloudwatchalarmaction-statevalue)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-cloudwatchalarmaction-syntax.yaml"></a>

```
  [AlarmName](#cfn-iot-topicrule-cloudwatchalarmaction-alarmname): String
  [RoleArn](#cfn-iot-topicrule-cloudwatchalarmaction-rolearn): String
  [StateReason](#cfn-iot-topicrule-cloudwatchalarmaction-statereason): String
  [StateValue](#cfn-iot-topicrule-cloudwatchalarmaction-statevalue): String
```

## Properties
<a name="aws-properties-iot-topicrule-cloudwatchalarmaction-properties"></a>

`AlarmName`  <a name="cfn-iot-topicrule-cloudwatchalarmaction-alarmname"></a>
The CloudWatch alarm name.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-cloudwatchalarmaction-rolearn"></a>
The IAM role that allows access to the CloudWatch alarm.  
*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)

`StateReason`  <a name="cfn-iot-topicrule-cloudwatchalarmaction-statereason"></a>
The reason for the alarm change.  
*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)

`StateValue`  <a name="cfn-iot-topicrule-cloudwatchalarmaction-statevalue"></a>
The value of the alarm state. Acceptable values are: OK, ALARM, INSUFFICIENT\$1DATA.  
*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::IoT::TopicRule CloudwatchLogsAction
<a name="aws-properties-iot-topicrule-cloudwatchlogsaction"></a>

Describes an action that updates a CloudWatch log.

## Syntax
<a name="aws-properties-iot-topicrule-cloudwatchlogsaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-cloudwatchlogsaction-syntax.json"></a>

```
{
  "[BatchMode](#cfn-iot-topicrule-cloudwatchlogsaction-batchmode)" : Boolean,
  "[LogGroupName](#cfn-iot-topicrule-cloudwatchlogsaction-loggroupname)" : String,
  "[RoleArn](#cfn-iot-topicrule-cloudwatchlogsaction-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-cloudwatchlogsaction-syntax.yaml"></a>

```
  [BatchMode](#cfn-iot-topicrule-cloudwatchlogsaction-batchmode): Boolean
  [LogGroupName](#cfn-iot-topicrule-cloudwatchlogsaction-loggroupname): String
  [RoleArn](#cfn-iot-topicrule-cloudwatchlogsaction-rolearn): String
```

## Properties
<a name="aws-properties-iot-topicrule-cloudwatchlogsaction-properties"></a>

`BatchMode`  <a name="cfn-iot-topicrule-cloudwatchlogsaction-batchmode"></a>
Indicates whether batches of log records will be extracted and uploaded into CloudWatch.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`LogGroupName`  <a name="cfn-iot-topicrule-cloudwatchlogsaction-loggroupname"></a>
The CloudWatch log name.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-cloudwatchlogsaction-rolearn"></a>
The IAM role that allows access to the CloudWatch log.  
*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::IoT::TopicRule CloudwatchMetricAction
<a name="aws-properties-iot-topicrule-cloudwatchmetricaction"></a>

Describes an action that captures a CloudWatch metric.

## Syntax
<a name="aws-properties-iot-topicrule-cloudwatchmetricaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-cloudwatchmetricaction-syntax.json"></a>

```
{
  "[MetricName](#cfn-iot-topicrule-cloudwatchmetricaction-metricname)" : String,
  "[MetricNamespace](#cfn-iot-topicrule-cloudwatchmetricaction-metricnamespace)" : String,
  "[MetricTimestamp](#cfn-iot-topicrule-cloudwatchmetricaction-metrictimestamp)" : String,
  "[MetricUnit](#cfn-iot-topicrule-cloudwatchmetricaction-metricunit)" : String,
  "[MetricValue](#cfn-iot-topicrule-cloudwatchmetricaction-metricvalue)" : String,
  "[RoleArn](#cfn-iot-topicrule-cloudwatchmetricaction-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-cloudwatchmetricaction-syntax.yaml"></a>

```
  [MetricName](#cfn-iot-topicrule-cloudwatchmetricaction-metricname): String
  [MetricNamespace](#cfn-iot-topicrule-cloudwatchmetricaction-metricnamespace): String
  [MetricTimestamp](#cfn-iot-topicrule-cloudwatchmetricaction-metrictimestamp): String
  [MetricUnit](#cfn-iot-topicrule-cloudwatchmetricaction-metricunit): String
  [MetricValue](#cfn-iot-topicrule-cloudwatchmetricaction-metricvalue): String
  [RoleArn](#cfn-iot-topicrule-cloudwatchmetricaction-rolearn): String
```

## Properties
<a name="aws-properties-iot-topicrule-cloudwatchmetricaction-properties"></a>

`MetricName`  <a name="cfn-iot-topicrule-cloudwatchmetricaction-metricname"></a>
The CloudWatch metric name.  
*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)

`MetricNamespace`  <a name="cfn-iot-topicrule-cloudwatchmetricaction-metricnamespace"></a>
The CloudWatch metric namespace name.  
*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)

`MetricTimestamp`  <a name="cfn-iot-topicrule-cloudwatchmetricaction-metrictimestamp"></a>
An optional [Unix timestamp](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp).  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`MetricUnit`  <a name="cfn-iot-topicrule-cloudwatchmetricaction-metricunit"></a>
The [metric unit](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Unit) supported by CloudWatch.  
*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)

`MetricValue`  <a name="cfn-iot-topicrule-cloudwatchmetricaction-metricvalue"></a>
The CloudWatch metric value.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-cloudwatchmetricaction-rolearn"></a>
The IAM role that allows access to the CloudWatch metric.  
*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::IoT::TopicRule DynamoDBAction
<a name="aws-properties-iot-topicrule-dynamodbaction"></a>

Describes an action to write to a DynamoDB table.

The `tableName`, `hashKeyField`, and `rangeKeyField` values must match the values used when you created the table.

The `hashKeyValue` and `rangeKeyvalue` fields use a substitution template syntax. These templates provide data at runtime. The syntax is as follows: \$1\$1*sql-expression*\$1.

You can specify any valid expression in a WHERE or SELECT clause, including JSON properties, comparisons, calculations, and functions. For example, the following field uses the third level of the topic:

 `"hashKeyValue": "${topic(3)}"` 

The following field uses the timestamp:

 `"rangeKeyValue": "${timestamp()}"` 

For more information, see [DynamoDBv2 Action](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html) in the *AWS IoT Developer Guide*.

## Syntax
<a name="aws-properties-iot-topicrule-dynamodbaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-dynamodbaction-syntax.json"></a>

```
{
  "[HashKeyField](#cfn-iot-topicrule-dynamodbaction-hashkeyfield)" : String,
  "[HashKeyType](#cfn-iot-topicrule-dynamodbaction-hashkeytype)" : String,
  "[HashKeyValue](#cfn-iot-topicrule-dynamodbaction-hashkeyvalue)" : String,
  "[PayloadField](#cfn-iot-topicrule-dynamodbaction-payloadfield)" : String,
  "[RangeKeyField](#cfn-iot-topicrule-dynamodbaction-rangekeyfield)" : String,
  "[RangeKeyType](#cfn-iot-topicrule-dynamodbaction-rangekeytype)" : String,
  "[RangeKeyValue](#cfn-iot-topicrule-dynamodbaction-rangekeyvalue)" : String,
  "[RoleArn](#cfn-iot-topicrule-dynamodbaction-rolearn)" : String,
  "[TableName](#cfn-iot-topicrule-dynamodbaction-tablename)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-dynamodbaction-syntax.yaml"></a>

```
  [HashKeyField](#cfn-iot-topicrule-dynamodbaction-hashkeyfield): String
  [HashKeyType](#cfn-iot-topicrule-dynamodbaction-hashkeytype): String
  [HashKeyValue](#cfn-iot-topicrule-dynamodbaction-hashkeyvalue): String
  [PayloadField](#cfn-iot-topicrule-dynamodbaction-payloadfield): String
  [RangeKeyField](#cfn-iot-topicrule-dynamodbaction-rangekeyfield): String
  [RangeKeyType](#cfn-iot-topicrule-dynamodbaction-rangekeytype): String
  [RangeKeyValue](#cfn-iot-topicrule-dynamodbaction-rangekeyvalue): String
  [RoleArn](#cfn-iot-topicrule-dynamodbaction-rolearn): String
  [TableName](#cfn-iot-topicrule-dynamodbaction-tablename): String
```

## Properties
<a name="aws-properties-iot-topicrule-dynamodbaction-properties"></a>

`HashKeyField`  <a name="cfn-iot-topicrule-dynamodbaction-hashkeyfield"></a>
The hash key name.  
*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)

`HashKeyType`  <a name="cfn-iot-topicrule-dynamodbaction-hashkeytype"></a>
The hash key type. Valid values are "STRING" or "NUMBER"  
*Required*: No  
*Type*: String  
*Allowed values*: `STRING | NUMBER`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`HashKeyValue`  <a name="cfn-iot-topicrule-dynamodbaction-hashkeyvalue"></a>
The hash key value.  
*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)

`PayloadField`  <a name="cfn-iot-topicrule-dynamodbaction-payloadfield"></a>
The action payload. This name can be customized.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RangeKeyField`  <a name="cfn-iot-topicrule-dynamodbaction-rangekeyfield"></a>
The range key name.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RangeKeyType`  <a name="cfn-iot-topicrule-dynamodbaction-rangekeytype"></a>
The range key type. Valid values are "STRING" or "NUMBER"  
*Required*: No  
*Type*: String  
*Allowed values*: `STRING | NUMBER`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RangeKeyValue`  <a name="cfn-iot-topicrule-dynamodbaction-rangekeyvalue"></a>
The range key value.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-dynamodbaction-rolearn"></a>
The ARN of the IAM role that grants access to the DynamoDB table.  
*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)

`TableName`  <a name="cfn-iot-topicrule-dynamodbaction-tablename"></a>
The name of the DynamoDB table.  
*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::IoT::TopicRule DynamoDBv2Action
<a name="aws-properties-iot-topicrule-dynamodbv2action"></a>

Describes an action to write to a DynamoDB table.

This DynamoDB action writes each attribute in the message payload into it's own column in the DynamoDB table.

## Syntax
<a name="aws-properties-iot-topicrule-dynamodbv2action-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-dynamodbv2action-syntax.json"></a>

```
{
  "[PutItem](#cfn-iot-topicrule-dynamodbv2action-putitem)" : PutItemInput,
  "[RoleArn](#cfn-iot-topicrule-dynamodbv2action-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-dynamodbv2action-syntax.yaml"></a>

```
  [PutItem](#cfn-iot-topicrule-dynamodbv2action-putitem): 
    PutItemInput
  [RoleArn](#cfn-iot-topicrule-dynamodbv2action-rolearn): String
```

## Properties
<a name="aws-properties-iot-topicrule-dynamodbv2action-properties"></a>

`PutItem`  <a name="cfn-iot-topicrule-dynamodbv2action-putitem"></a>
Specifies the DynamoDB table to which the message data will be written. For example:  
 `{ "dynamoDBv2": { "roleArn": "aws:iam:12341251:my-role" "putItem": { "tableName": "my-table" } } }`   
Each attribute in the message payload will be written to a separate column in the DynamoDB database.  
*Required*: No  
*Type*: [PutItemInput](aws-properties-iot-topicrule-putiteminput.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-dynamodbv2action-rolearn"></a>
The ARN of the IAM role that grants access to the DynamoDB table.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

## See also
<a name="aws-properties-iot-topicrule-dynamodbv2action--seealso"></a>
+ [AWS SDK for C\$1\$1](https://sdk.amazonaws.com/cpp/api/LATEST/class_aws_1_1_io_t_1_1_model_1_1_dynamo_d_bv2_action.html).
+ [AWS SDK for Go](https://docs.aws.amazon.com/sdk-for-go/api/service/iot/#DynamoDBv2Action).
+ [AWS SDK for Java](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/iot/model/DynamoDBv2Action.html).
+ [AWS SDK for Ruby V2](https://docs.aws.amazon.com/sdkforruby/api/Aws/IoT/Types/DynamoDBv2Action.html).



# AWS::IoT::TopicRule ElasticsearchAction
<a name="aws-properties-iot-topicrule-elasticsearchaction"></a>

Describes an action that writes data to an Amazon OpenSearch Service domain.

**Note**  
The `Elasticsearch` action can only be used by existing rule actions. To create a new rule action or to update an existing rule action, use the `OpenSearch` rule action instead. For more information, see [OpenSearchAction](https://docs.aws.amazon.com//iot/latest/apireference/API_OpenSearchAction.html).

## Syntax
<a name="aws-properties-iot-topicrule-elasticsearchaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-elasticsearchaction-syntax.json"></a>

```
{
  "[Endpoint](#cfn-iot-topicrule-elasticsearchaction-endpoint)" : String,
  "[Id](#cfn-iot-topicrule-elasticsearchaction-id)" : String,
  "[Index](#cfn-iot-topicrule-elasticsearchaction-index)" : String,
  "[RoleArn](#cfn-iot-topicrule-elasticsearchaction-rolearn)" : String,
  "[Type](#cfn-iot-topicrule-elasticsearchaction-type)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-elasticsearchaction-syntax.yaml"></a>

```
  [Endpoint](#cfn-iot-topicrule-elasticsearchaction-endpoint): String
  [Id](#cfn-iot-topicrule-elasticsearchaction-id): String
  [Index](#cfn-iot-topicrule-elasticsearchaction-index): String
  [RoleArn](#cfn-iot-topicrule-elasticsearchaction-rolearn): String
  [Type](#cfn-iot-topicrule-elasticsearchaction-type): String
```

## Properties
<a name="aws-properties-iot-topicrule-elasticsearchaction-properties"></a>

`Endpoint`  <a name="cfn-iot-topicrule-elasticsearchaction-endpoint"></a>
The endpoint of your OpenSearch domain.  
*Required*: Yes  
*Type*: String  
*Pattern*: `https?://.*`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Id`  <a name="cfn-iot-topicrule-elasticsearchaction-id"></a>
The unique identifier for the document you are storing.  
*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)

`Index`  <a name="cfn-iot-topicrule-elasticsearchaction-index"></a>
The index where you want to store your data.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-elasticsearchaction-rolearn"></a>
The IAM role ARN that has access to OpenSearch.  
*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)

`Type`  <a name="cfn-iot-topicrule-elasticsearchaction-type"></a>
The type of document you are storing.  
*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::IoT::TopicRule FirehoseAction
<a name="aws-properties-iot-topicrule-firehoseaction"></a>

Describes an action that writes data to an Amazon Kinesis Firehose stream.

## Syntax
<a name="aws-properties-iot-topicrule-firehoseaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-firehoseaction-syntax.json"></a>

```
{
  "[BatchMode](#cfn-iot-topicrule-firehoseaction-batchmode)" : Boolean,
  "[DeliveryStreamName](#cfn-iot-topicrule-firehoseaction-deliverystreamname)" : String,
  "[RoleArn](#cfn-iot-topicrule-firehoseaction-rolearn)" : String,
  "[Separator](#cfn-iot-topicrule-firehoseaction-separator)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-firehoseaction-syntax.yaml"></a>

```
  [BatchMode](#cfn-iot-topicrule-firehoseaction-batchmode): Boolean
  [DeliveryStreamName](#cfn-iot-topicrule-firehoseaction-deliverystreamname): String
  [RoleArn](#cfn-iot-topicrule-firehoseaction-rolearn): String
  [Separator](#cfn-iot-topicrule-firehoseaction-separator): String
```

## Properties
<a name="aws-properties-iot-topicrule-firehoseaction-properties"></a>

`BatchMode`  <a name="cfn-iot-topicrule-firehoseaction-batchmode"></a>
Whether to deliver the Kinesis Data Firehose stream as a batch by using [https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html). The default value is `false`.  
When `batchMode` is `true` and the rule's SQL statement evaluates to an Array, each Array element forms one record in the [https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html) request. The resulting array can't have more than 500 records.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DeliveryStreamName`  <a name="cfn-iot-topicrule-firehoseaction-deliverystreamname"></a>
The delivery stream name.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-firehoseaction-rolearn"></a>
The IAM role that grants access to the Amazon Kinesis Firehose stream.  
*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)

`Separator`  <a name="cfn-iot-topicrule-firehoseaction-separator"></a>
A character separator that will be used to separate records written to the Firehose stream. Valid values are: '\$1n' (newline), '\$1t' (tab), '\$1r\$1n' (Windows newline), ',' (comma).  
*Required*: No  
*Type*: String  
*Pattern*: `([\n\t])|(\r\n)|(,)`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule HttpAction
<a name="aws-properties-iot-topicrule-httpaction"></a>

Send data to an HTTPS endpoint.

## Syntax
<a name="aws-properties-iot-topicrule-httpaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-httpaction-syntax.json"></a>

```
{
  "[Auth](#cfn-iot-topicrule-httpaction-auth)" : HttpAuthorization,
  "[BatchConfig](#cfn-iot-topicrule-httpaction-batchconfig)" : BatchConfig,
  "[ConfirmationUrl](#cfn-iot-topicrule-httpaction-confirmationurl)" : String,
  "[EnableBatching](#cfn-iot-topicrule-httpaction-enablebatching)" : Boolean,
  "[Headers](#cfn-iot-topicrule-httpaction-headers)" : [ HttpActionHeader, ... ],
  "[Url](#cfn-iot-topicrule-httpaction-url)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-httpaction-syntax.yaml"></a>

```
  [Auth](#cfn-iot-topicrule-httpaction-auth): 
    HttpAuthorization
  [BatchConfig](#cfn-iot-topicrule-httpaction-batchconfig): 
    BatchConfig
  [ConfirmationUrl](#cfn-iot-topicrule-httpaction-confirmationurl): String
  [EnableBatching](#cfn-iot-topicrule-httpaction-enablebatching): Boolean
  [Headers](#cfn-iot-topicrule-httpaction-headers): 
    - HttpActionHeader
  [Url](#cfn-iot-topicrule-httpaction-url): String
```

## Properties
<a name="aws-properties-iot-topicrule-httpaction-properties"></a>

`Auth`  <a name="cfn-iot-topicrule-httpaction-auth"></a>
The authentication method to use when sending data to an HTTPS endpoint.  
*Required*: No  
*Type*: [HttpAuthorization](aws-properties-iot-topicrule-httpauthorization.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`BatchConfig`  <a name="cfn-iot-topicrule-httpaction-batchconfig"></a>
Property description not available.  
*Required*: No  
*Type*: [BatchConfig](aws-properties-iot-topicrule-batchconfig.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ConfirmationUrl`  <a name="cfn-iot-topicrule-httpaction-confirmationurl"></a>
The URL to which AWS IoT sends a confirmation message. The value of the confirmation URL must be a prefix of the endpoint URL. If you do not specify a confirmation URL AWS IoT uses the endpoint URL as the confirmation URL. If you use substitution templates in the confirmationUrl, you must create and enable topic rule destinations that match each possible value of the substitution template before traffic is allowed to your endpoint URL.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`EnableBatching`  <a name="cfn-iot-topicrule-httpaction-enablebatching"></a>
Property description not available.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Headers`  <a name="cfn-iot-topicrule-httpaction-headers"></a>
The HTTP headers to send with the message data.  
*Required*: No  
*Type*: Array of [HttpActionHeader](aws-properties-iot-topicrule-httpactionheader.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Url`  <a name="cfn-iot-topicrule-httpaction-url"></a>
The endpoint URL. If substitution templates are used in the URL, you must also specify a `confirmationUrl`. If this is a new destination, a new `TopicRuleDestination` is created if possible.  
*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::IoT::TopicRule HttpActionHeader
<a name="aws-properties-iot-topicrule-httpactionheader"></a>

The HTTP action header.

## Syntax
<a name="aws-properties-iot-topicrule-httpactionheader-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-httpactionheader-syntax.json"></a>

```
{
  "[Key](#cfn-iot-topicrule-httpactionheader-key)" : String,
  "[Value](#cfn-iot-topicrule-httpactionheader-value)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-httpactionheader-syntax.yaml"></a>

```
  [Key](#cfn-iot-topicrule-httpactionheader-key): String
  [Value](#cfn-iot-topicrule-httpactionheader-value): String
```

## Properties
<a name="aws-properties-iot-topicrule-httpactionheader-properties"></a>

`Key`  <a name="cfn-iot-topicrule-httpactionheader-key"></a>
The HTTP header key.  
*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)

`Value`  <a name="cfn-iot-topicrule-httpactionheader-value"></a>
The HTTP header value. Substitution templates are supported.  
*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::IoT::TopicRule HttpAuthorization
<a name="aws-properties-iot-topicrule-httpauthorization"></a>

The authorization method used to send messages.

## Syntax
<a name="aws-properties-iot-topicrule-httpauthorization-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-httpauthorization-syntax.json"></a>

```
{
  "[Sigv4](#cfn-iot-topicrule-httpauthorization-sigv4)" : SigV4Authorization
}
```

### YAML
<a name="aws-properties-iot-topicrule-httpauthorization-syntax.yaml"></a>

```
  [Sigv4](#cfn-iot-topicrule-httpauthorization-sigv4): 
    SigV4Authorization
```

## Properties
<a name="aws-properties-iot-topicrule-httpauthorization-properties"></a>

`Sigv4`  <a name="cfn-iot-topicrule-httpauthorization-sigv4"></a>
Use Sig V4 authorization. For more information, see [Signature Version 4 Signing Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).  
*Required*: No  
*Type*: [SigV4Authorization](aws-properties-iot-topicrule-sigv4authorization.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule IotAnalyticsAction
<a name="aws-properties-iot-topicrule-iotanalyticsaction"></a>

Sends message data to an AWS IoT Analytics channel.

## Syntax
<a name="aws-properties-iot-topicrule-iotanalyticsaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-iotanalyticsaction-syntax.json"></a>

```
{
  "[BatchMode](#cfn-iot-topicrule-iotanalyticsaction-batchmode)" : Boolean,
  "[ChannelName](#cfn-iot-topicrule-iotanalyticsaction-channelname)" : String,
  "[RoleArn](#cfn-iot-topicrule-iotanalyticsaction-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-iotanalyticsaction-syntax.yaml"></a>

```
  [BatchMode](#cfn-iot-topicrule-iotanalyticsaction-batchmode): Boolean
  [ChannelName](#cfn-iot-topicrule-iotanalyticsaction-channelname): String
  [RoleArn](#cfn-iot-topicrule-iotanalyticsaction-rolearn): String
```

## Properties
<a name="aws-properties-iot-topicrule-iotanalyticsaction-properties"></a>

`BatchMode`  <a name="cfn-iot-topicrule-iotanalyticsaction-batchmode"></a>
Whether to process the action as a batch. The default value is `false`.  
When `batchMode` is `true` and the rule SQL statement evaluates to an Array, each Array element is delivered as a separate message when passed by [https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_BatchPutMessage.html](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_BatchPutMessage.html) The resulting array can't have more than 100 messages.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ChannelName`  <a name="cfn-iot-topicrule-iotanalyticsaction-channelname"></a>
The name of the IoT Analytics channel to which message data will be sent.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-iotanalyticsaction-rolearn"></a>
The ARN of the role which has a policy that grants IoT Analytics permission to send message data via IoT Analytics (iotanalytics:BatchPutMessage).  
*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)

## See also
<a name="aws-properties-iot-topicrule-iotanalyticsaction--seealso"></a>
+ [IotAnalyticsAction](https://docs.aws.amazon.com/iot/latest/apireference/API_IotAnalyticsAction.html) in the *AWS IoT API Reference*.



# AWS::IoT::TopicRule IotEventsAction
<a name="aws-properties-iot-topicrule-ioteventsaction"></a>

Sends an input to an AWS IoT Events detector.

## Syntax
<a name="aws-properties-iot-topicrule-ioteventsaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-ioteventsaction-syntax.json"></a>

```
{
  "[BatchMode](#cfn-iot-topicrule-ioteventsaction-batchmode)" : Boolean,
  "[InputName](#cfn-iot-topicrule-ioteventsaction-inputname)" : String,
  "[MessageId](#cfn-iot-topicrule-ioteventsaction-messageid)" : String,
  "[RoleArn](#cfn-iot-topicrule-ioteventsaction-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-ioteventsaction-syntax.yaml"></a>

```
  [BatchMode](#cfn-iot-topicrule-ioteventsaction-batchmode): Boolean
  [InputName](#cfn-iot-topicrule-ioteventsaction-inputname): String
  [MessageId](#cfn-iot-topicrule-ioteventsaction-messageid): String
  [RoleArn](#cfn-iot-topicrule-ioteventsaction-rolearn): String
```

## Properties
<a name="aws-properties-iot-topicrule-ioteventsaction-properties"></a>

`BatchMode`  <a name="cfn-iot-topicrule-ioteventsaction-batchmode"></a>
Whether to process the event actions as a batch. The default value is `false`.  
When `batchMode` is `true`, you can't specify a `messageId`.   
When `batchMode` is `true` and the rule SQL statement evaluates to an Array, each Array element is treated as a separate message when Events by calling [https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.html](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.html). The resulting array can't have more than 10 messages.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`InputName`  <a name="cfn-iot-topicrule-ioteventsaction-inputname"></a>
The name of the AWS IoT Events input.  
*Required*: Yes  
*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)

`MessageId`  <a name="cfn-iot-topicrule-ioteventsaction-messageid"></a>
The ID of the message. The default `messageId` is a new UUID value.  
When `batchMode` is `true`, you can't specify a `messageId`--a new UUID value will be assigned.  
Assign a value to this property to ensure that only one input (message) with a given `messageId` will be processed by an AWS IoT Events detector.  
*Required*: No  
*Type*: String  
*Maximum*: `128`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-ioteventsaction-rolearn"></a>
The ARN of the role that grants AWS IoT permission to send an input to an AWS IoT Events detector. ("Action":"iotevents:BatchPutMessage").  
*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::IoT::TopicRule IotSiteWiseAction
<a name="aws-properties-iot-topicrule-iotsitewiseaction"></a>

Describes an action to send data from an MQTT message that triggered the rule to AWS IoT SiteWise asset properties.

## Syntax
<a name="aws-properties-iot-topicrule-iotsitewiseaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-iotsitewiseaction-syntax.json"></a>

```
{
  "[PutAssetPropertyValueEntries](#cfn-iot-topicrule-iotsitewiseaction-putassetpropertyvalueentries)" : [ PutAssetPropertyValueEntry, ... ],
  "[RoleArn](#cfn-iot-topicrule-iotsitewiseaction-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-iotsitewiseaction-syntax.yaml"></a>

```
  [PutAssetPropertyValueEntries](#cfn-iot-topicrule-iotsitewiseaction-putassetpropertyvalueentries): 
    - PutAssetPropertyValueEntry
  [RoleArn](#cfn-iot-topicrule-iotsitewiseaction-rolearn): String
```

## Properties
<a name="aws-properties-iot-topicrule-iotsitewiseaction-properties"></a>

`PutAssetPropertyValueEntries`  <a name="cfn-iot-topicrule-iotsitewiseaction-putassetpropertyvalueentries"></a>
A list of asset property value entries.  
*Required*: Yes  
*Type*: Array of [PutAssetPropertyValueEntry](aws-properties-iot-topicrule-putassetpropertyvalueentry.md)  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-iotsitewiseaction-rolearn"></a>
The ARN of the role that grants AWS IoT permission to send an asset property value to AWS IoT SiteWise. (`"Action": "iotsitewise:BatchPutAssetPropertyValue"`). The trust policy can restrict access to specific asset hierarchy paths.  
*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::IoT::TopicRule KafkaAction
<a name="aws-properties-iot-topicrule-kafkaaction"></a>

Send messages to an Amazon Managed Streaming for Apache Kafka (Amazon MSK) or self-managed Apache Kafka cluster.

## Syntax
<a name="aws-properties-iot-topicrule-kafkaaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-kafkaaction-syntax.json"></a>

```
{
  "[ClientProperties](#cfn-iot-topicrule-kafkaaction-clientproperties)" : {Key: Value, ...},
  "[DestinationArn](#cfn-iot-topicrule-kafkaaction-destinationarn)" : String,
  "[Headers](#cfn-iot-topicrule-kafkaaction-headers)" : [ KafkaActionHeader, ... ],
  "[Key](#cfn-iot-topicrule-kafkaaction-key)" : String,
  "[Partition](#cfn-iot-topicrule-kafkaaction-partition)" : String,
  "[Topic](#cfn-iot-topicrule-kafkaaction-topic)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-kafkaaction-syntax.yaml"></a>

```
  [ClientProperties](#cfn-iot-topicrule-kafkaaction-clientproperties): 
    Key: Value
  [DestinationArn](#cfn-iot-topicrule-kafkaaction-destinationarn): String
  [Headers](#cfn-iot-topicrule-kafkaaction-headers): 
    - KafkaActionHeader
  [Key](#cfn-iot-topicrule-kafkaaction-key): String
  [Partition](#cfn-iot-topicrule-kafkaaction-partition): String
  [Topic](#cfn-iot-topicrule-kafkaaction-topic): String
```

## Properties
<a name="aws-properties-iot-topicrule-kafkaaction-properties"></a>

`ClientProperties`  <a name="cfn-iot-topicrule-kafkaaction-clientproperties"></a>
Properties of the Apache Kafka producer client.  
*Required*: Yes  
*Type*: Object of String  
*Pattern*: `.*`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`DestinationArn`  <a name="cfn-iot-topicrule-kafkaaction-destinationarn"></a>
The ARN of Kafka action's VPC `TopicRuleDestination`.  
*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)

`Headers`  <a name="cfn-iot-topicrule-kafkaaction-headers"></a>
The list of Kafka headers that you specify.  
*Required*: No  
*Type*: Array of [KafkaActionHeader](aws-properties-iot-topicrule-kafkaactionheader.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Key`  <a name="cfn-iot-topicrule-kafkaaction-key"></a>
The Kafka message key.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Partition`  <a name="cfn-iot-topicrule-kafkaaction-partition"></a>
The Kafka message partition.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Topic`  <a name="cfn-iot-topicrule-kafkaaction-topic"></a>
The Kafka topic for messages to be sent to the Kafka broker.  
*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::IoT::TopicRule KafkaActionHeader
<a name="aws-properties-iot-topicrule-kafkaactionheader"></a>

Specifies a Kafka header using key-value pairs when you create a Rule’s Kafka Action. You can use these headers to route data from IoT clients to downstream Kafka clusters without modifying your message payload.

## Syntax
<a name="aws-properties-iot-topicrule-kafkaactionheader-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-kafkaactionheader-syntax.json"></a>

```
{
  "[Key](#cfn-iot-topicrule-kafkaactionheader-key)" : String,
  "[Value](#cfn-iot-topicrule-kafkaactionheader-value)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-kafkaactionheader-syntax.yaml"></a>

```
  [Key](#cfn-iot-topicrule-kafkaactionheader-key): String
  [Value](#cfn-iot-topicrule-kafkaactionheader-value): String
```

## Properties
<a name="aws-properties-iot-topicrule-kafkaactionheader-properties"></a>

`Key`  <a name="cfn-iot-topicrule-kafkaactionheader-key"></a>
The key of the Kafka header.  
*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)

`Value`  <a name="cfn-iot-topicrule-kafkaactionheader-value"></a>
The value of the Kafka header.  
*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::IoT::TopicRule KinesisAction
<a name="aws-properties-iot-topicrule-kinesisaction"></a>

Describes an action to write data to an Amazon Kinesis stream.

## Syntax
<a name="aws-properties-iot-topicrule-kinesisaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-kinesisaction-syntax.json"></a>

```
{
  "[PartitionKey](#cfn-iot-topicrule-kinesisaction-partitionkey)" : String,
  "[RoleArn](#cfn-iot-topicrule-kinesisaction-rolearn)" : String,
  "[StreamName](#cfn-iot-topicrule-kinesisaction-streamname)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-kinesisaction-syntax.yaml"></a>

```
  [PartitionKey](#cfn-iot-topicrule-kinesisaction-partitionkey): String
  [RoleArn](#cfn-iot-topicrule-kinesisaction-rolearn): String
  [StreamName](#cfn-iot-topicrule-kinesisaction-streamname): String
```

## Properties
<a name="aws-properties-iot-topicrule-kinesisaction-properties"></a>

`PartitionKey`  <a name="cfn-iot-topicrule-kinesisaction-partitionkey"></a>
The partition key.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-kinesisaction-rolearn"></a>
The ARN of the IAM role that grants access to the Amazon Kinesis stream.  
*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)

`StreamName`  <a name="cfn-iot-topicrule-kinesisaction-streamname"></a>
The name of the Amazon Kinesis stream.  
*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::IoT::TopicRule LambdaAction
<a name="aws-properties-iot-topicrule-lambdaaction"></a>

Describes an action to invoke a Lambda function.

## Syntax
<a name="aws-properties-iot-topicrule-lambdaaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-lambdaaction-syntax.json"></a>

```
{
  "[FunctionArn](#cfn-iot-topicrule-lambdaaction-functionarn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-lambdaaction-syntax.yaml"></a>

```
  [FunctionArn](#cfn-iot-topicrule-lambdaaction-functionarn): String
```

## Properties
<a name="aws-properties-iot-topicrule-lambdaaction-properties"></a>

`FunctionArn`  <a name="cfn-iot-topicrule-lambdaaction-functionarn"></a>
The ARN of the Lambda function.  
*Required*: No  
*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::IoT::TopicRule LocationAction
<a name="aws-properties-iot-topicrule-locationaction"></a>

Describes an action to send device location updates from an MQTT message to an Amazon Location tracker resource.

## Syntax
<a name="aws-properties-iot-topicrule-locationaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-locationaction-syntax.json"></a>

```
{
  "[DeviceId](#cfn-iot-topicrule-locationaction-deviceid)" : String,
  "[Latitude](#cfn-iot-topicrule-locationaction-latitude)" : String,
  "[Longitude](#cfn-iot-topicrule-locationaction-longitude)" : String,
  "[RoleArn](#cfn-iot-topicrule-locationaction-rolearn)" : String,
  "[Timestamp](#cfn-iot-topicrule-locationaction-timestamp)" : Timestamp,
  "[TrackerName](#cfn-iot-topicrule-locationaction-trackername)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-locationaction-syntax.yaml"></a>

```
  [DeviceId](#cfn-iot-topicrule-locationaction-deviceid): String
  [Latitude](#cfn-iot-topicrule-locationaction-latitude): String
  [Longitude](#cfn-iot-topicrule-locationaction-longitude): String
  [RoleArn](#cfn-iot-topicrule-locationaction-rolearn): String
  [Timestamp](#cfn-iot-topicrule-locationaction-timestamp): 
    Timestamp
  [TrackerName](#cfn-iot-topicrule-locationaction-trackername): String
```

## Properties
<a name="aws-properties-iot-topicrule-locationaction-properties"></a>

`DeviceId`  <a name="cfn-iot-topicrule-locationaction-deviceid"></a>
The unique ID of the device providing the location data.  
*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)

`Latitude`  <a name="cfn-iot-topicrule-locationaction-latitude"></a>
A string that evaluates to a double value that represents the latitude of the device's location.  
*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)

`Longitude`  <a name="cfn-iot-topicrule-locationaction-longitude"></a>
A string that evaluates to a double value that represents the longitude of the device's location.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-locationaction-rolearn"></a>
The IAM role that grants permission to write to the Amazon Location resource.  
*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)

`Timestamp`  <a name="cfn-iot-topicrule-locationaction-timestamp"></a>
The time that the location data was sampled. The default value is the time the MQTT message was processed.  
*Required*: No  
*Type*: [Timestamp](aws-properties-iot-topicrule-timestamp.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`TrackerName`  <a name="cfn-iot-topicrule-locationaction-trackername"></a>
The name of the tracker resource in Amazon Location in which the location is updated.  
*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::IoT::TopicRule OpenSearchAction
<a name="aws-properties-iot-topicrule-opensearchaction"></a>

Describes an action that writes data to an Amazon OpenSearch Service domain.

## Syntax
<a name="aws-properties-iot-topicrule-opensearchaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-opensearchaction-syntax.json"></a>

```
{
  "[Endpoint](#cfn-iot-topicrule-opensearchaction-endpoint)" : String,
  "[Id](#cfn-iot-topicrule-opensearchaction-id)" : String,
  "[Index](#cfn-iot-topicrule-opensearchaction-index)" : String,
  "[RoleArn](#cfn-iot-topicrule-opensearchaction-rolearn)" : String,
  "[Type](#cfn-iot-topicrule-opensearchaction-type)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-opensearchaction-syntax.yaml"></a>

```
  [Endpoint](#cfn-iot-topicrule-opensearchaction-endpoint): String
  [Id](#cfn-iot-topicrule-opensearchaction-id): String
  [Index](#cfn-iot-topicrule-opensearchaction-index): String
  [RoleArn](#cfn-iot-topicrule-opensearchaction-rolearn): String
  [Type](#cfn-iot-topicrule-opensearchaction-type): String
```

## Properties
<a name="aws-properties-iot-topicrule-opensearchaction-properties"></a>

`Endpoint`  <a name="cfn-iot-topicrule-opensearchaction-endpoint"></a>
The endpoint of your OpenSearch domain.  
*Required*: Yes  
*Type*: String  
*Pattern*: `https?://.*`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Id`  <a name="cfn-iot-topicrule-opensearchaction-id"></a>
The unique identifier for the document you are storing.  
*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)

`Index`  <a name="cfn-iot-topicrule-opensearchaction-index"></a>
The OpenSearch index where you want to store your data.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-opensearchaction-rolearn"></a>
The IAM role ARN that has access to OpenSearch.  
*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)

`Type`  <a name="cfn-iot-topicrule-opensearchaction-type"></a>
The type of document you are storing.  
*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::IoT::TopicRule PutAssetPropertyValueEntry
<a name="aws-properties-iot-topicrule-putassetpropertyvalueentry"></a>

An asset property value entry containing the following information.

## Syntax
<a name="aws-properties-iot-topicrule-putassetpropertyvalueentry-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-putassetpropertyvalueentry-syntax.json"></a>

```
{
  "[AssetId](#cfn-iot-topicrule-putassetpropertyvalueentry-assetid)" : String,
  "[EntryId](#cfn-iot-topicrule-putassetpropertyvalueentry-entryid)" : String,
  "[PropertyAlias](#cfn-iot-topicrule-putassetpropertyvalueentry-propertyalias)" : String,
  "[PropertyId](#cfn-iot-topicrule-putassetpropertyvalueentry-propertyid)" : String,
  "[PropertyValues](#cfn-iot-topicrule-putassetpropertyvalueentry-propertyvalues)" : [ AssetPropertyValue, ... ]
}
```

### YAML
<a name="aws-properties-iot-topicrule-putassetpropertyvalueentry-syntax.yaml"></a>

```
  [AssetId](#cfn-iot-topicrule-putassetpropertyvalueentry-assetid): String
  [EntryId](#cfn-iot-topicrule-putassetpropertyvalueentry-entryid): String
  [PropertyAlias](#cfn-iot-topicrule-putassetpropertyvalueentry-propertyalias): String
  [PropertyId](#cfn-iot-topicrule-putassetpropertyvalueentry-propertyid): String
  [PropertyValues](#cfn-iot-topicrule-putassetpropertyvalueentry-propertyvalues): 
    - AssetPropertyValue
```

## Properties
<a name="aws-properties-iot-topicrule-putassetpropertyvalueentry-properties"></a>

`AssetId`  <a name="cfn-iot-topicrule-putassetpropertyvalueentry-assetid"></a>
The ID of the AWS IoT SiteWise asset. You must specify either a `propertyAlias` or both an `aliasId` and a `propertyId`. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`EntryId`  <a name="cfn-iot-topicrule-putassetpropertyvalueentry-entryid"></a>
Optional. A unique identifier for this entry that you can define to better track which message caused an error in case of failure. Accepts substitution templates. Defaults to a new UUID.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PropertyAlias`  <a name="cfn-iot-topicrule-putassetpropertyvalueentry-propertyalias"></a>
The name of the property alias associated with your asset property. You must specify either a `propertyAlias` or both an `aliasId` and a `propertyId`. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PropertyId`  <a name="cfn-iot-topicrule-putassetpropertyvalueentry-propertyid"></a>
The ID of the asset's property. You must specify either a `propertyAlias` or both an `aliasId` and a `propertyId`. Accepts substitution templates.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`PropertyValues`  <a name="cfn-iot-topicrule-putassetpropertyvalueentry-propertyvalues"></a>
A list of property values to insert that each contain timestamp, quality, and value (TQV) information.  
*Required*: Yes  
*Type*: Array of [AssetPropertyValue](aws-properties-iot-topicrule-assetpropertyvalue.md)  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule PutItemInput
<a name="aws-properties-iot-topicrule-putiteminput"></a>

The input for the DynamoActionVS action that specifies the DynamoDB table to which the message data will be written.

## Syntax
<a name="aws-properties-iot-topicrule-putiteminput-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-putiteminput-syntax.json"></a>

```
{
  "[TableName](#cfn-iot-topicrule-putiteminput-tablename)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-putiteminput-syntax.yaml"></a>

```
  [TableName](#cfn-iot-topicrule-putiteminput-tablename): String
```

## Properties
<a name="aws-properties-iot-topicrule-putiteminput-properties"></a>

`TableName`  <a name="cfn-iot-topicrule-putiteminput-tablename"></a>
The table where the message data will be written.  
*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::IoT::TopicRule RepublishAction
<a name="aws-properties-iot-topicrule-republishaction"></a>

Describes an action to republish to another topic.

## Syntax
<a name="aws-properties-iot-topicrule-republishaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-republishaction-syntax.json"></a>

```
{
  "[Headers](#cfn-iot-topicrule-republishaction-headers)" : RepublishActionHeaders,
  "[Qos](#cfn-iot-topicrule-republishaction-qos)" : Integer,
  "[RoleArn](#cfn-iot-topicrule-republishaction-rolearn)" : String,
  "[Topic](#cfn-iot-topicrule-republishaction-topic)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-republishaction-syntax.yaml"></a>

```
  [Headers](#cfn-iot-topicrule-republishaction-headers): 
    RepublishActionHeaders
  [Qos](#cfn-iot-topicrule-republishaction-qos): Integer
  [RoleArn](#cfn-iot-topicrule-republishaction-rolearn): String
  [Topic](#cfn-iot-topicrule-republishaction-topic): String
```

## Properties
<a name="aws-properties-iot-topicrule-republishaction-properties"></a>

`Headers`  <a name="cfn-iot-topicrule-republishaction-headers"></a>
MQTT Version 5.0 headers information. For more information, see [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) in the IoT Core Developer Guide.  
*Required*: No  
*Type*: [RepublishActionHeaders](aws-properties-iot-topicrule-republishactionheaders.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Qos`  <a name="cfn-iot-topicrule-republishaction-qos"></a>
The Quality of Service (QoS) level to use when republishing messages. The default value is 0.  
*Required*: No  
*Type*: Integer  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-republishaction-rolearn"></a>
The ARN of the IAM role that grants access.  
*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)

`Topic`  <a name="cfn-iot-topicrule-republishaction-topic"></a>
The name of the MQTT topic.  
*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::IoT::TopicRule RepublishActionHeaders
<a name="aws-properties-iot-topicrule-republishactionheaders"></a>

Specifies MQTT Version 5.0 headers information. For more information, see [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) in the IoT Core Developer Guide.

## Syntax
<a name="aws-properties-iot-topicrule-republishactionheaders-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-republishactionheaders-syntax.json"></a>

```
{
  "[ContentType](#cfn-iot-topicrule-republishactionheaders-contenttype)" : String,
  "[CorrelationData](#cfn-iot-topicrule-republishactionheaders-correlationdata)" : String,
  "[MessageExpiry](#cfn-iot-topicrule-republishactionheaders-messageexpiry)" : String,
  "[PayloadFormatIndicator](#cfn-iot-topicrule-republishactionheaders-payloadformatindicator)" : String,
  "[ResponseTopic](#cfn-iot-topicrule-republishactionheaders-responsetopic)" : String,
  "[UserProperties](#cfn-iot-topicrule-republishactionheaders-userproperties)" : [ UserProperty, ... ]
}
```

### YAML
<a name="aws-properties-iot-topicrule-republishactionheaders-syntax.yaml"></a>

```
  [ContentType](#cfn-iot-topicrule-republishactionheaders-contenttype): String
  [CorrelationData](#cfn-iot-topicrule-republishactionheaders-correlationdata): String
  [MessageExpiry](#cfn-iot-topicrule-republishactionheaders-messageexpiry): String
  [PayloadFormatIndicator](#cfn-iot-topicrule-republishactionheaders-payloadformatindicator): String
  [ResponseTopic](#cfn-iot-topicrule-republishactionheaders-responsetopic): String
  [UserProperties](#cfn-iot-topicrule-republishactionheaders-userproperties): 
    - UserProperty
```

## Properties
<a name="aws-properties-iot-topicrule-republishactionheaders-properties"></a>

`ContentType`  <a name="cfn-iot-topicrule-republishactionheaders-contenttype"></a>
A UTF-8 encoded string that describes the content of the publishing message.  
For more information, see [ Content Type](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901118) in the MQTT Version 5.0 specification.  
Supports [substitution templates](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html).  
*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)

`CorrelationData`  <a name="cfn-iot-topicrule-republishactionheaders-correlationdata"></a>
The base64-encoded binary data used by the sender of the request message to identify which request the response message is for.  
For more information, see [ Correlation Data](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901115) in the MQTT Version 5.0 specification.  
Supports [substitution templates](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html).  
 This binary data must be base64-encoded. 
*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)

`MessageExpiry`  <a name="cfn-iot-topicrule-republishactionheaders-messageexpiry"></a>
A user-defined integer value that represents the message expiry interval at the broker. If the messages haven't been sent to the subscribers within that interval, the message expires and is removed. The value of `messageExpiry` represents the number of seconds before it expires. For more information about the limits of `messageExpiry`, see [Message broker and protocol limits and quotas](https://docs.aws.amazon.com//general/latest/gr/iot-core.html#limits_iot) in the IoT Core Reference Guide.  
Supports [substitution templates](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html).  
*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)

`PayloadFormatIndicator`  <a name="cfn-iot-topicrule-republishactionheaders-payloadformatindicator"></a>
An `Enum` string value that indicates whether the payload is formatted as UTF-8.  
Valid values are `UNSPECIFIED_BYTES` and `UTF8_DATA`.  
For more information, see [ Payload Format Indicator](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111) from the MQTT Version 5.0 specification.  
Supports [substitution templates](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html).  
*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)

`ResponseTopic`  <a name="cfn-iot-topicrule-republishactionheaders-responsetopic"></a>
A UTF-8 encoded string that's used as the topic name for a response message. The response topic is used to describe the topic to which the receiver should publish as part of the request-response flow. The topic must not contain wildcard characters.  
For more information, see [ Response Topic](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901114) in the MQTT Version 5.0 specification.  
Supports [substitution templates](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html).  
*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)

`UserProperties`  <a name="cfn-iot-topicrule-republishactionheaders-userproperties"></a>
An array of key-value pairs that you define in the MQTT5 header.  
*Required*: No  
*Type*: Array of [UserProperty](aws-properties-iot-topicrule-userproperty.md)  
*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)

# AWS::IoT::TopicRule S3Action
<a name="aws-properties-iot-topicrule-s3action"></a>

Describes an action to write data to an Amazon S3 bucket.

## Syntax
<a name="aws-properties-iot-topicrule-s3action-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-s3action-syntax.json"></a>

```
{
  "[BucketName](#cfn-iot-topicrule-s3action-bucketname)" : String,
  "[CannedAcl](#cfn-iot-topicrule-s3action-cannedacl)" : String,
  "[Key](#cfn-iot-topicrule-s3action-key)" : String,
  "[RoleArn](#cfn-iot-topicrule-s3action-rolearn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-s3action-syntax.yaml"></a>

```
  [BucketName](#cfn-iot-topicrule-s3action-bucketname): String
  [CannedAcl](#cfn-iot-topicrule-s3action-cannedacl): String
  [Key](#cfn-iot-topicrule-s3action-key): String
  [RoleArn](#cfn-iot-topicrule-s3action-rolearn): String
```

## Properties
<a name="aws-properties-iot-topicrule-s3action-properties"></a>

`BucketName`  <a name="cfn-iot-topicrule-s3action-bucketname"></a>
The Amazon S3 bucket.  
*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)

`CannedAcl`  <a name="cfn-iot-topicrule-s3action-cannedacl"></a>
The Amazon S3 canned ACL that controls access to the object identified by the object key. For more information, see [S3 canned ACLs](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl).  
*Required*: No  
*Type*: String  
*Allowed values*: `private | public-read | public-read-write | aws-exec-read | authenticated-read | bucket-owner-read | bucket-owner-full-control | log-delivery-write`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Key`  <a name="cfn-iot-topicrule-s3action-key"></a>
The object key. For more information, see [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html).  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-s3action-rolearn"></a>
The ARN of the IAM role that grants access.  
*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::IoT::TopicRule SigV4Authorization
<a name="aws-properties-iot-topicrule-sigv4authorization"></a>

For more information, see [Signature Version 4 signing process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).

## Syntax
<a name="aws-properties-iot-topicrule-sigv4authorization-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-sigv4authorization-syntax.json"></a>

```
{
  "[RoleArn](#cfn-iot-topicrule-sigv4authorization-rolearn)" : String,
  "[ServiceName](#cfn-iot-topicrule-sigv4authorization-servicename)" : String,
  "[SigningRegion](#cfn-iot-topicrule-sigv4authorization-signingregion)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-sigv4authorization-syntax.yaml"></a>

```
  [RoleArn](#cfn-iot-topicrule-sigv4authorization-rolearn): String
  [ServiceName](#cfn-iot-topicrule-sigv4authorization-servicename): String
  [SigningRegion](#cfn-iot-topicrule-sigv4authorization-signingregion): String
```

## Properties
<a name="aws-properties-iot-topicrule-sigv4authorization-properties"></a>

`RoleArn`  <a name="cfn-iot-topicrule-sigv4authorization-rolearn"></a>
The ARN of the signing role.  
*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)

`ServiceName`  <a name="cfn-iot-topicrule-sigv4authorization-servicename"></a>
The service name to use while signing with Sig V4.  
*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)

`SigningRegion`  <a name="cfn-iot-topicrule-sigv4authorization-signingregion"></a>
The signing region.  
*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::IoT::TopicRule SnsAction
<a name="aws-properties-iot-topicrule-snsaction"></a>

Describes an action to publish to an Amazon SNS topic.

## Syntax
<a name="aws-properties-iot-topicrule-snsaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-snsaction-syntax.json"></a>

```
{
  "[MessageFormat](#cfn-iot-topicrule-snsaction-messageformat)" : String,
  "[RoleArn](#cfn-iot-topicrule-snsaction-rolearn)" : String,
  "[TargetArn](#cfn-iot-topicrule-snsaction-targetarn)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-snsaction-syntax.yaml"></a>

```
  [MessageFormat](#cfn-iot-topicrule-snsaction-messageformat): String
  [RoleArn](#cfn-iot-topicrule-snsaction-rolearn): String
  [TargetArn](#cfn-iot-topicrule-snsaction-targetarn): String
```

## Properties
<a name="aws-properties-iot-topicrule-snsaction-properties"></a>

`MessageFormat`  <a name="cfn-iot-topicrule-snsaction-messageformat"></a>
(Optional) The message format of the message to publish. Accepted values are "JSON" and "RAW". The default value of the attribute is "RAW". SNS uses this setting to determine if the payload should be parsed and relevant platform-specific bits of the payload should be extracted. For more information, see [Amazon SNS Message and JSON Formats](https://docs.aws.amazon.com/sns/latest/dg/json-formats.html) in the *Amazon Simple Notification Service Developer Guide*.  
*Required*: No  
*Type*: String  
*Allowed values*: `RAW | JSON`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-snsaction-rolearn"></a>
The ARN of the IAM role that grants access.  
*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)

`TargetArn`  <a name="cfn-iot-topicrule-snsaction-targetarn"></a>
The ARN of the SNS topic.  
*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::IoT::TopicRule SqsAction
<a name="aws-properties-iot-topicrule-sqsaction"></a>

Describes an action to publish data to an Amazon SQS queue.

## Syntax
<a name="aws-properties-iot-topicrule-sqsaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-sqsaction-syntax.json"></a>

```
{
  "[QueueUrl](#cfn-iot-topicrule-sqsaction-queueurl)" : String,
  "[RoleArn](#cfn-iot-topicrule-sqsaction-rolearn)" : String,
  "[UseBase64](#cfn-iot-topicrule-sqsaction-usebase64)" : Boolean
}
```

### YAML
<a name="aws-properties-iot-topicrule-sqsaction-syntax.yaml"></a>

```
  [QueueUrl](#cfn-iot-topicrule-sqsaction-queueurl): String
  [RoleArn](#cfn-iot-topicrule-sqsaction-rolearn): String
  [UseBase64](#cfn-iot-topicrule-sqsaction-usebase64): Boolean
```

## Properties
<a name="aws-properties-iot-topicrule-sqsaction-properties"></a>

`QueueUrl`  <a name="cfn-iot-topicrule-sqsaction-queueurl"></a>
The URL of the Amazon SQS queue.  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-sqsaction-rolearn"></a>
The ARN of the IAM role that grants access.  
*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)

`UseBase64`  <a name="cfn-iot-topicrule-sqsaction-usebase64"></a>
Specifies whether to use Base64 encoding.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule StepFunctionsAction
<a name="aws-properties-iot-topicrule-stepfunctionsaction"></a>

Starts execution of a Step Functions state machine.

## Syntax
<a name="aws-properties-iot-topicrule-stepfunctionsaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-stepfunctionsaction-syntax.json"></a>

```
{
  "[ExecutionNamePrefix](#cfn-iot-topicrule-stepfunctionsaction-executionnameprefix)" : String,
  "[RoleArn](#cfn-iot-topicrule-stepfunctionsaction-rolearn)" : String,
  "[StateMachineName](#cfn-iot-topicrule-stepfunctionsaction-statemachinename)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-stepfunctionsaction-syntax.yaml"></a>

```
  [ExecutionNamePrefix](#cfn-iot-topicrule-stepfunctionsaction-executionnameprefix): String
  [RoleArn](#cfn-iot-topicrule-stepfunctionsaction-rolearn): String
  [StateMachineName](#cfn-iot-topicrule-stepfunctionsaction-statemachinename): String
```

## Properties
<a name="aws-properties-iot-topicrule-stepfunctionsaction-properties"></a>

`ExecutionNamePrefix`  <a name="cfn-iot-topicrule-stepfunctionsaction-executionnameprefix"></a>
(Optional) A name will be given to the state machine execution consisting of this prefix followed by a UUID. Step Functions automatically creates a unique name for each state machine execution if one is not provided.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleArn`  <a name="cfn-iot-topicrule-stepfunctionsaction-rolearn"></a>
The ARN of the role that grants IoT permission to start execution of a state machine ("Action":"states:StartExecution").  
*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)

`StateMachineName`  <a name="cfn-iot-topicrule-stepfunctionsaction-statemachinename"></a>
The name of the Step Functions state machine whose execution will be started.  
*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)

## See also
<a name="aws-properties-iot-topicrule-stepfunctionsaction--seealso"></a>
+ [StepFunctionsAction](https://docs.aws.amazon.com/iot/latest/apireference/API_StepFunctionsAction.html) in the *AWS IoT API Reference*.



# AWS::IoT::TopicRule Tag
<a name="aws-properties-iot-topicrule-tag"></a>

A set of key/value pairs that are used to manage the resource.

## Syntax
<a name="aws-properties-iot-topicrule-tag-syntax"></a>

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

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

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

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

```
  [Key](#cfn-iot-topicrule-tag-key): String
  [Value](#cfn-iot-topicrule-tag-value): String
```

## Properties
<a name="aws-properties-iot-topicrule-tag-properties"></a>

`Key`  <a name="cfn-iot-topicrule-tag-key"></a>
The tag's key.  
*Required*: Yes  
*Type*: String  
*Pattern*: `^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$`  
*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-iot-topicrule-tag-value"></a>
The tag's value.  
*Required*: Yes  
*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)

# AWS::IoT::TopicRule Timestamp
<a name="aws-properties-iot-topicrule-timestamp"></a>

Describes how to interpret an application-defined timestamp value from an MQTT message payload and the precision of that value.

## Syntax
<a name="aws-properties-iot-topicrule-timestamp-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-timestamp-syntax.json"></a>

```
{
  "[Unit](#cfn-iot-topicrule-timestamp-unit)" : String,
  "[Value](#cfn-iot-topicrule-timestamp-value)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-timestamp-syntax.yaml"></a>

```
  [Unit](#cfn-iot-topicrule-timestamp-unit): String
  [Value](#cfn-iot-topicrule-timestamp-value): String
```

## Properties
<a name="aws-properties-iot-topicrule-timestamp-properties"></a>

`Unit`  <a name="cfn-iot-topicrule-timestamp-unit"></a>
The precision of the timestamp value that results from the expression described in `value`.  
*Required*: No  
*Type*: String  
*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-iot-topicrule-timestamp-value"></a>
An expression that returns a long epoch time value.  
*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::IoT::TopicRule TimestreamAction
<a name="aws-properties-iot-topicrule-timestreamaction"></a>

Describes an action that writes records into an Amazon Timestream table.

## Syntax
<a name="aws-properties-iot-topicrule-timestreamaction-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-timestreamaction-syntax.json"></a>

```
{
  "[DatabaseName](#cfn-iot-topicrule-timestreamaction-databasename)" : String,
  "[Dimensions](#cfn-iot-topicrule-timestreamaction-dimensions)" : [ TimestreamDimension, ... ],
  "[RoleArn](#cfn-iot-topicrule-timestreamaction-rolearn)" : String,
  "[TableName](#cfn-iot-topicrule-timestreamaction-tablename)" : String,
  "[Timestamp](#cfn-iot-topicrule-timestreamaction-timestamp)" : TimestreamTimestamp
}
```

### YAML
<a name="aws-properties-iot-topicrule-timestreamaction-syntax.yaml"></a>

```
  [DatabaseName](#cfn-iot-topicrule-timestreamaction-databasename): String
  [Dimensions](#cfn-iot-topicrule-timestreamaction-dimensions): 
    - TimestreamDimension
  [RoleArn](#cfn-iot-topicrule-timestreamaction-rolearn): String
  [TableName](#cfn-iot-topicrule-timestreamaction-tablename): String
  [Timestamp](#cfn-iot-topicrule-timestreamaction-timestamp): 
    TimestreamTimestamp
```

## Properties
<a name="aws-properties-iot-topicrule-timestreamaction-properties"></a>

`DatabaseName`  <a name="cfn-iot-topicrule-timestreamaction-databasename"></a>
The name of an Amazon Timestream database that has the table to write records into.  
*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)

`Dimensions`  <a name="cfn-iot-topicrule-timestreamaction-dimensions"></a>
Metadata attributes of the time series that are written in each measure record.  
*Required*: Yes  
*Type*: Array of [TimestreamDimension](aws-properties-iot-topicrule-timestreamdimension.md)  
*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)

`RoleArn`  <a name="cfn-iot-topicrule-timestreamaction-rolearn"></a>
The Amazon Resource Name (ARN) of the role that grants AWS IoT permission to write to the Timestream database table.  
*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)

`TableName`  <a name="cfn-iot-topicrule-timestreamaction-tablename"></a>
The table where the message data will be written.  
*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)

`Timestamp`  <a name="cfn-iot-topicrule-timestreamaction-timestamp"></a>
The value to use for the entry's timestamp. If blank, the time that the entry was processed is used.  
*Required*: No  
*Type*: [TimestreamTimestamp](aws-properties-iot-topicrule-timestreamtimestamp.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::IoT::TopicRule TimestreamDimension
<a name="aws-properties-iot-topicrule-timestreamdimension"></a>

Metadata attributes of the time series that are written in each measure record. 

## Syntax
<a name="aws-properties-iot-topicrule-timestreamdimension-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-timestreamdimension-syntax.json"></a>

```
{
  "[Name](#cfn-iot-topicrule-timestreamdimension-name)" : String,
  "[Value](#cfn-iot-topicrule-timestreamdimension-value)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-timestreamdimension-syntax.yaml"></a>

```
  [Name](#cfn-iot-topicrule-timestreamdimension-name): String
  [Value](#cfn-iot-topicrule-timestreamdimension-value): String
```

## Properties
<a name="aws-properties-iot-topicrule-timestreamdimension-properties"></a>

`Name`  <a name="cfn-iot-topicrule-timestreamdimension-name"></a>
The metadata dimension name. This is the name of the column in the Amazon Timestream database table record.  
*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)

`Value`  <a name="cfn-iot-topicrule-timestreamdimension-value"></a>
The value to write in this column of the database record.  
*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::IoT::TopicRule TimestreamTimestamp
<a name="aws-properties-iot-topicrule-timestreamtimestamp"></a>

The value to use for the entry's timestamp. If blank, the time that the entry was processed is used.

## Syntax
<a name="aws-properties-iot-topicrule-timestreamtimestamp-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-timestreamtimestamp-syntax.json"></a>

```
{
  "[Unit](#cfn-iot-topicrule-timestreamtimestamp-unit)" : String,
  "[Value](#cfn-iot-topicrule-timestreamtimestamp-value)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-timestreamtimestamp-syntax.yaml"></a>

```
  [Unit](#cfn-iot-topicrule-timestreamtimestamp-unit): String
  [Value](#cfn-iot-topicrule-timestreamtimestamp-value): String
```

## Properties
<a name="aws-properties-iot-topicrule-timestreamtimestamp-properties"></a>

`Unit`  <a name="cfn-iot-topicrule-timestreamtimestamp-unit"></a>
The precision of the timestamp value that results from the expression described in `value`.  
*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)

`Value`  <a name="cfn-iot-topicrule-timestreamtimestamp-value"></a>
An expression that returns a long epoch time value.  
*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::IoT::TopicRule TopicRulePayload
<a name="aws-properties-iot-topicrule-topicrulepayload"></a>

Describes a rule.

## Syntax
<a name="aws-properties-iot-topicrule-topicrulepayload-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-topicrulepayload-syntax.json"></a>

```
{
  "[Actions](#cfn-iot-topicrule-topicrulepayload-actions)" : [ Action, ... ],
  "[AwsIotSqlVersion](#cfn-iot-topicrule-topicrulepayload-awsiotsqlversion)" : String,
  "[Description](#cfn-iot-topicrule-topicrulepayload-description)" : String,
  "[ErrorAction](#cfn-iot-topicrule-topicrulepayload-erroraction)" : Action,
  "[RuleDisabled](#cfn-iot-topicrule-topicrulepayload-ruledisabled)" : Boolean,
  "[Sql](#cfn-iot-topicrule-topicrulepayload-sql)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-topicrulepayload-syntax.yaml"></a>

```
  [Actions](#cfn-iot-topicrule-topicrulepayload-actions): 
    - Action
  [AwsIotSqlVersion](#cfn-iot-topicrule-topicrulepayload-awsiotsqlversion): String
  [Description](#cfn-iot-topicrule-topicrulepayload-description): String
  [ErrorAction](#cfn-iot-topicrule-topicrulepayload-erroraction): 
    Action
  [RuleDisabled](#cfn-iot-topicrule-topicrulepayload-ruledisabled): Boolean
  [Sql](#cfn-iot-topicrule-topicrulepayload-sql): String
```

## Properties
<a name="aws-properties-iot-topicrule-topicrulepayload-properties"></a>

`Actions`  <a name="cfn-iot-topicrule-topicrulepayload-actions"></a>
The actions associated with the rule.  
*Required*: Yes  
*Type*: Array of [Action](aws-properties-iot-topicrule-action.md)  
*Minimum*: `0`  
*Maximum*: `10`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`AwsIotSqlVersion`  <a name="cfn-iot-topicrule-topicrulepayload-awsiotsqlversion"></a>
The version of the SQL rules engine to use when evaluating the rule.  
The default value is 2015-10-08.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Description`  <a name="cfn-iot-topicrule-topicrulepayload-description"></a>
The description of the rule.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ErrorAction`  <a name="cfn-iot-topicrule-topicrulepayload-erroraction"></a>
The action to take when an error occurs.  
*Required*: No  
*Type*: [Action](aws-properties-iot-topicrule-action.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RuleDisabled`  <a name="cfn-iot-topicrule-topicrulepayload-ruledisabled"></a>
Specifies whether the rule is disabled.  
*Required*: No  
*Type*: Boolean  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Sql`  <a name="cfn-iot-topicrule-topicrulepayload-sql"></a>
The SQL statement used to query the topic. For more information, see [AWS IoT SQL Reference](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html) in the *AWS IoT Developer Guide*.  
*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::IoT::TopicRule UserProperty
<a name="aws-properties-iot-topicrule-userproperty"></a>

A key-value pair that you define in the header.

## Syntax
<a name="aws-properties-iot-topicrule-userproperty-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicrule-userproperty-syntax.json"></a>

```
{
  "[Key](#cfn-iot-topicrule-userproperty-key)" : String,
  "[Value](#cfn-iot-topicrule-userproperty-value)" : String
}
```

### YAML
<a name="aws-properties-iot-topicrule-userproperty-syntax.yaml"></a>

```
  [Key](#cfn-iot-topicrule-userproperty-key): String
  [Value](#cfn-iot-topicrule-userproperty-value): String
```

## Properties
<a name="aws-properties-iot-topicrule-userproperty-properties"></a>

`Key`  <a name="cfn-iot-topicrule-userproperty-key"></a>
A key to be specified in `UserProperty`.  
*Required*: Yes  
*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)

`Value`  <a name="cfn-iot-topicrule-userproperty-value"></a>
A value to be specified in `UserProperty`.  
*Required*: Yes  
*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)

# AWS::IoT::TopicRuleDestination
<a name="aws-resource-iot-topicruledestination"></a>

A topic rule destination.

## Syntax
<a name="aws-resource-iot-topicruledestination-syntax"></a>

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

### JSON
<a name="aws-resource-iot-topicruledestination-syntax.json"></a>

```
{
  "Type" : "AWS::IoT::TopicRuleDestination",
  "Properties" : {
      "[HttpUrlProperties](#cfn-iot-topicruledestination-httpurlproperties)" : HttpUrlDestinationSummary,
      "[Status](#cfn-iot-topicruledestination-status)" : String,
      "[VpcProperties](#cfn-iot-topicruledestination-vpcproperties)" : VpcDestinationProperties
    }
}
```

### YAML
<a name="aws-resource-iot-topicruledestination-syntax.yaml"></a>

```
Type: AWS::IoT::TopicRuleDestination
Properties:
  [HttpUrlProperties](#cfn-iot-topicruledestination-httpurlproperties): 
    HttpUrlDestinationSummary
  [Status](#cfn-iot-topicruledestination-status): String
  [VpcProperties](#cfn-iot-topicruledestination-vpcproperties): 
    VpcDestinationProperties
```

## Properties
<a name="aws-resource-iot-topicruledestination-properties"></a>

`HttpUrlProperties`  <a name="cfn-iot-topicruledestination-httpurlproperties"></a>
Properties of the HTTP URL.  
*Required*: No  
*Type*: [HttpUrlDestinationSummary](aws-properties-iot-topicruledestination-httpurldestinationsummary.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Status`  <a name="cfn-iot-topicruledestination-status"></a>  
IN\$1PROGRESS  
A topic rule destination was created but has not been confirmed. You can set status to `IN_PROGRESS` by calling `UpdateTopicRuleDestination`. Calling `UpdateTopicRuleDestination` causes a new confirmation challenge to be sent to your confirmation endpoint.  
ENABLED  
Confirmation was completed, and traffic to this destination is allowed. You can set status to `DISABLED` by calling `UpdateTopicRuleDestination`.  
DISABLED  
Confirmation was completed, and traffic to this destination is not allowed. You can set status to `ENABLED` by calling `UpdateTopicRuleDestination`.  
ERROR  
Confirmation could not be completed; for example, if the confirmation timed out. You can call `GetTopicRuleDestination` for details about the error. You can set status to `IN_PROGRESS` by calling `UpdateTopicRuleDestination`. Calling `UpdateTopicRuleDestination` causes a new confirmation challenge to be sent to your confirmation endpoint.
*Required*: No  
*Type*: String  
*Allowed values*: `ENABLED | IN_PROGRESS | DISABLED`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`VpcProperties`  <a name="cfn-iot-topicruledestination-vpcproperties"></a>
Properties of the virtual private cloud (VPC) connection.  
*Required*: No  
*Type*: [VpcDestinationProperties](aws-properties-iot-topicruledestination-vpcdestinationproperties.md)  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

## Return values
<a name="aws-resource-iot-topicruledestination-return-values"></a>

### Ref
<a name="aws-resource-iot-topicruledestination-return-values-ref"></a>

When you pass the logical ID of this resource to the intrinsic `Ref` function, `Ref` returns the topic rule destination. For example:

 `{ "Ref": "TopicRuleDestination" }` 

A value similar to the following is returned:

 `a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2` 

For more information about using the `Ref` function, see [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/intrinsic-function-reference-ref.html).

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



#### 
<a name="aws-resource-iot-topicruledestination-return-values-fn--getatt-fn--getatt"></a>

`Arn`  <a name="Arn-fn::getatt"></a>
The topic rule destination URL.

`StatusReason`  <a name="StatusReason-fn::getatt"></a>
Additional details or reason why the topic rule destination is in the current status.

# AWS::IoT::TopicRuleDestination HttpUrlDestinationSummary
<a name="aws-properties-iot-topicruledestination-httpurldestinationsummary"></a>

HTTP URL destination properties.

## Syntax
<a name="aws-properties-iot-topicruledestination-httpurldestinationsummary-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicruledestination-httpurldestinationsummary-syntax.json"></a>

```
{
  "[ConfirmationUrl](#cfn-iot-topicruledestination-httpurldestinationsummary-confirmationurl)" : String
}
```

### YAML
<a name="aws-properties-iot-topicruledestination-httpurldestinationsummary-syntax.yaml"></a>

```
  [ConfirmationUrl](#cfn-iot-topicruledestination-httpurldestinationsummary-confirmationurl): String
```

## Properties
<a name="aws-properties-iot-topicruledestination-httpurldestinationsummary-properties"></a>

`ConfirmationUrl`  <a name="cfn-iot-topicruledestination-httpurldestinationsummary-confirmationurl"></a>
The URL used to confirm the HTTP topic rule destination URL.  
*Required*: No  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

# AWS::IoT::TopicRuleDestination VpcDestinationProperties
<a name="aws-properties-iot-topicruledestination-vpcdestinationproperties"></a>

The properties of a virtual private cloud (VPC) destination.

## Syntax
<a name="aws-properties-iot-topicruledestination-vpcdestinationproperties-syntax"></a>

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

### JSON
<a name="aws-properties-iot-topicruledestination-vpcdestinationproperties-syntax.json"></a>

```
{
  "[RoleArn](#cfn-iot-topicruledestination-vpcdestinationproperties-rolearn)" : String,
  "[SecurityGroups](#cfn-iot-topicruledestination-vpcdestinationproperties-securitygroups)" : [ String, ... ],
  "[SubnetIds](#cfn-iot-topicruledestination-vpcdestinationproperties-subnetids)" : [ String, ... ],
  "[VpcId](#cfn-iot-topicruledestination-vpcdestinationproperties-vpcid)" : String
}
```

### YAML
<a name="aws-properties-iot-topicruledestination-vpcdestinationproperties-syntax.yaml"></a>

```
  [RoleArn](#cfn-iot-topicruledestination-vpcdestinationproperties-rolearn): String
  [SecurityGroups](#cfn-iot-topicruledestination-vpcdestinationproperties-securitygroups): 
    - String
  [SubnetIds](#cfn-iot-topicruledestination-vpcdestinationproperties-subnetids): 
    - String
  [VpcId](#cfn-iot-topicruledestination-vpcdestinationproperties-vpcid): String
```

## Properties
<a name="aws-properties-iot-topicruledestination-vpcdestinationproperties-properties"></a>

`RoleArn`  <a name="cfn-iot-topicruledestination-vpcdestinationproperties-rolearn"></a>
The ARN of a role that has permission to create and attach to elastic network interfaces (ENIs).  
*Required*: No  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SecurityGroups`  <a name="cfn-iot-topicruledestination-vpcdestinationproperties-securitygroups"></a>
The security groups of the VPC destination.  
*Required*: No  
*Type*: Array of String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`SubnetIds`  <a name="cfn-iot-topicruledestination-vpcdestinationproperties-subnetids"></a>
The subnet IDs of the VPC destination.  
*Required*: No  
*Type*: Array of String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`VpcId`  <a name="cfn-iot-topicruledestination-vpcdestinationproperties-vpcid"></a>
The ID of the VPC.  
*Required*: No  
*Type*: String  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)