awsiot

package
v1.183.0-devpreview Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2022 License: Apache-2.0 Imports: 7 Imported by: 0

README

AWS IoT Construct Library

AWS IoT Core lets you connect billions of IoT devices and route trillions of messages to AWS services without managing infrastructure.

Installation

Install the module:

$ npm i @aws-cdk/aws-iot

Import it into your code:

import iot "github.com/aws/aws-cdk-go/awscdk"
import actions "github.com/aws/aws-cdk-go/awscdk"

TopicRule

Create a topic rule that give your devices the ability to interact with AWS services. You can create a topic rule with an action that invoke the Lambda action as following:

func := lambda.NewFunction(this, jsii.String("MyFunction"), &functionProps{
	runtime: lambda.runtime_NODEJS_14_X(),
	handler: jsii.String("index.handler"),
	code: lambda.code.fromInline(jsii.String("\n    exports.handler = (event) => {\n      console.log(\"It is test for lambda action of AWS IoT Rule.\", event);\n    };")),
})

iot.NewTopicRule(this, jsii.String("TopicRule"), &topicRuleProps{
	topicRuleName: jsii.String("MyTopicRule"),
	 // optional
	description: jsii.String("invokes the lambda function"),
	 // optional
	sql: iot.iotSql.fromStringAsVer20160323(jsii.String("SELECT topic(2) as device_id, timestamp() as timestamp FROM 'device/+/data'")),
	actions: []iAction{
		actions.NewLambdaFunctionAction(func),
	},
})

Or, you can add an action after constructing the TopicRule instance as following:

var func function


topicRule := iot.NewTopicRule(this, jsii.String("TopicRule"), &topicRuleProps{
	sql: iot.iotSql.fromStringAsVer20160323(jsii.String("SELECT topic(2) as device_id, timestamp() as timestamp FROM 'device/+/data'")),
})
topicRule.addAction(actions.NewLambdaFunctionAction(func))

You can also supply errorAction as following, and the IoT Rule will trigger it if a rule's action is unable to perform:

import logs "github.com/aws/aws-cdk-go/awscdk"


logGroup := logs.NewLogGroup(this, jsii.String("MyLogGroup"))

iot.NewTopicRule(this, jsii.String("TopicRule"), &topicRuleProps{
	sql: iot.iotSql.fromStringAsVer20160323(jsii.String("SELECT topic(2) as device_id, timestamp() as timestamp FROM 'device/+/data'")),
	errorAction: actions.NewCloudWatchLogsAction(logGroup),
})

If you wanna make the topic rule disable, add property enabled: false as following:

iot.NewTopicRule(this, jsii.String("TopicRule"), &topicRuleProps{
	sql: iot.iotSql.fromStringAsVer20160323(jsii.String("SELECT topic(2) as device_id, timestamp() as timestamp FROM 'device/+/data'")),
	enabled: jsii.Boolean(false),
})

See also @aws-cdk/aws-iot-actions for other actions.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CfnAccountAuditConfiguration_CFN_RESOURCE_TYPE_NAME

func CfnAccountAuditConfiguration_CFN_RESOURCE_TYPE_NAME() *string

func CfnAccountAuditConfiguration_IsCfnElement

func CfnAccountAuditConfiguration_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnAccountAuditConfiguration_IsCfnResource

func CfnAccountAuditConfiguration_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnAccountAuditConfiguration_IsConstruct

func CfnAccountAuditConfiguration_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnAuthorizer_CFN_RESOURCE_TYPE_NAME

func CfnAuthorizer_CFN_RESOURCE_TYPE_NAME() *string

func CfnAuthorizer_IsCfnElement

func CfnAuthorizer_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnAuthorizer_IsCfnResource

func CfnAuthorizer_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnAuthorizer_IsConstruct

func CfnAuthorizer_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnCACertificate_CFN_RESOURCE_TYPE_NAME

func CfnCACertificate_CFN_RESOURCE_TYPE_NAME() *string

func CfnCACertificate_IsCfnElement

func CfnCACertificate_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnCACertificate_IsCfnResource

func CfnCACertificate_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnCACertificate_IsConstruct

func CfnCACertificate_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnCertificate_CFN_RESOURCE_TYPE_NAME

func CfnCertificate_CFN_RESOURCE_TYPE_NAME() *string

func CfnCertificate_IsCfnElement

func CfnCertificate_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnCertificate_IsCfnResource

func CfnCertificate_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnCertificate_IsConstruct

func CfnCertificate_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnCustomMetric_CFN_RESOURCE_TYPE_NAME

func CfnCustomMetric_CFN_RESOURCE_TYPE_NAME() *string

func CfnCustomMetric_IsCfnElement

func CfnCustomMetric_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnCustomMetric_IsCfnResource

func CfnCustomMetric_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnCustomMetric_IsConstruct

func CfnCustomMetric_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnDimension_CFN_RESOURCE_TYPE_NAME

func CfnDimension_CFN_RESOURCE_TYPE_NAME() *string

func CfnDimension_IsCfnElement

func CfnDimension_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnDimension_IsCfnResource

func CfnDimension_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnDimension_IsConstruct

func CfnDimension_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnDomainConfiguration_CFN_RESOURCE_TYPE_NAME

func CfnDomainConfiguration_CFN_RESOURCE_TYPE_NAME() *string

func CfnDomainConfiguration_IsCfnElement

func CfnDomainConfiguration_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnDomainConfiguration_IsCfnResource

func CfnDomainConfiguration_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnDomainConfiguration_IsConstruct

func CfnDomainConfiguration_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnFleetMetric_CFN_RESOURCE_TYPE_NAME

func CfnFleetMetric_CFN_RESOURCE_TYPE_NAME() *string

func CfnFleetMetric_IsCfnElement

func CfnFleetMetric_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnFleetMetric_IsCfnResource

func CfnFleetMetric_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnFleetMetric_IsConstruct

func CfnFleetMetric_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnJobTemplate_CFN_RESOURCE_TYPE_NAME

func CfnJobTemplate_CFN_RESOURCE_TYPE_NAME() *string

func CfnJobTemplate_IsCfnElement

func CfnJobTemplate_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnJobTemplate_IsCfnResource

func CfnJobTemplate_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnJobTemplate_IsConstruct

func CfnJobTemplate_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnLogging_CFN_RESOURCE_TYPE_NAME

func CfnLogging_CFN_RESOURCE_TYPE_NAME() *string

func CfnLogging_IsCfnElement

func CfnLogging_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnLogging_IsCfnResource

func CfnLogging_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnLogging_IsConstruct

func CfnLogging_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnMitigationAction_CFN_RESOURCE_TYPE_NAME

func CfnMitigationAction_CFN_RESOURCE_TYPE_NAME() *string

func CfnMitigationAction_IsCfnElement

func CfnMitigationAction_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnMitigationAction_IsCfnResource

func CfnMitigationAction_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnMitigationAction_IsConstruct

func CfnMitigationAction_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnPolicyPrincipalAttachment_CFN_RESOURCE_TYPE_NAME

func CfnPolicyPrincipalAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnPolicyPrincipalAttachment_IsCfnElement

func CfnPolicyPrincipalAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnPolicyPrincipalAttachment_IsCfnResource

func CfnPolicyPrincipalAttachment_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnPolicyPrincipalAttachment_IsConstruct

func CfnPolicyPrincipalAttachment_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnPolicy_CFN_RESOURCE_TYPE_NAME

func CfnPolicy_CFN_RESOURCE_TYPE_NAME() *string

func CfnPolicy_IsCfnElement

func CfnPolicy_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnPolicy_IsCfnResource

func CfnPolicy_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnPolicy_IsConstruct

func CfnPolicy_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnProvisioningTemplate_CFN_RESOURCE_TYPE_NAME

func CfnProvisioningTemplate_CFN_RESOURCE_TYPE_NAME() *string

func CfnProvisioningTemplate_IsCfnElement

func CfnProvisioningTemplate_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnProvisioningTemplate_IsCfnResource

func CfnProvisioningTemplate_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnProvisioningTemplate_IsConstruct

func CfnProvisioningTemplate_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnResourceSpecificLogging_CFN_RESOURCE_TYPE_NAME

func CfnResourceSpecificLogging_CFN_RESOURCE_TYPE_NAME() *string

func CfnResourceSpecificLogging_IsCfnElement

func CfnResourceSpecificLogging_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnResourceSpecificLogging_IsCfnResource

func CfnResourceSpecificLogging_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnResourceSpecificLogging_IsConstruct

func CfnResourceSpecificLogging_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnRoleAlias_CFN_RESOURCE_TYPE_NAME

func CfnRoleAlias_CFN_RESOURCE_TYPE_NAME() *string

func CfnRoleAlias_IsCfnElement

func CfnRoleAlias_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnRoleAlias_IsCfnResource

func CfnRoleAlias_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnRoleAlias_IsConstruct

func CfnRoleAlias_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnScheduledAudit_CFN_RESOURCE_TYPE_NAME

func CfnScheduledAudit_CFN_RESOURCE_TYPE_NAME() *string

func CfnScheduledAudit_IsCfnElement

func CfnScheduledAudit_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnScheduledAudit_IsCfnResource

func CfnScheduledAudit_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnScheduledAudit_IsConstruct

func CfnScheduledAudit_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnSecurityProfile_CFN_RESOURCE_TYPE_NAME

func CfnSecurityProfile_CFN_RESOURCE_TYPE_NAME() *string

func CfnSecurityProfile_IsCfnElement

func CfnSecurityProfile_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnSecurityProfile_IsCfnResource

func CfnSecurityProfile_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnSecurityProfile_IsConstruct

func CfnSecurityProfile_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnThingPrincipalAttachment_CFN_RESOURCE_TYPE_NAME

func CfnThingPrincipalAttachment_CFN_RESOURCE_TYPE_NAME() *string

func CfnThingPrincipalAttachment_IsCfnElement

func CfnThingPrincipalAttachment_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnThingPrincipalAttachment_IsCfnResource

func CfnThingPrincipalAttachment_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnThingPrincipalAttachment_IsConstruct

func CfnThingPrincipalAttachment_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnThing_CFN_RESOURCE_TYPE_NAME

func CfnThing_CFN_RESOURCE_TYPE_NAME() *string

func CfnThing_IsCfnElement

func CfnThing_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnThing_IsCfnResource

func CfnThing_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnThing_IsConstruct

func CfnThing_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnTopicRuleDestination_CFN_RESOURCE_TYPE_NAME

func CfnTopicRuleDestination_CFN_RESOURCE_TYPE_NAME() *string

func CfnTopicRuleDestination_IsCfnElement

func CfnTopicRuleDestination_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnTopicRuleDestination_IsCfnResource

func CfnTopicRuleDestination_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnTopicRuleDestination_IsConstruct

func CfnTopicRuleDestination_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func CfnTopicRule_CFN_RESOURCE_TYPE_NAME

func CfnTopicRule_CFN_RESOURCE_TYPE_NAME() *string

func CfnTopicRule_IsCfnElement

func CfnTopicRule_IsCfnElement(x interface{}) *bool

Returns `true` if a construct is a stack element (i.e. part of the synthesized cloudformation template).

Uses duck-typing instead of `instanceof` to allow stack elements from different versions of this library to be included in the same stack.

Returns: The construct as a stack element or undefined if it is not a stack element. Experimental.

func CfnTopicRule_IsCfnResource

func CfnTopicRule_IsCfnResource(construct constructs.IConstruct) *bool

Check whether the given construct is a CfnResource. Experimental.

func CfnTopicRule_IsConstruct

func CfnTopicRule_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func NewCfnAccountAuditConfiguration_Override

func NewCfnAccountAuditConfiguration_Override(c CfnAccountAuditConfiguration, scope awscdk.Construct, id *string, props *CfnAccountAuditConfigurationProps)

Create a new `AWS::IoT::AccountAuditConfiguration`.

func NewCfnAuthorizer_Override

func NewCfnAuthorizer_Override(c CfnAuthorizer, scope awscdk.Construct, id *string, props *CfnAuthorizerProps)

Create a new `AWS::IoT::Authorizer`.

func NewCfnCACertificate_Override

func NewCfnCACertificate_Override(c CfnCACertificate, scope awscdk.Construct, id *string, props *CfnCACertificateProps)

Create a new `AWS::IoT::CACertificate`.

func NewCfnCertificate_Override

func NewCfnCertificate_Override(c CfnCertificate, scope awscdk.Construct, id *string, props *CfnCertificateProps)

Create a new `AWS::IoT::Certificate`.

func NewCfnCustomMetric_Override

func NewCfnCustomMetric_Override(c CfnCustomMetric, scope awscdk.Construct, id *string, props *CfnCustomMetricProps)

Create a new `AWS::IoT::CustomMetric`.

func NewCfnDimension_Override

func NewCfnDimension_Override(c CfnDimension, scope awscdk.Construct, id *string, props *CfnDimensionProps)

Create a new `AWS::IoT::Dimension`.

func NewCfnDomainConfiguration_Override

func NewCfnDomainConfiguration_Override(c CfnDomainConfiguration, scope awscdk.Construct, id *string, props *CfnDomainConfigurationProps)

Create a new `AWS::IoT::DomainConfiguration`.

func NewCfnFleetMetric_Override

func NewCfnFleetMetric_Override(c CfnFleetMetric, scope awscdk.Construct, id *string, props *CfnFleetMetricProps)

Create a new `AWS::IoT::FleetMetric`.

func NewCfnJobTemplate_Override

func NewCfnJobTemplate_Override(c CfnJobTemplate, scope awscdk.Construct, id *string, props *CfnJobTemplateProps)

Create a new `AWS::IoT::JobTemplate`.

func NewCfnLogging_Override

func NewCfnLogging_Override(c CfnLogging, scope awscdk.Construct, id *string, props *CfnLoggingProps)

Create a new `AWS::IoT::Logging`.

func NewCfnMitigationAction_Override

func NewCfnMitigationAction_Override(c CfnMitigationAction, scope awscdk.Construct, id *string, props *CfnMitigationActionProps)

Create a new `AWS::IoT::MitigationAction`.

func NewCfnPolicyPrincipalAttachment_Override

func NewCfnPolicyPrincipalAttachment_Override(c CfnPolicyPrincipalAttachment, scope awscdk.Construct, id *string, props *CfnPolicyPrincipalAttachmentProps)

Create a new `AWS::IoT::PolicyPrincipalAttachment`.

func NewCfnPolicy_Override

func NewCfnPolicy_Override(c CfnPolicy, scope awscdk.Construct, id *string, props *CfnPolicyProps)

Create a new `AWS::IoT::Policy`.

func NewCfnProvisioningTemplate_Override

func NewCfnProvisioningTemplate_Override(c CfnProvisioningTemplate, scope awscdk.Construct, id *string, props *CfnProvisioningTemplateProps)

Create a new `AWS::IoT::ProvisioningTemplate`.

func NewCfnResourceSpecificLogging_Override

func NewCfnResourceSpecificLogging_Override(c CfnResourceSpecificLogging, scope awscdk.Construct, id *string, props *CfnResourceSpecificLoggingProps)

Create a new `AWS::IoT::ResourceSpecificLogging`.

func NewCfnRoleAlias_Override

func NewCfnRoleAlias_Override(c CfnRoleAlias, scope awscdk.Construct, id *string, props *CfnRoleAliasProps)

Create a new `AWS::IoT::RoleAlias`.

func NewCfnScheduledAudit_Override

func NewCfnScheduledAudit_Override(c CfnScheduledAudit, scope awscdk.Construct, id *string, props *CfnScheduledAuditProps)

Create a new `AWS::IoT::ScheduledAudit`.

func NewCfnSecurityProfile_Override

func NewCfnSecurityProfile_Override(c CfnSecurityProfile, scope awscdk.Construct, id *string, props *CfnSecurityProfileProps)

Create a new `AWS::IoT::SecurityProfile`.

func NewCfnThingPrincipalAttachment_Override

func NewCfnThingPrincipalAttachment_Override(c CfnThingPrincipalAttachment, scope awscdk.Construct, id *string, props *CfnThingPrincipalAttachmentProps)

Create a new `AWS::IoT::ThingPrincipalAttachment`.

func NewCfnThing_Override

func NewCfnThing_Override(c CfnThing, scope awscdk.Construct, id *string, props *CfnThingProps)

Create a new `AWS::IoT::Thing`.

func NewCfnTopicRuleDestination_Override

func NewCfnTopicRuleDestination_Override(c CfnTopicRuleDestination, scope awscdk.Construct, id *string, props *CfnTopicRuleDestinationProps)

Create a new `AWS::IoT::TopicRuleDestination`.

func NewCfnTopicRule_Override

func NewCfnTopicRule_Override(c CfnTopicRule, scope awscdk.Construct, id *string, props *CfnTopicRuleProps)

Create a new `AWS::IoT::TopicRule`.

func NewIotSql_Override

func NewIotSql_Override(i IotSql)

Experimental.

func NewTopicRule_Override

func NewTopicRule_Override(t TopicRule, scope constructs.Construct, id *string, props *TopicRuleProps)

Experimental.

func TopicRule_IsConstruct

func TopicRule_IsConstruct(x interface{}) *bool

Return whether the given object is a Construct. Experimental.

func TopicRule_IsResource

func TopicRule_IsResource(construct awscdk.IConstruct) *bool

Check whether the given construct is a Resource. Experimental.

Types

type ActionConfig

type ActionConfig struct {
	// The configuration for this action.
	// Experimental.
	Configuration *CfnTopicRule_ActionProperty `field:"required" json:"configuration" yaml:"configuration"`
}

Properties for an topic rule action.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

actionConfig := &actionConfig{
	configuration: &actionProperty{
		cloudwatchAlarm: &cloudwatchAlarmActionProperty{
			alarmName: jsii.String("alarmName"),
			roleArn: jsii.String("roleArn"),
			stateReason: jsii.String("stateReason"),
			stateValue: jsii.String("stateValue"),
		},
		cloudwatchLogs: &cloudwatchLogsActionProperty{
			logGroupName: jsii.String("logGroupName"),
			roleArn: jsii.String("roleArn"),
		},
		cloudwatchMetric: &cloudwatchMetricActionProperty{
			metricName: jsii.String("metricName"),
			metricNamespace: jsii.String("metricNamespace"),
			metricUnit: jsii.String("metricUnit"),
			metricValue: jsii.String("metricValue"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			metricTimestamp: jsii.String("metricTimestamp"),
		},
		dynamoDb: &dynamoDBActionProperty{
			hashKeyField: jsii.String("hashKeyField"),
			hashKeyValue: jsii.String("hashKeyValue"),
			roleArn: jsii.String("roleArn"),
			tableName: jsii.String("tableName"),

			// the properties below are optional
			hashKeyType: jsii.String("hashKeyType"),
			payloadField: jsii.String("payloadField"),
			rangeKeyField: jsii.String("rangeKeyField"),
			rangeKeyType: jsii.String("rangeKeyType"),
			rangeKeyValue: jsii.String("rangeKeyValue"),
		},
		dynamoDBv2: &dynamoDBv2ActionProperty{
			putItem: &putItemInputProperty{
				tableName: jsii.String("tableName"),
			},
			roleArn: jsii.String("roleArn"),
		},
		elasticsearch: &elasticsearchActionProperty{
			endpoint: jsii.String("endpoint"),
			id: jsii.String("id"),
			index: jsii.String("index"),
			roleArn: jsii.String("roleArn"),
			type: jsii.String("type"),
		},
		firehose: &firehoseActionProperty{
			deliveryStreamName: jsii.String("deliveryStreamName"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			batchMode: jsii.Boolean(false),
			separator: jsii.String("separator"),
		},
		http: &httpActionProperty{
			url: jsii.String("url"),

			// the properties below are optional
			auth: &httpAuthorizationProperty{
				sigv4: &sigV4AuthorizationProperty{
					roleArn: jsii.String("roleArn"),
					serviceName: jsii.String("serviceName"),
					signingRegion: jsii.String("signingRegion"),
				},
			},
			confirmationUrl: jsii.String("confirmationUrl"),
			headers: []interface{}{
				&httpActionHeaderProperty{
					key: jsii.String("key"),
					value: jsii.String("value"),
				},
			},
		},
		iotAnalytics: &iotAnalyticsActionProperty{
			channelName: jsii.String("channelName"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			batchMode: jsii.Boolean(false),
		},
		iotEvents: &iotEventsActionProperty{
			inputName: jsii.String("inputName"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			batchMode: jsii.Boolean(false),
			messageId: jsii.String("messageId"),
		},
		iotSiteWise: &iotSiteWiseActionProperty{
			putAssetPropertyValueEntries: []interface{}{
				&putAssetPropertyValueEntryProperty{
					propertyValues: []interface{}{
						&assetPropertyValueProperty{
							timestamp: &assetPropertyTimestampProperty{
								timeInSeconds: jsii.String("timeInSeconds"),

								// the properties below are optional
								offsetInNanos: jsii.String("offsetInNanos"),
							},
							value: &assetPropertyVariantProperty{
								booleanValue: jsii.String("booleanValue"),
								doubleValue: jsii.String("doubleValue"),
								integerValue: jsii.String("integerValue"),
								stringValue: jsii.String("stringValue"),
							},

							// the properties below are optional
							quality: jsii.String("quality"),
						},
					},

					// the properties below are optional
					assetId: jsii.String("assetId"),
					entryId: jsii.String("entryId"),
					propertyAlias: jsii.String("propertyAlias"),
					propertyId: jsii.String("propertyId"),
				},
			},
			roleArn: jsii.String("roleArn"),
		},
		kafka: &kafkaActionProperty{
			clientProperties: map[string]*string{
				"clientPropertiesKey": jsii.String("clientProperties"),
			},
			destinationArn: jsii.String("destinationArn"),
			topic: jsii.String("topic"),

			// the properties below are optional
			key: jsii.String("key"),
			partition: jsii.String("partition"),
		},
		kinesis: &kinesisActionProperty{
			roleArn: jsii.String("roleArn"),
			streamName: jsii.String("streamName"),

			// the properties below are optional
			partitionKey: jsii.String("partitionKey"),
		},
		lambda: &lambdaActionProperty{
			functionArn: jsii.String("functionArn"),
		},
		location: &locationActionProperty{
			deviceId: jsii.String("deviceId"),
			latitude: jsii.String("latitude"),
			longitude: jsii.String("longitude"),
			roleArn: jsii.String("roleArn"),
			trackerName: jsii.String("trackerName"),

			// the properties below are optional
			timestamp: NewDate(),
		},
		openSearch: &openSearchActionProperty{
			endpoint: jsii.String("endpoint"),
			id: jsii.String("id"),
			index: jsii.String("index"),
			roleArn: jsii.String("roleArn"),
			type: jsii.String("type"),
		},
		republish: &republishActionProperty{
			roleArn: jsii.String("roleArn"),
			topic: jsii.String("topic"),

			// the properties below are optional
			headers: &republishActionHeadersProperty{
				contentType: jsii.String("contentType"),
				correlationData: jsii.String("correlationData"),
				messageExpiry: jsii.String("messageExpiry"),
				payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
				responseTopic: jsii.String("responseTopic"),
				userProperties: []interface{}{
					&userPropertyProperty{
						key: jsii.String("key"),
						value: jsii.String("value"),
					},
				},
			},
			qos: jsii.Number(123),
		},
		s3: &s3ActionProperty{
			bucketName: jsii.String("bucketName"),
			key: jsii.String("key"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			cannedAcl: jsii.String("cannedAcl"),
		},
		sns: &snsActionProperty{
			roleArn: jsii.String("roleArn"),
			targetArn: jsii.String("targetArn"),

			// the properties below are optional
			messageFormat: jsii.String("messageFormat"),
		},
		sqs: &sqsActionProperty{
			queueUrl: jsii.String("queueUrl"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			useBase64: jsii.Boolean(false),
		},
		stepFunctions: &stepFunctionsActionProperty{
			roleArn: jsii.String("roleArn"),
			stateMachineName: jsii.String("stateMachineName"),

			// the properties below are optional
			executionNamePrefix: jsii.String("executionNamePrefix"),
		},
		timestream: &timestreamActionProperty{
			databaseName: jsii.String("databaseName"),
			dimensions: []interface{}{
				&timestreamDimensionProperty{
					name: jsii.String("name"),
					value: jsii.String("value"),
				},
			},
			roleArn: jsii.String("roleArn"),
			tableName: jsii.String("tableName"),

			// the properties below are optional
			timestamp: &timestreamTimestampProperty{
				unit: jsii.String("unit"),
				value: jsii.String("value"),
			},
		},
	},
}

Experimental.

type CfnAccountAuditConfiguration

type CfnAccountAuditConfiguration interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The ID of the account.
	//
	// You can use the expression `!Sub "${AWS::AccountId}"` to use your account ID.
	AccountId() *string
	SetAccountId(val *string)
	// 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 avialbe auidt checks see [AWS::IoT::AccountAuditConfiguration AuditCheckConfigurations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditcheckconfigurations.html)
	AuditCheckConfigurations() interface{}
	SetAuditCheckConfigurations(val interface{})
	// Information about the targets to which audit notifications are sent.
	AuditNotificationTargetConfigurations() interface{}
	SetAuditNotificationTargetConfigurations(val interface{})
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// 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.
	RoleArn() *string
	SetRoleArn(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::AccountAuditConfiguration`.

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) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnAccountAuditConfiguration := awscdk.Aws_iot.NewCfnAccountAuditConfiguration(this, jsii.String("MyCfnAccountAuditConfiguration"), &cfnAccountAuditConfigurationProps{
	accountId: jsii.String("accountId"),
	auditCheckConfigurations: &auditCheckConfigurationsProperty{
		authenticatedCognitoRoleOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		caCertificateExpiringCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		caCertificateKeyQualityCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		conflictingClientIdsCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		deviceCertificateExpiringCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		deviceCertificateKeyQualityCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		deviceCertificateSharedCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		intermediateCaRevokedForActiveDeviceCertificatesCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		iotPolicyOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		ioTPolicyPotentialMisConfigurationCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		iotRoleAliasAllowsAccessToUnusedServicesCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		iotRoleAliasOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		loggingDisabledCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		revokedCaCertificateStillActiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		revokedDeviceCertificateStillActiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		unauthenticatedCognitoRoleOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
	},
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	auditNotificationTargetConfigurations: &auditNotificationTargetConfigurationsProperty{
		sns: &auditNotificationTargetProperty{
			enabled: jsii.Boolean(false),
			roleArn: jsii.String("roleArn"),
			targetArn: jsii.String("targetArn"),
		},
	},
})

func NewCfnAccountAuditConfiguration

func NewCfnAccountAuditConfiguration(scope awscdk.Construct, id *string, props *CfnAccountAuditConfigurationProps) CfnAccountAuditConfiguration

Create a new `AWS::IoT::AccountAuditConfiguration`.

type CfnAccountAuditConfigurationProps

type CfnAccountAuditConfigurationProps struct {
	// The ID of the account.
	//
	// You can use the expression `!Sub "${AWS::AccountId}"` to use your account ID.
	AccountId *string `field:"required" json:"accountId" yaml:"accountId"`
	// 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 avialbe auidt checks see [AWS::IoT::AccountAuditConfiguration AuditCheckConfigurations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-accountauditconfiguration-auditcheckconfigurations.html)
	AuditCheckConfigurations interface{} `field:"required" json:"auditCheckConfigurations" yaml:"auditCheckConfigurations"`
	// 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.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// Information about the targets to which audit notifications are sent.
	AuditNotificationTargetConfigurations interface{} `field:"optional" json:"auditNotificationTargetConfigurations" yaml:"auditNotificationTargetConfigurations"`
}

Properties for defining a `CfnAccountAuditConfiguration`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnAccountAuditConfigurationProps := &cfnAccountAuditConfigurationProps{
	accountId: jsii.String("accountId"),
	auditCheckConfigurations: &auditCheckConfigurationsProperty{
		authenticatedCognitoRoleOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		caCertificateExpiringCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		caCertificateKeyQualityCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		conflictingClientIdsCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		deviceCertificateExpiringCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		deviceCertificateKeyQualityCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		deviceCertificateSharedCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		intermediateCaRevokedForActiveDeviceCertificatesCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		iotPolicyOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		ioTPolicyPotentialMisConfigurationCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		iotRoleAliasAllowsAccessToUnusedServicesCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		iotRoleAliasOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		loggingDisabledCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		revokedCaCertificateStillActiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		revokedDeviceCertificateStillActiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
		unauthenticatedCognitoRoleOverlyPermissiveCheck: &auditCheckConfigurationProperty{
			enabled: jsii.Boolean(false),
		},
	},
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	auditNotificationTargetConfigurations: &auditNotificationTargetConfigurationsProperty{
		sns: &auditNotificationTargetProperty{
			enabled: jsii.Boolean(false),
			roleArn: jsii.String("roleArn"),
			targetArn: jsii.String("targetArn"),
		},
	},
}

type CfnAccountAuditConfiguration_AuditCheckConfigurationProperty

type CfnAccountAuditConfiguration_AuditCheckConfigurationProperty struct {
	// True if this audit check is enabled for this account.
	Enabled interface{} `field:"optional" json:"enabled" yaml:"enabled"`
}

Which audit checks are enabled and disabled for this account.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

auditCheckConfigurationProperty := &auditCheckConfigurationProperty{
	enabled: jsii.Boolean(false),
}

type CfnAccountAuditConfiguration_AuditCheckConfigurationsProperty

type CfnAccountAuditConfiguration_AuditCheckConfigurationsProperty struct {
	// 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.
	AuthenticatedCognitoRoleOverlyPermissiveCheck interface{} `field:"optional" json:"authenticatedCognitoRoleOverlyPermissiveCheck" yaml:"authenticatedCognitoRoleOverlyPermissiveCheck"`
	// Checks if a CA certificate is expiring.
	//
	// This check applies to CA certificates expiring within 30 days or that have expired.
	CaCertificateExpiringCheck interface{} `field:"optional" json:"caCertificateExpiringCheck" yaml:"caCertificateExpiringCheck"`
	// 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` .
	CaCertificateKeyQualityCheck interface{} `field:"optional" json:"caCertificateKeyQualityCheck" yaml:"caCertificateKeyQualityCheck"`
	// Checks if multiple devices connect using the same client ID.
	ConflictingClientIdsCheck interface{} `field:"optional" json:"conflictingClientIdsCheck" yaml:"conflictingClientIdsCheck"`
	// Checks if a device certificate is expiring.
	//
	// This check applies to device certificates expiring within 30 days or that have expired.
	DeviceCertificateExpiringCheck interface{} `field:"optional" json:"deviceCertificateExpiringCheck" yaml:"deviceCertificateExpiringCheck"`
	// 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.
	DeviceCertificateKeyQualityCheck interface{} `field:"optional" json:"deviceCertificateKeyQualityCheck" yaml:"deviceCertificateKeyQualityCheck"`
	// Checks if multiple concurrent connections use the same X.509 certificate to authenticate with AWS IoT .
	DeviceCertificateSharedCheck interface{} `field:"optional" json:"deviceCertificateSharedCheck" yaml:"deviceCertificateSharedCheck"`
	// `CfnAccountAuditConfiguration.AuditCheckConfigurationsProperty.IntermediateCaRevokedForActiveDeviceCertificatesCheck`.
	IntermediateCaRevokedForActiveDeviceCertificatesCheck interface{} `` /* 138-byte string literal not displayed */
	// Checks the permissiveness of a policy attached to an authenticated Amazon Cognito identity pool role.
	IotPolicyOverlyPermissiveCheck interface{} `field:"optional" json:"iotPolicyOverlyPermissiveCheck" yaml:"iotPolicyOverlyPermissiveCheck"`
	// `CfnAccountAuditConfiguration.AuditCheckConfigurationsProperty.IoTPolicyPotentialMisConfigurationCheck`.
	IoTPolicyPotentialMisConfigurationCheck interface{} `field:"optional" json:"ioTPolicyPotentialMisConfigurationCheck" yaml:"ioTPolicyPotentialMisConfigurationCheck"`
	// Checks if a role alias has access to services that haven't been used for the AWS IoT device in the last year.
	IotRoleAliasAllowsAccessToUnusedServicesCheck interface{} `field:"optional" json:"iotRoleAliasAllowsAccessToUnusedServicesCheck" yaml:"iotRoleAliasAllowsAccessToUnusedServicesCheck"`
	// Checks if the temporary credentials provided by AWS IoT role aliases are overly permissive.
	IotRoleAliasOverlyPermissiveCheck interface{} `field:"optional" json:"iotRoleAliasOverlyPermissiveCheck" yaml:"iotRoleAliasOverlyPermissiveCheck"`
	// Checks if AWS IoT logs are disabled.
	LoggingDisabledCheck interface{} `field:"optional" json:"loggingDisabledCheck" yaml:"loggingDisabledCheck"`
	// Checks if a revoked CA certificate is still active.
	RevokedCaCertificateStillActiveCheck interface{} `field:"optional" json:"revokedCaCertificateStillActiveCheck" yaml:"revokedCaCertificateStillActiveCheck"`
	// Checks if a revoked device certificate is still active.
	RevokedDeviceCertificateStillActiveCheck interface{} `field:"optional" json:"revokedDeviceCertificateStillActiveCheck" yaml:"revokedDeviceCertificateStillActiveCheck"`
	// Checks if policy attached to an unauthenticated Amazon Cognito identity pool role is too permissive.
	UnauthenticatedCognitoRoleOverlyPermissiveCheck interface{} `` /* 126-byte string literal not displayed */
}

The types of audit checks that can be performed.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

auditCheckConfigurationsProperty := &auditCheckConfigurationsProperty{
	authenticatedCognitoRoleOverlyPermissiveCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	caCertificateExpiringCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	caCertificateKeyQualityCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	conflictingClientIdsCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	deviceCertificateExpiringCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	deviceCertificateKeyQualityCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	deviceCertificateSharedCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	intermediateCaRevokedForActiveDeviceCertificatesCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	iotPolicyOverlyPermissiveCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	ioTPolicyPotentialMisConfigurationCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	iotRoleAliasAllowsAccessToUnusedServicesCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	iotRoleAliasOverlyPermissiveCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	loggingDisabledCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	revokedCaCertificateStillActiveCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	revokedDeviceCertificateStillActiveCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
	unauthenticatedCognitoRoleOverlyPermissiveCheck: &auditCheckConfigurationProperty{
		enabled: jsii.Boolean(false),
	},
}

type CfnAccountAuditConfiguration_AuditNotificationTargetConfigurationsProperty

type CfnAccountAuditConfiguration_AuditNotificationTargetConfigurationsProperty struct {
	// The `Sns` notification target.
	Sns interface{} `field:"optional" json:"sns" yaml:"sns"`
}

The configuration of the audit notification target.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

auditNotificationTargetConfigurationsProperty := &auditNotificationTargetConfigurationsProperty{
	sns: &auditNotificationTargetProperty{
		enabled: jsii.Boolean(false),
		roleArn: jsii.String("roleArn"),
		targetArn: jsii.String("targetArn"),
	},
}

type CfnAccountAuditConfiguration_AuditNotificationTargetProperty

type CfnAccountAuditConfiguration_AuditNotificationTargetProperty struct {
	// True if notifications to the target are enabled.
	Enabled interface{} `field:"optional" json:"enabled" yaml:"enabled"`
	// The ARN of the role that grants permission to send notifications to the target.
	RoleArn *string `field:"optional" json:"roleArn" yaml:"roleArn"`
	// The ARN of the target (SNS topic) to which audit notifications are sent.
	TargetArn *string `field:"optional" json:"targetArn" yaml:"targetArn"`
}

Information about the targets to which audit notifications are sent.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

auditNotificationTargetProperty := &auditNotificationTargetProperty{
	enabled: jsii.Boolean(false),
	roleArn: jsii.String("roleArn"),
	targetArn: jsii.String("targetArn"),
}

type CfnAuthorizer

type CfnAuthorizer interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) of the authorizer.
	AttrArn() *string
	// The authorizer's Lambda function ARN.
	AuthorizerFunctionArn() *string
	SetAuthorizerFunctionArn(val *string)
	// The authorizer name.
	AuthorizerName() *string
	SetAuthorizerName(val *string)
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// `AWS::IoT::Authorizer.EnableCachingForHttp`.
	EnableCachingForHttp() interface{}
	SetEnableCachingForHttp(val interface{})
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// Specifies whether AWS IoT validates the token signature in an authorization request.
	SigningDisabled() interface{}
	SetSigningDisabled(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// The status of the authorizer.
	//
	// Valid values: `ACTIVE` | `INACTIVE`.
	Status() *string
	SetStatus(val *string)
	// 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..."
	Tags() awscdk.TagManager
	// The key used to extract the token from the HTTP headers.
	TokenKeyName() *string
	SetTokenKeyName(val *string)
	// The public keys used to validate the token signature returned by your custom authentication service.
	TokenSigningPublicKeys() interface{}
	SetTokenSigningPublicKeys(val interface{})
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::Authorizer`.

Specifies an authorizer.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnAuthorizer := awscdk.Aws_iot.NewCfnAuthorizer(this, jsii.String("MyCfnAuthorizer"), &cfnAuthorizerProps{
	authorizerFunctionArn: jsii.String("authorizerFunctionArn"),

	// the properties below are optional
	authorizerName: jsii.String("authorizerName"),
	enableCachingForHttp: jsii.Boolean(false),
	signingDisabled: jsii.Boolean(false),
	status: jsii.String("status"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	tokenKeyName: jsii.String("tokenKeyName"),
	tokenSigningPublicKeys: map[string]*string{
		"tokenSigningPublicKeysKey": jsii.String("tokenSigningPublicKeys"),
	},
})

func NewCfnAuthorizer

func NewCfnAuthorizer(scope awscdk.Construct, id *string, props *CfnAuthorizerProps) CfnAuthorizer

Create a new `AWS::IoT::Authorizer`.

type CfnAuthorizerProps

type CfnAuthorizerProps struct {
	// The authorizer's Lambda function ARN.
	AuthorizerFunctionArn *string `field:"required" json:"authorizerFunctionArn" yaml:"authorizerFunctionArn"`
	// The authorizer name.
	AuthorizerName *string `field:"optional" json:"authorizerName" yaml:"authorizerName"`
	// `AWS::IoT::Authorizer.EnableCachingForHttp`.
	EnableCachingForHttp interface{} `field:"optional" json:"enableCachingForHttp" yaml:"enableCachingForHttp"`
	// Specifies whether AWS IoT validates the token signature in an authorization request.
	SigningDisabled interface{} `field:"optional" json:"signingDisabled" yaml:"signingDisabled"`
	// The status of the authorizer.
	//
	// Valid values: `ACTIVE` | `INACTIVE`.
	Status *string `field:"optional" json:"status" yaml:"status"`
	// 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..."
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The key used to extract the token from the HTTP headers.
	TokenKeyName *string `field:"optional" json:"tokenKeyName" yaml:"tokenKeyName"`
	// The public keys used to validate the token signature returned by your custom authentication service.
	TokenSigningPublicKeys interface{} `field:"optional" json:"tokenSigningPublicKeys" yaml:"tokenSigningPublicKeys"`
}

Properties for defining a `CfnAuthorizer`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnAuthorizerProps := &cfnAuthorizerProps{
	authorizerFunctionArn: jsii.String("authorizerFunctionArn"),

	// the properties below are optional
	authorizerName: jsii.String("authorizerName"),
	enableCachingForHttp: jsii.Boolean(false),
	signingDisabled: jsii.Boolean(false),
	status: jsii.String("status"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	tokenKeyName: jsii.String("tokenKeyName"),
	tokenSigningPublicKeys: map[string]*string{
		"tokenSigningPublicKeysKey": jsii.String("tokenSigningPublicKeys"),
	},
}

type CfnCACertificate

type CfnCACertificate interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Returns the Amazon Resource Name (ARN) for the instance profile. For example:.
	//
	// `{ "Fn::GetAtt": ["MyCACertificate", "Arn"] }`
	//
	// A value similar to the following is returned:
	//
	// `arn:aws:iot:us-east-1:123456789012:cacert/a6be6b84559801927e35a8f901fae08b5971d78d1562e29504ff9663b276a5f5`.
	AttrArn() *string
	// The CA certificate ID.
	AttrId() *string
	// Whether the CA certificate is configured for auto registration of device certificates.
	//
	// Valid values are "ENABLE" and "DISABLE".
	AutoRegistrationStatus() *string
	SetAutoRegistrationStatus(val *string)
	// The certificate data in PEM format.
	CaCertificatePem() *string
	SetCaCertificatePem(val *string)
	// 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_ONLY".
	CertificateMode() *string
	SetCertificateMode(val *string)
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// Information about the registration configuration.
	RegistrationConfig() interface{}
	SetRegistrationConfig(val interface{})
	// If true, removes auto registration.
	RemoveAutoRegistration() interface{}
	SetRemoveAutoRegistration(val interface{})
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// The status of the CA certificate.
	//
	// Valid values are "ACTIVE" and "INACTIVE".
	Status() *string
	SetStatus(val *string)
	// 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) .
	Tags() awscdk.TagManager
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// The private key verification certificate.
	VerificationCertificatePem() *string
	SetVerificationCertificatePem(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::CACertificate`.

Specifies a CA certificate.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCACertificate := awscdk.Aws_iot.NewCfnCACertificate(this, jsii.String("MyCfnCACertificate"), &cfnCACertificateProps{
	caCertificatePem: jsii.String("caCertificatePem"),
	status: jsii.String("status"),

	// the properties below are optional
	autoRegistrationStatus: jsii.String("autoRegistrationStatus"),
	certificateMode: jsii.String("certificateMode"),
	registrationConfig: &registrationConfigProperty{
		roleArn: jsii.String("roleArn"),
		templateBody: jsii.String("templateBody"),
		templateName: jsii.String("templateName"),
	},
	removeAutoRegistration: jsii.Boolean(false),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	verificationCertificatePem: jsii.String("verificationCertificatePem"),
})

func NewCfnCACertificate

func NewCfnCACertificate(scope awscdk.Construct, id *string, props *CfnCACertificateProps) CfnCACertificate

Create a new `AWS::IoT::CACertificate`.

type CfnCACertificateProps

type CfnCACertificateProps struct {
	// The certificate data in PEM format.
	CaCertificatePem *string `field:"required" json:"caCertificatePem" yaml:"caCertificatePem"`
	// The status of the CA certificate.
	//
	// Valid values are "ACTIVE" and "INACTIVE".
	Status *string `field:"required" json:"status" yaml:"status"`
	// Whether the CA certificate is configured for auto registration of device certificates.
	//
	// Valid values are "ENABLE" and "DISABLE".
	AutoRegistrationStatus *string `field:"optional" json:"autoRegistrationStatus" yaml:"autoRegistrationStatus"`
	// 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_ONLY".
	CertificateMode *string `field:"optional" json:"certificateMode" yaml:"certificateMode"`
	// Information about the registration configuration.
	RegistrationConfig interface{} `field:"optional" json:"registrationConfig" yaml:"registrationConfig"`
	// If true, removes auto registration.
	RemoveAutoRegistration interface{} `field:"optional" json:"removeAutoRegistration" yaml:"removeAutoRegistration"`
	// 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) .
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The private key verification certificate.
	VerificationCertificatePem *string `field:"optional" json:"verificationCertificatePem" yaml:"verificationCertificatePem"`
}

Properties for defining a `CfnCACertificate`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCACertificateProps := &cfnCACertificateProps{
	caCertificatePem: jsii.String("caCertificatePem"),
	status: jsii.String("status"),

	// the properties below are optional
	autoRegistrationStatus: jsii.String("autoRegistrationStatus"),
	certificateMode: jsii.String("certificateMode"),
	registrationConfig: &registrationConfigProperty{
		roleArn: jsii.String("roleArn"),
		templateBody: jsii.String("templateBody"),
		templateName: jsii.String("templateName"),
	},
	removeAutoRegistration: jsii.Boolean(false),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	verificationCertificatePem: jsii.String("verificationCertificatePem"),
}

type CfnCACertificate_RegistrationConfigProperty

type CfnCACertificate_RegistrationConfigProperty struct {
	// The ARN of the role.
	RoleArn *string `field:"optional" json:"roleArn" yaml:"roleArn"`
	// The template body.
	TemplateBody *string `field:"optional" json:"templateBody" yaml:"templateBody"`
	// The name of the provisioning template.
	TemplateName *string `field:"optional" json:"templateName" yaml:"templateName"`
}

The registration configuration.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

registrationConfigProperty := &registrationConfigProperty{
	roleArn: jsii.String("roleArn"),
	templateBody: jsii.String("templateBody"),
	templateName: jsii.String("templateName"),
}

type CfnCertificate

type CfnCertificate interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Returns the Amazon Resource Name (ARN) for the instance profile. For example:.
	//
	// `{ "Fn::GetAtt": ["MyCertificate", "Arn"] }`
	//
	// A value similar to the following is returned:
	//
	// `arn:aws:iot:ap-southeast-2:123456789012:cert/a1234567b89c012d3e4fg567hij8k9l01mno1p23q45678901rs234567890t1u2`.
	AttrArn() *string
	// The certificate ID.
	AttrId() *string
	// The CA certificate used to sign the device certificate being registered, not available when CertificateMode is SNI_ONLY.
	CaCertificatePem() *string
	SetCaCertificatePem(val *string)
	// Specifies which mode of certificate registration to use with this resource.
	//
	// Valid options are DEFAULT with CaCertificatePem and CertificatePem, SNI_ONLY 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 .
	CertificateMode() *string
	SetCertificateMode(val *string)
	// The certificate data in PEM format.
	//
	// Requires SNI_ONLY for the certificate mode or the accompanying CACertificatePem for registration.
	CertificatePem() *string
	SetCertificatePem(val *string)
	// The certificate signing request (CSR).
	CertificateSigningRequest() *string
	SetCertificateSigningRequest(val *string)
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// The status of the certificate.
	//
	// Valid values are ACTIVE, INACTIVE, REVOKED, PENDING_TRANSFER, and PENDING_ACTIVATION.
	//
	// The status value REGISTER_INACTIVE is deprecated and should not be used.
	Status() *string
	SetStatus(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::Certificate`.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCertificate := awscdk.Aws_iot.NewCfnCertificate(this, jsii.String("MyCfnCertificate"), &cfnCertificateProps{
	status: jsii.String("status"),

	// the properties below are optional
	caCertificatePem: jsii.String("caCertificatePem"),
	certificateMode: jsii.String("certificateMode"),
	certificatePem: jsii.String("certificatePem"),
	certificateSigningRequest: jsii.String("certificateSigningRequest"),
})

func NewCfnCertificate

func NewCfnCertificate(scope awscdk.Construct, id *string, props *CfnCertificateProps) CfnCertificate

Create a new `AWS::IoT::Certificate`.

type CfnCertificateProps

type CfnCertificateProps struct {
	// The status of the certificate.
	//
	// Valid values are ACTIVE, INACTIVE, REVOKED, PENDING_TRANSFER, and PENDING_ACTIVATION.
	//
	// The status value REGISTER_INACTIVE is deprecated and should not be used.
	Status *string `field:"required" json:"status" yaml:"status"`
	// The CA certificate used to sign the device certificate being registered, not available when CertificateMode is SNI_ONLY.
	CaCertificatePem *string `field:"optional" json:"caCertificatePem" yaml:"caCertificatePem"`
	// Specifies which mode of certificate registration to use with this resource.
	//
	// Valid options are DEFAULT with CaCertificatePem and CertificatePem, SNI_ONLY 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 .
	CertificateMode *string `field:"optional" json:"certificateMode" yaml:"certificateMode"`
	// The certificate data in PEM format.
	//
	// Requires SNI_ONLY for the certificate mode or the accompanying CACertificatePem for registration.
	CertificatePem *string `field:"optional" json:"certificatePem" yaml:"certificatePem"`
	// The certificate signing request (CSR).
	CertificateSigningRequest *string `field:"optional" json:"certificateSigningRequest" yaml:"certificateSigningRequest"`
}

Properties for defining a `CfnCertificate`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCertificateProps := &cfnCertificateProps{
	status: jsii.String("status"),

	// the properties below are optional
	caCertificatePem: jsii.String("caCertificatePem"),
	certificateMode: jsii.String("certificateMode"),
	certificatePem: jsii.String("certificatePem"),
	certificateSigningRequest: jsii.String("certificateSigningRequest"),
}

type CfnCustomMetric

type CfnCustomMetric interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Number (ARN) of the custom metric;
	//
	// for example, `arn: *aws-partition* :iot: *region* : *accountId* :custommetric/ *metricName*` .
	AttrMetricArn() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// 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.
	DisplayName() *string
	SetDisplayName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// 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.
	MetricName() *string
	SetMetricName(val *string)
	// 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.
	MetricType() *string
	SetMetricType(val *string)
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Metadata that can be used to manage the custom metric.
	Tags() awscdk.TagManager
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::CustomMetric`.

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) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCustomMetric := awscdk.Aws_iot.NewCfnCustomMetric(this, jsii.String("MyCfnCustomMetric"), &cfnCustomMetricProps{
	metricType: jsii.String("metricType"),

	// the properties below are optional
	displayName: jsii.String("displayName"),
	metricName: jsii.String("metricName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnCustomMetric

func NewCfnCustomMetric(scope awscdk.Construct, id *string, props *CfnCustomMetricProps) CfnCustomMetric

Create a new `AWS::IoT::CustomMetric`.

type CfnCustomMetricProps

type CfnCustomMetricProps struct {
	// 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.
	MetricType *string `field:"required" json:"metricType" yaml:"metricType"`
	// 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.
	DisplayName *string `field:"optional" json:"displayName" yaml:"displayName"`
	// 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.
	MetricName *string `field:"optional" json:"metricName" yaml:"metricName"`
	// Metadata that can be used to manage the custom metric.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnCustomMetric`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnCustomMetricProps := &cfnCustomMetricProps{
	metricType: jsii.String("metricType"),

	// the properties below are optional
	displayName: jsii.String("displayName"),
	metricName: jsii.String("metricName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnDimension

type CfnDimension interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) of the dimension.
	AttrArn() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// A unique identifier for the dimension.
	Name() *string
	SetName(val *string)
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// 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/#").
	StringValues() *[]*string
	SetStringValues(val *[]*string)
	// Metadata that can be used to manage the dimension.
	Tags() awscdk.TagManager
	// Specifies the type of dimension.
	//
	// Supported types: `TOPIC_FILTER.`
	Type() *string
	SetType(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::Dimension`.

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) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDimension := awscdk.Aws_iot.NewCfnDimension(this, jsii.String("MyCfnDimension"), &cfnDimensionProps{
	stringValues: []*string{
		jsii.String("stringValues"),
	},
	type: jsii.String("type"),

	// the properties below are optional
	name: jsii.String("name"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnDimension

func NewCfnDimension(scope awscdk.Construct, id *string, props *CfnDimensionProps) CfnDimension

Create a new `AWS::IoT::Dimension`.

type CfnDimensionProps

type CfnDimensionProps struct {
	// 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/#").
	StringValues *[]*string `field:"required" json:"stringValues" yaml:"stringValues"`
	// Specifies the type of dimension.
	//
	// Supported types: `TOPIC_FILTER.`
	Type *string `field:"required" json:"type" yaml:"type"`
	// A unique identifier for the dimension.
	Name *string `field:"optional" json:"name" yaml:"name"`
	// Metadata that can be used to manage the dimension.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnDimension`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDimensionProps := &cfnDimensionProps{
	stringValues: []*string{
		jsii.String("stringValues"),
	},
	type: jsii.String("type"),

	// the properties below are optional
	name: jsii.String("name"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnDomainConfiguration

type CfnDomainConfiguration interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) of the domain configuration.
	AttrArn() *string
	// The type of service delivered by the domain.
	AttrDomainType() *string
	// 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.
	AttrServerCertificates() awscdk.IResolvable
	// An object that specifies the authorization service for a domain.
	AuthorizerConfig() interface{}
	SetAuthorizerConfig(val interface{})
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The name of the domain configuration.
	//
	// This value must be unique to a region.
	DomainConfigurationName() *string
	SetDomainConfigurationName(val *string)
	// The status to which the domain configuration should be updated.
	//
	// Valid values: `ENABLED` | `DISABLED`.
	DomainConfigurationStatus() *string
	SetDomainConfigurationStatus(val *string)
	// The name of the domain.
	DomainName() *string
	SetDomainName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// 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.
	ServerCertificateArns() *[]*string
	SetServerCertificateArns(val *[]*string)
	// The type of service delivered by the endpoint.
	//
	// > AWS IoT Core currently supports only the `DATA` service type.
	ServiceType() *string
	SetServiceType(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// 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..."
	Tags() awscdk.TagManager
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// 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.
	ValidationCertificateArn() *string
	SetValidationCertificateArn(val *string)
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::DomainConfiguration`.

Specifies a domain configuration.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDomainConfiguration := awscdk.Aws_iot.NewCfnDomainConfiguration(this, jsii.String("MyCfnDomainConfiguration"), &cfnDomainConfigurationProps{
	authorizerConfig: &authorizerConfigProperty{
		allowAuthorizerOverride: jsii.Boolean(false),
		defaultAuthorizerName: jsii.String("defaultAuthorizerName"),
	},
	domainConfigurationName: jsii.String("domainConfigurationName"),
	domainConfigurationStatus: jsii.String("domainConfigurationStatus"),
	domainName: jsii.String("domainName"),
	serverCertificateArns: []*string{
		jsii.String("serverCertificateArns"),
	},
	serviceType: jsii.String("serviceType"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	validationCertificateArn: jsii.String("validationCertificateArn"),
})

func NewCfnDomainConfiguration

func NewCfnDomainConfiguration(scope awscdk.Construct, id *string, props *CfnDomainConfigurationProps) CfnDomainConfiguration

Create a new `AWS::IoT::DomainConfiguration`.

type CfnDomainConfigurationProps

type CfnDomainConfigurationProps struct {
	// An object that specifies the authorization service for a domain.
	AuthorizerConfig interface{} `field:"optional" json:"authorizerConfig" yaml:"authorizerConfig"`
	// The name of the domain configuration.
	//
	// This value must be unique to a region.
	DomainConfigurationName *string `field:"optional" json:"domainConfigurationName" yaml:"domainConfigurationName"`
	// The status to which the domain configuration should be updated.
	//
	// Valid values: `ENABLED` | `DISABLED`.
	DomainConfigurationStatus *string `field:"optional" json:"domainConfigurationStatus" yaml:"domainConfigurationStatus"`
	// The name of the domain.
	DomainName *string `field:"optional" json:"domainName" yaml:"domainName"`
	// 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.
	ServerCertificateArns *[]*string `field:"optional" json:"serverCertificateArns" yaml:"serverCertificateArns"`
	// The type of service delivered by the endpoint.
	//
	// > AWS IoT Core currently supports only the `DATA` service type.
	ServiceType *string `field:"optional" json:"serviceType" yaml:"serviceType"`
	// 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..."
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// 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.
	ValidationCertificateArn *string `field:"optional" json:"validationCertificateArn" yaml:"validationCertificateArn"`
}

Properties for defining a `CfnDomainConfiguration`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnDomainConfigurationProps := &cfnDomainConfigurationProps{
	authorizerConfig: &authorizerConfigProperty{
		allowAuthorizerOverride: jsii.Boolean(false),
		defaultAuthorizerName: jsii.String("defaultAuthorizerName"),
	},
	domainConfigurationName: jsii.String("domainConfigurationName"),
	domainConfigurationStatus: jsii.String("domainConfigurationStatus"),
	domainName: jsii.String("domainName"),
	serverCertificateArns: []*string{
		jsii.String("serverCertificateArns"),
	},
	serviceType: jsii.String("serviceType"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	validationCertificateArn: jsii.String("validationCertificateArn"),
}

type CfnDomainConfiguration_AuthorizerConfigProperty

type CfnDomainConfiguration_AuthorizerConfigProperty struct {
	// A Boolean that specifies whether the domain configuration's authorization service can be overridden.
	AllowAuthorizerOverride interface{} `field:"optional" json:"allowAuthorizerOverride" yaml:"allowAuthorizerOverride"`
	// The name of the authorization service for a domain configuration.
	DefaultAuthorizerName *string `field:"optional" json:"defaultAuthorizerName" yaml:"defaultAuthorizerName"`
}

An object that specifies the authorization service for a domain.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

authorizerConfigProperty := &authorizerConfigProperty{
	allowAuthorizerOverride: jsii.Boolean(false),
	defaultAuthorizerName: jsii.String("defaultAuthorizerName"),
}

type CfnDomainConfiguration_ServerCertificateSummaryProperty

type CfnDomainConfiguration_ServerCertificateSummaryProperty struct {
	// The ARN of the server certificate.
	ServerCertificateArn *string `field:"optional" json:"serverCertificateArn" yaml:"serverCertificateArn"`
	// The status of the server certificate.
	ServerCertificateStatus *string `field:"optional" json:"serverCertificateStatus" yaml:"serverCertificateStatus"`
	// Details that explain the status of the server certificate.
	ServerCertificateStatusDetail *string `field:"optional" json:"serverCertificateStatusDetail" yaml:"serverCertificateStatusDetail"`
}

An object that contains information about a server certificate.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

serverCertificateSummaryProperty := &serverCertificateSummaryProperty{
	serverCertificateArn: jsii.String("serverCertificateArn"),
	serverCertificateStatus: jsii.String("serverCertificateStatus"),
	serverCertificateStatusDetail: jsii.String("serverCertificateStatusDetail"),
}

type CfnFleetMetric

type CfnFleetMetric interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The field to aggregate.
	AggregationField() *string
	SetAggregationField(val *string)
	// The type of the aggregation query.
	AggregationType() interface{}
	SetAggregationType(val interface{})
	// The time the fleet metric was created.
	AttrCreationDate() awscdk.IResolvable
	// The time the fleet metric was last modified.
	AttrLastModifiedDate() awscdk.IResolvable
	// The Amazon Resource Name (ARN) of the fleet metric.
	AttrMetricArn() *string
	// The fleet metric version.
	AttrVersion() awscdk.IResolvable
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The fleet metric description.
	Description() *string
	SetDescription(val *string)
	// The name of the index to search.
	IndexName() *string
	SetIndexName(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The name of the fleet metric to create.
	MetricName() *string
	SetMetricName(val *string)
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// The time in seconds between fleet metric emissions.
	//
	// Range [60(1 min), 86400(1 day)] and must be multiple of 60.
	Period() *float64
	SetPeriod(val *float64)
	// The search query string.
	QueryString() *string
	SetQueryString(val *string)
	// The query version.
	QueryVersion() *string
	SetQueryVersion(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Metadata which can be used to manage the fleet metric.
	Tags() awscdk.TagManager
	// Used to support unit transformation such as milliseconds to seconds.
	//
	// Must be a unit supported by CW metric. Default to null.
	Unit() *string
	SetUnit(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::FleetMetric`.

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

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnFleetMetric := awscdk.Aws_iot.NewCfnFleetMetric(this, jsii.String("MyCfnFleetMetric"), &cfnFleetMetricProps{
	metricName: jsii.String("metricName"),

	// the properties below are optional
	aggregationField: jsii.String("aggregationField"),
	aggregationType: &aggregationTypeProperty{
		name: jsii.String("name"),
		values: []*string{
			jsii.String("values"),
		},
	},
	description: jsii.String("description"),
	indexName: jsii.String("indexName"),
	period: jsii.Number(123),
	queryString: jsii.String("queryString"),
	queryVersion: jsii.String("queryVersion"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	unit: jsii.String("unit"),
})

func NewCfnFleetMetric

func NewCfnFleetMetric(scope awscdk.Construct, id *string, props *CfnFleetMetricProps) CfnFleetMetric

Create a new `AWS::IoT::FleetMetric`.

type CfnFleetMetricProps

type CfnFleetMetricProps struct {
	// The name of the fleet metric to create.
	MetricName *string `field:"required" json:"metricName" yaml:"metricName"`
	// The field to aggregate.
	AggregationField *string `field:"optional" json:"aggregationField" yaml:"aggregationField"`
	// The type of the aggregation query.
	AggregationType interface{} `field:"optional" json:"aggregationType" yaml:"aggregationType"`
	// The fleet metric description.
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The name of the index to search.
	IndexName *string `field:"optional" json:"indexName" yaml:"indexName"`
	// The time in seconds between fleet metric emissions.
	//
	// Range [60(1 min), 86400(1 day)] and must be multiple of 60.
	Period *float64 `field:"optional" json:"period" yaml:"period"`
	// The search query string.
	QueryString *string `field:"optional" json:"queryString" yaml:"queryString"`
	// The query version.
	QueryVersion *string `field:"optional" json:"queryVersion" yaml:"queryVersion"`
	// Metadata which can be used to manage the fleet metric.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// Used to support unit transformation such as milliseconds to seconds.
	//
	// Must be a unit supported by CW metric. Default to null.
	Unit *string `field:"optional" json:"unit" yaml:"unit"`
}

Properties for defining a `CfnFleetMetric`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnFleetMetricProps := &cfnFleetMetricProps{
	metricName: jsii.String("metricName"),

	// the properties below are optional
	aggregationField: jsii.String("aggregationField"),
	aggregationType: &aggregationTypeProperty{
		name: jsii.String("name"),
		values: []*string{
			jsii.String("values"),
		},
	},
	description: jsii.String("description"),
	indexName: jsii.String("indexName"),
	period: jsii.Number(123),
	queryString: jsii.String("queryString"),
	queryVersion: jsii.String("queryVersion"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	unit: jsii.String("unit"),
}

type CfnFleetMetric_AggregationTypeProperty

type CfnFleetMetric_AggregationTypeProperty struct {
	// The name of the aggregation type.
	Name *string `field:"required" json:"name" yaml:"name"`
	// A list of the values of aggregation types.
	Values *[]*string `field:"required" json:"values" yaml:"values"`
}

The type of aggregation queries.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

aggregationTypeProperty := &aggregationTypeProperty{
	name: jsii.String("name"),
	values: []*string{
		jsii.String("values"),
	},
}

type CfnJobTemplate

type CfnJobTemplate interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The criteria that determine when and how a job abort takes place.
	AbortConfig() interface{}
	SetAbortConfig(val interface{})
	// The ARN of the job to use as the basis for the job template.
	AttrArn() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// A description of the job template.
	Description() *string
	SetDescription(val *string)
	// The job document.
	//
	// Required if you don't specify a value for `documentSource` .
	Document() *string
	SetDocument(val *string)
	// An S3 link to the job document to use in the template.
	//
	// Required if you don't specify a value for `document` .
	//
	// > If the job document resides in an S3 bucket, you must use a placeholder link when specifying the document.
	// >
	// > The placeholder link is of the following form:
	// >
	// > `${aws:iot:s3-presigned-url:https://s3.amazonaws.com/ *bucket* / *key* }`
	// >
	// > where *bucket* is your bucket name and *key* is the object in the bucket to which you are linking.
	DocumentSource() *string
	SetDocumentSource(val *string)
	// The ARN of the job to use as the basis for the job template.
	JobArn() *string
	SetJobArn(val *string)
	// Allows you to create a staged rollout of a job.
	JobExecutionsRolloutConfig() interface{}
	SetJobExecutionsRolloutConfig(val interface{})
	// A unique identifier for the job template.
	//
	// We recommend using a UUID. Alpha-numeric characters, "-", and "_" are valid for use here.
	JobTemplateId() *string
	SetJobTemplateId(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Configuration for pre-signed S3 URLs.
	PresignedUrlConfig() interface{}
	SetPresignedUrlConfig(val interface{})
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Metadata that can be used to manage the job template.
	Tags() awscdk.TagManager
	// 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` .
	TimeoutConfig() interface{}
	SetTimeoutConfig(val interface{})
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::JobTemplate`.

Represents a job template.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnJobTemplate := awscdk.Aws_iot.NewCfnJobTemplate(this, jsii.String("MyCfnJobTemplate"), &cfnJobTemplateProps{
	description: jsii.String("description"),
	jobTemplateId: jsii.String("jobTemplateId"),

	// the properties below are optional
	abortConfig: &abortConfigProperty{
		criteriaList: []interface{}{
			&abortCriteriaProperty{
				action: jsii.String("action"),
				failureType: jsii.String("failureType"),
				minNumberOfExecutedThings: jsii.Number(123),
				thresholdPercentage: jsii.Number(123),
			},
		},
	},
	document: jsii.String("document"),
	documentSource: jsii.String("documentSource"),
	jobArn: jsii.String("jobArn"),
	jobExecutionsRolloutConfig: &jobExecutionsRolloutConfigProperty{
		exponentialRolloutRate: &exponentialRolloutRateProperty{
			baseRatePerMinute: jsii.Number(123),
			incrementFactor: jsii.Number(123),
			rateIncreaseCriteria: &rateIncreaseCriteriaProperty{
				numberOfNotifiedThings: jsii.Number(123),
				numberOfSucceededThings: jsii.Number(123),
			},
		},
		maximumPerMinute: jsii.Number(123),
	},
	presignedUrlConfig: &presignedUrlConfigProperty{
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		expiresInSec: jsii.Number(123),
	},
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	timeoutConfig: &timeoutConfigProperty{
		inProgressTimeoutInMinutes: jsii.Number(123),
	},
})

func NewCfnJobTemplate

func NewCfnJobTemplate(scope awscdk.Construct, id *string, props *CfnJobTemplateProps) CfnJobTemplate

Create a new `AWS::IoT::JobTemplate`.

type CfnJobTemplateProps

type CfnJobTemplateProps struct {
	// A description of the job template.
	Description *string `field:"required" json:"description" yaml:"description"`
	// A unique identifier for the job template.
	//
	// We recommend using a UUID. Alpha-numeric characters, "-", and "_" are valid for use here.
	JobTemplateId *string `field:"required" json:"jobTemplateId" yaml:"jobTemplateId"`
	// The criteria that determine when and how a job abort takes place.
	AbortConfig interface{} `field:"optional" json:"abortConfig" yaml:"abortConfig"`
	// The job document.
	//
	// Required if you don't specify a value for `documentSource` .
	Document *string `field:"optional" json:"document" yaml:"document"`
	// An S3 link to the job document to use in the template.
	//
	// Required if you don't specify a value for `document` .
	//
	// > If the job document resides in an S3 bucket, you must use a placeholder link when specifying the document.
	// >
	// > The placeholder link is of the following form:
	// >
	// > `${aws:iot:s3-presigned-url:https://s3.amazonaws.com/ *bucket* / *key* }`
	// >
	// > where *bucket* is your bucket name and *key* is the object in the bucket to which you are linking.
	DocumentSource *string `field:"optional" json:"documentSource" yaml:"documentSource"`
	// The ARN of the job to use as the basis for the job template.
	JobArn *string `field:"optional" json:"jobArn" yaml:"jobArn"`
	// Allows you to create a staged rollout of a job.
	JobExecutionsRolloutConfig interface{} `field:"optional" json:"jobExecutionsRolloutConfig" yaml:"jobExecutionsRolloutConfig"`
	// Configuration for pre-signed S3 URLs.
	PresignedUrlConfig interface{} `field:"optional" json:"presignedUrlConfig" yaml:"presignedUrlConfig"`
	// Metadata that can be used to manage the job template.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// 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` .
	TimeoutConfig interface{} `field:"optional" json:"timeoutConfig" yaml:"timeoutConfig"`
}

Properties for defining a `CfnJobTemplate`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnJobTemplateProps := &cfnJobTemplateProps{
	description: jsii.String("description"),
	jobTemplateId: jsii.String("jobTemplateId"),

	// the properties below are optional
	abortConfig: &abortConfigProperty{
		criteriaList: []interface{}{
			&abortCriteriaProperty{
				action: jsii.String("action"),
				failureType: jsii.String("failureType"),
				minNumberOfExecutedThings: jsii.Number(123),
				thresholdPercentage: jsii.Number(123),
			},
		},
	},
	document: jsii.String("document"),
	documentSource: jsii.String("documentSource"),
	jobArn: jsii.String("jobArn"),
	jobExecutionsRolloutConfig: &jobExecutionsRolloutConfigProperty{
		exponentialRolloutRate: &exponentialRolloutRateProperty{
			baseRatePerMinute: jsii.Number(123),
			incrementFactor: jsii.Number(123),
			rateIncreaseCriteria: &rateIncreaseCriteriaProperty{
				numberOfNotifiedThings: jsii.Number(123),
				numberOfSucceededThings: jsii.Number(123),
			},
		},
		maximumPerMinute: jsii.Number(123),
	},
	presignedUrlConfig: &presignedUrlConfigProperty{
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		expiresInSec: jsii.Number(123),
	},
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	timeoutConfig: &timeoutConfigProperty{
		inProgressTimeoutInMinutes: jsii.Number(123),
	},
}

type CfnJobTemplate_AbortConfigProperty

type CfnJobTemplate_AbortConfigProperty struct {
	// The list of criteria that determine when and how to abort the job.
	CriteriaList interface{} `field:"required" json:"criteriaList" yaml:"criteriaList"`
}

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

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

abortConfigProperty := &abortConfigProperty{
	criteriaList: []interface{}{
		&abortCriteriaProperty{
			action: jsii.String("action"),
			failureType: jsii.String("failureType"),
			minNumberOfExecutedThings: jsii.Number(123),
			thresholdPercentage: jsii.Number(123),
		},
	},
}

type CfnJobTemplate_AbortCriteriaProperty

type CfnJobTemplate_AbortCriteriaProperty struct {
	// The type of job action to take to initiate the job abort.
	Action *string `field:"required" json:"action" yaml:"action"`
	// The type of job execution failures that can initiate a job abort.
	FailureType *string `field:"required" json:"failureType" yaml:"failureType"`
	// The minimum number of things which must receive job execution notifications before the job can be aborted.
	MinNumberOfExecutedThings *float64 `field:"required" json:"minNumberOfExecutedThings" yaml:"minNumberOfExecutedThings"`
	// 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).
	ThresholdPercentage *float64 `field:"required" json:"thresholdPercentage" yaml:"thresholdPercentage"`
}

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

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

abortCriteriaProperty := &abortCriteriaProperty{
	action: jsii.String("action"),
	failureType: jsii.String("failureType"),
	minNumberOfExecutedThings: jsii.Number(123),
	thresholdPercentage: jsii.Number(123),
}

type CfnJobTemplate_ExponentialRolloutRateProperty

type CfnJobTemplate_ExponentialRolloutRateProperty struct {
	// 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.
	BaseRatePerMinute *float64 `field:"required" json:"baseRatePerMinute" yaml:"baseRatePerMinute"`
	// 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).
	IncrementFactor *float64 `field:"required" json:"incrementFactor" yaml:"incrementFactor"`
	// The criteria to initiate the increase in rate of rollout for a job.
	RateIncreaseCriteria interface{} `field:"required" json:"rateIncreaseCriteria" yaml:"rateIncreaseCriteria"`
}

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

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

exponentialRolloutRateProperty := &exponentialRolloutRateProperty{
	baseRatePerMinute: jsii.Number(123),
	incrementFactor: jsii.Number(123),
	rateIncreaseCriteria: &rateIncreaseCriteriaProperty{
		numberOfNotifiedThings: jsii.Number(123),
		numberOfSucceededThings: jsii.Number(123),
	},
}

type CfnJobTemplate_JobExecutionsRolloutConfigProperty

type CfnJobTemplate_JobExecutionsRolloutConfigProperty struct {
	// `CfnJobTemplate.JobExecutionsRolloutConfigProperty.ExponentialRolloutRate`.
	ExponentialRolloutRate interface{} `field:"optional" json:"exponentialRolloutRate" yaml:"exponentialRolloutRate"`
	// The maximum number of things that will be notified of a pending job, per minute.
	//
	// This parameter allows you to create a staged rollout.
	MaximumPerMinute *float64 `field:"optional" json:"maximumPerMinute" yaml:"maximumPerMinute"`
}

Allows you to create a staged rollout of a job.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

jobExecutionsRolloutConfigProperty := &jobExecutionsRolloutConfigProperty{
	exponentialRolloutRate: &exponentialRolloutRateProperty{
		baseRatePerMinute: jsii.Number(123),
		incrementFactor: jsii.Number(123),
		rateIncreaseCriteria: &rateIncreaseCriteriaProperty{
			numberOfNotifiedThings: jsii.Number(123),
			numberOfSucceededThings: jsii.Number(123),
		},
	},
	maximumPerMinute: jsii.Number(123),
}

type CfnJobTemplate_PresignedUrlConfigProperty

type CfnJobTemplate_PresignedUrlConfigProperty struct {
	// 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* .
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// 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.
	ExpiresInSec *float64 `field:"optional" json:"expiresInSec" yaml:"expiresInSec"`
}

Configuration for pre-signed S3 URLs.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

presignedUrlConfigProperty := &presignedUrlConfigProperty{
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	expiresInSec: jsii.Number(123),
}

type CfnJobTemplate_RateIncreaseCriteriaProperty

type CfnJobTemplate_RateIncreaseCriteriaProperty struct {
	// The threshold for number of notified things that will initiate the increase in rate of rollout.
	NumberOfNotifiedThings *float64 `field:"optional" json:"numberOfNotifiedThings" yaml:"numberOfNotifiedThings"`
	// The threshold for number of succeeded things that will initiate the increase in rate of rollout.
	NumberOfSucceededThings *float64 `field:"optional" json:"numberOfSucceededThings" yaml:"numberOfSucceededThings"`
}

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

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

rateIncreaseCriteriaProperty := &rateIncreaseCriteriaProperty{
	numberOfNotifiedThings: jsii.Number(123),
	numberOfSucceededThings: jsii.Number(123),
}

type CfnJobTemplate_TimeoutConfigProperty

type CfnJobTemplate_TimeoutConfigProperty struct {
	// 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_PROGRESS status for longer than this interval, the job execution will fail and switch to the terminal `TIMED_OUT` status.
	InProgressTimeoutInMinutes *float64 `field:"required" json:"inProgressTimeoutInMinutes" yaml:"inProgressTimeoutInMinutes"`
}

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` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

timeoutConfigProperty := &timeoutConfigProperty{
	inProgressTimeoutInMinutes: jsii.Number(123),
}

type CfnLogging

type CfnLogging interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The account ID.
	AccountId() *string
	SetAccountId(val *string)
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The default log level.
	//
	// Valid Values: `DEBUG | INFO | ERROR | WARN | DISABLED`.
	DefaultLogLevel() *string
	SetDefaultLogLevel(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The role ARN used for the log.
	RoleArn() *string
	SetRoleArn(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::Logging`.

Configure logging.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLogging := awscdk.Aws_iot.NewCfnLogging(this, jsii.String("MyCfnLogging"), &cfnLoggingProps{
	accountId: jsii.String("accountId"),
	defaultLogLevel: jsii.String("defaultLogLevel"),
	roleArn: jsii.String("roleArn"),
})

func NewCfnLogging

func NewCfnLogging(scope awscdk.Construct, id *string, props *CfnLoggingProps) CfnLogging

Create a new `AWS::IoT::Logging`.

type CfnLoggingProps

type CfnLoggingProps struct {
	// The account ID.
	AccountId *string `field:"required" json:"accountId" yaml:"accountId"`
	// The default log level.
	//
	// Valid Values: `DEBUG | INFO | ERROR | WARN | DISABLED`.
	DefaultLogLevel *string `field:"required" json:"defaultLogLevel" yaml:"defaultLogLevel"`
	// The role ARN used for the log.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
}

Properties for defining a `CfnLogging`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnLoggingProps := &cfnLoggingProps{
	accountId: jsii.String("accountId"),
	defaultLogLevel: jsii.String("defaultLogLevel"),
	roleArn: jsii.String("roleArn"),
}

type CfnMitigationAction

type CfnMitigationAction interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The friendly name of the mitigation action.
	ActionName() *string
	SetActionName(val *string)
	// The set of parameters for this mitigation action.
	//
	// The parameters vary, depending on the kind of action you apply.
	ActionParams() interface{}
	SetActionParams(val interface{})
	// The Amazon Resource Name (ARN) of the mitigation action.
	AttrMitigationActionArn() *string
	// The ID of the mitigation action.
	AttrMitigationActionId() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The IAM role ARN used to apply this mitigation action.
	RoleArn() *string
	SetRoleArn(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Metadata that can be used to manage the mitigation action.
	Tags() awscdk.TagManager
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::MitigationAction`.

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) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnMitigationAction := awscdk.Aws_iot.NewCfnMitigationAction(this, jsii.String("MyCfnMitigationAction"), &cfnMitigationActionProps{
	actionParams: &actionParamsProperty{
		addThingsToThingGroupParams: &addThingsToThingGroupParamsProperty{
			thingGroupNames: []*string{
				jsii.String("thingGroupNames"),
			},

			// the properties below are optional
			overrideDynamicGroups: jsii.Boolean(false),
		},
		enableIoTLoggingParams: &enableIoTLoggingParamsProperty{
			logLevel: jsii.String("logLevel"),
			roleArnForLogging: jsii.String("roleArnForLogging"),
		},
		publishFindingToSnsParams: &publishFindingToSnsParamsProperty{
			topicArn: jsii.String("topicArn"),
		},
		replaceDefaultPolicyVersionParams: &replaceDefaultPolicyVersionParamsProperty{
			templateName: jsii.String("templateName"),
		},
		updateCaCertificateParams: &updateCACertificateParamsProperty{
			action: jsii.String("action"),
		},
		updateDeviceCertificateParams: &updateDeviceCertificateParamsProperty{
			action: jsii.String("action"),
		},
	},
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	actionName: jsii.String("actionName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnMitigationAction

func NewCfnMitigationAction(scope awscdk.Construct, id *string, props *CfnMitigationActionProps) CfnMitigationAction

Create a new `AWS::IoT::MitigationAction`.

type CfnMitigationActionProps

type CfnMitigationActionProps struct {
	// The set of parameters for this mitigation action.
	//
	// The parameters vary, depending on the kind of action you apply.
	ActionParams interface{} `field:"required" json:"actionParams" yaml:"actionParams"`
	// The IAM role ARN used to apply this mitigation action.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The friendly name of the mitigation action.
	ActionName *string `field:"optional" json:"actionName" yaml:"actionName"`
	// Metadata that can be used to manage the mitigation action.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnMitigationAction`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnMitigationActionProps := &cfnMitigationActionProps{
	actionParams: &actionParamsProperty{
		addThingsToThingGroupParams: &addThingsToThingGroupParamsProperty{
			thingGroupNames: []*string{
				jsii.String("thingGroupNames"),
			},

			// the properties below are optional
			overrideDynamicGroups: jsii.Boolean(false),
		},
		enableIoTLoggingParams: &enableIoTLoggingParamsProperty{
			logLevel: jsii.String("logLevel"),
			roleArnForLogging: jsii.String("roleArnForLogging"),
		},
		publishFindingToSnsParams: &publishFindingToSnsParamsProperty{
			topicArn: jsii.String("topicArn"),
		},
		replaceDefaultPolicyVersionParams: &replaceDefaultPolicyVersionParamsProperty{
			templateName: jsii.String("templateName"),
		},
		updateCaCertificateParams: &updateCACertificateParamsProperty{
			action: jsii.String("action"),
		},
		updateDeviceCertificateParams: &updateDeviceCertificateParamsProperty{
			action: jsii.String("action"),
		},
	},
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	actionName: jsii.String("actionName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnMitigationAction_ActionParamsProperty

type CfnMitigationAction_ActionParamsProperty struct {
	// Specifies the group to which you want to add the devices.
	AddThingsToThingGroupParams interface{} `field:"optional" json:"addThingsToThingGroupParams" yaml:"addThingsToThingGroupParams"`
	// Specifies the logging level and the role with permissions for logging.
	//
	// You cannot specify a logging level of `DISABLED` .
	EnableIoTLoggingParams interface{} `field:"optional" json:"enableIoTLoggingParams" yaml:"enableIoTLoggingParams"`
	// Specifies the topic to which the finding should be published.
	PublishFindingToSnsParams interface{} `field:"optional" json:"publishFindingToSnsParams" yaml:"publishFindingToSnsParams"`
	// Replaces the policy version with a default or blank policy.
	//
	// You specify the template name. Only a value of `BLANK_POLICY` is currently supported.
	ReplaceDefaultPolicyVersionParams interface{} `field:"optional" json:"replaceDefaultPolicyVersionParams" yaml:"replaceDefaultPolicyVersionParams"`
	// Specifies the new state for the CA certificate.
	//
	// Only a value of `DEACTIVATE` is currently supported.
	UpdateCaCertificateParams interface{} `field:"optional" json:"updateCaCertificateParams" yaml:"updateCaCertificateParams"`
	// Specifies the new state for a device certificate.
	//
	// Only a value of `DEACTIVATE` is currently supported.
	UpdateDeviceCertificateParams interface{} `field:"optional" json:"updateDeviceCertificateParams" yaml:"updateDeviceCertificateParams"`
}

Defines the type of action and the parameters for that action.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

actionParamsProperty := &actionParamsProperty{
	addThingsToThingGroupParams: &addThingsToThingGroupParamsProperty{
		thingGroupNames: []*string{
			jsii.String("thingGroupNames"),
		},

		// the properties below are optional
		overrideDynamicGroups: jsii.Boolean(false),
	},
	enableIoTLoggingParams: &enableIoTLoggingParamsProperty{
		logLevel: jsii.String("logLevel"),
		roleArnForLogging: jsii.String("roleArnForLogging"),
	},
	publishFindingToSnsParams: &publishFindingToSnsParamsProperty{
		topicArn: jsii.String("topicArn"),
	},
	replaceDefaultPolicyVersionParams: &replaceDefaultPolicyVersionParamsProperty{
		templateName: jsii.String("templateName"),
	},
	updateCaCertificateParams: &updateCACertificateParamsProperty{
		action: jsii.String("action"),
	},
	updateDeviceCertificateParams: &updateDeviceCertificateParamsProperty{
		action: jsii.String("action"),
	},
}

type CfnMitigationAction_AddThingsToThingGroupParamsProperty

type CfnMitigationAction_AddThingsToThingGroupParamsProperty struct {
	// 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.
	ThingGroupNames *[]*string `field:"required" json:"thingGroupNames" yaml:"thingGroupNames"`
	// 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.
	OverrideDynamicGroups interface{} `field:"optional" json:"overrideDynamicGroups" yaml:"overrideDynamicGroups"`
}

Parameters used when defining a mitigation action that move a set of things to a thing group.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

addThingsToThingGroupParamsProperty := &addThingsToThingGroupParamsProperty{
	thingGroupNames: []*string{
		jsii.String("thingGroupNames"),
	},

	// the properties below are optional
	overrideDynamicGroups: jsii.Boolean(false),
}

type CfnMitigationAction_EnableIoTLoggingParamsProperty

type CfnMitigationAction_EnableIoTLoggingParamsProperty struct {
	// Specifies the type of information to be logged.
	LogLevel *string `field:"required" json:"logLevel" yaml:"logLevel"`
	// The Amazon Resource Name (ARN) of the IAM role used for logging.
	RoleArnForLogging *string `field:"required" json:"roleArnForLogging" yaml:"roleArnForLogging"`
}

Parameters used when defining a mitigation action that enable AWS IoT Core logging.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

enableIoTLoggingParamsProperty := &enableIoTLoggingParamsProperty{
	logLevel: jsii.String("logLevel"),
	roleArnForLogging: jsii.String("roleArnForLogging"),
}

type CfnMitigationAction_PublishFindingToSnsParamsProperty

type CfnMitigationAction_PublishFindingToSnsParamsProperty struct {
	// The ARN of the topic to which you want to publish the findings.
	TopicArn *string `field:"required" json:"topicArn" yaml:"topicArn"`
}

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

publishFindingToSnsParamsProperty := &publishFindingToSnsParamsProperty{
	topicArn: jsii.String("topicArn"),
}

type CfnMitigationAction_ReplaceDefaultPolicyVersionParamsProperty

type CfnMitigationAction_ReplaceDefaultPolicyVersionParamsProperty struct {
	// The name of the template to be applied.
	//
	// The only supported value is `BLANK_POLICY` .
	TemplateName *string `field:"required" json:"templateName" yaml:"templateName"`
}

Parameters to define a mitigation action that adds a blank policy to restrict permissions.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

replaceDefaultPolicyVersionParamsProperty := &replaceDefaultPolicyVersionParamsProperty{
	templateName: jsii.String("templateName"),
}

type CfnMitigationAction_UpdateCACertificateParamsProperty

type CfnMitigationAction_UpdateCACertificateParamsProperty struct {
	// The action that you want to apply to the CA certificate.
	//
	// The only supported value is `DEACTIVATE` .
	Action *string `field:"required" json:"action" yaml:"action"`
}

Parameters to define a mitigation action that changes the state of the CA certificate to inactive.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

updateCACertificateParamsProperty := &updateCACertificateParamsProperty{
	action: jsii.String("action"),
}

type CfnMitigationAction_UpdateDeviceCertificateParamsProperty

type CfnMitigationAction_UpdateDeviceCertificateParamsProperty struct {
	// The action that you want to apply to the device certificate.
	//
	// The only supported value is `DEACTIVATE` .
	Action *string `field:"required" json:"action" yaml:"action"`
}

Parameters to define a mitigation action that changes the state of the device certificate to inactive.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

updateDeviceCertificateParamsProperty := &updateDeviceCertificateParamsProperty{
	action: jsii.String("action"),
}

type CfnPolicy

type CfnPolicy interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) of the AWS IoT policy, such as `arn:aws:iot:us-east-2:123456789012:policy/MyPolicy` .
	AttrArn() *string
	// The name of this policy.
	AttrId() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// The JSON document that describes the policy.
	PolicyDocument() interface{}
	SetPolicyDocument(val interface{})
	// The policy name.
	PolicyName() *string
	SetPolicyName(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::Policy`.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var policyDocument interface{}

cfnPolicy := awscdk.Aws_iot.NewCfnPolicy(this, jsii.String("MyCfnPolicy"), &cfnPolicyProps{
	policyDocument: policyDocument,

	// the properties below are optional
	policyName: jsii.String("policyName"),
})

func NewCfnPolicy

func NewCfnPolicy(scope awscdk.Construct, id *string, props *CfnPolicyProps) CfnPolicy

Create a new `AWS::IoT::Policy`.

type CfnPolicyPrincipalAttachment

type CfnPolicyPrincipalAttachment interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// The name of the AWS IoT policy.
	PolicyName() *string
	SetPolicyName(val *string)
	// The principal, which can be a certificate ARN (as returned from the `CreateCertificate` operation) or an Amazon Cognito ID.
	Principal() *string
	SetPrincipal(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::PolicyPrincipalAttachment`.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnPolicyPrincipalAttachment := awscdk.Aws_iot.NewCfnPolicyPrincipalAttachment(this, jsii.String("MyCfnPolicyPrincipalAttachment"), &cfnPolicyPrincipalAttachmentProps{
	policyName: jsii.String("policyName"),
	principal: jsii.String("principal"),
})

func NewCfnPolicyPrincipalAttachment

func NewCfnPolicyPrincipalAttachment(scope awscdk.Construct, id *string, props *CfnPolicyPrincipalAttachmentProps) CfnPolicyPrincipalAttachment

Create a new `AWS::IoT::PolicyPrincipalAttachment`.

type CfnPolicyPrincipalAttachmentProps

type CfnPolicyPrincipalAttachmentProps struct {
	// The name of the AWS IoT policy.
	PolicyName *string `field:"required" json:"policyName" yaml:"policyName"`
	// The principal, which can be a certificate ARN (as returned from the `CreateCertificate` operation) or an Amazon Cognito ID.
	Principal *string `field:"required" json:"principal" yaml:"principal"`
}

Properties for defining a `CfnPolicyPrincipalAttachment`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnPolicyPrincipalAttachmentProps := &cfnPolicyPrincipalAttachmentProps{
	policyName: jsii.String("policyName"),
	principal: jsii.String("principal"),
}

type CfnPolicyProps

type CfnPolicyProps struct {
	// The JSON document that describes the policy.
	PolicyDocument interface{} `field:"required" json:"policyDocument" yaml:"policyDocument"`
	// The policy name.
	PolicyName *string `field:"optional" json:"policyName" yaml:"policyName"`
}

Properties for defining a `CfnPolicy`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

var policyDocument interface{}

cfnPolicyProps := &cfnPolicyProps{
	policyDocument: policyDocument,

	// the properties below are optional
	policyName: jsii.String("policyName"),
}

type CfnProvisioningTemplate

type CfnProvisioningTemplate interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The ARN that identifies the provisioning template.
	AttrTemplateArn() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The description of the fleet provisioning template.
	Description() *string
	SetDescription(val *string)
	// True to enable the fleet provisioning template, otherwise false.
	Enabled() interface{}
	SetEnabled(val interface{})
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Creates a pre-provisioning hook template.
	PreProvisioningHook() interface{}
	SetPreProvisioningHook(val interface{})
	// The role ARN for the role associated with the fleet provisioning template.
	//
	// This IoT role grants permission to provision a device.
	ProvisioningRoleArn() *string
	SetProvisioningRoleArn(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Metadata that can be used to manage the fleet provisioning template.
	Tags() awscdk.TagManager
	// The JSON formatted contents of the fleet provisioning template version.
	TemplateBody() *string
	SetTemplateBody(val *string)
	// The name of the fleet provisioning template.
	TemplateName() *string
	SetTemplateName(val *string)
	// The type of the provisioning template.
	TemplateType() *string
	SetTemplateType(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::ProvisioningTemplate`.

Creates a fleet provisioning template.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnProvisioningTemplate := awscdk.Aws_iot.NewCfnProvisioningTemplate(this, jsii.String("MyCfnProvisioningTemplate"), &cfnProvisioningTemplateProps{
	provisioningRoleArn: jsii.String("provisioningRoleArn"),
	templateBody: jsii.String("templateBody"),

	// the properties below are optional
	description: jsii.String("description"),
	enabled: jsii.Boolean(false),
	preProvisioningHook: &provisioningHookProperty{
		payloadVersion: jsii.String("payloadVersion"),
		targetArn: jsii.String("targetArn"),
	},
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	templateName: jsii.String("templateName"),
	templateType: jsii.String("templateType"),
})

func NewCfnProvisioningTemplate

func NewCfnProvisioningTemplate(scope awscdk.Construct, id *string, props *CfnProvisioningTemplateProps) CfnProvisioningTemplate

Create a new `AWS::IoT::ProvisioningTemplate`.

type CfnProvisioningTemplateProps

type CfnProvisioningTemplateProps struct {
	// The role ARN for the role associated with the fleet provisioning template.
	//
	// This IoT role grants permission to provision a device.
	ProvisioningRoleArn *string `field:"required" json:"provisioningRoleArn" yaml:"provisioningRoleArn"`
	// The JSON formatted contents of the fleet provisioning template version.
	TemplateBody *string `field:"required" json:"templateBody" yaml:"templateBody"`
	// The description of the fleet provisioning template.
	Description *string `field:"optional" json:"description" yaml:"description"`
	// True to enable the fleet provisioning template, otherwise false.
	Enabled interface{} `field:"optional" json:"enabled" yaml:"enabled"`
	// Creates a pre-provisioning hook template.
	PreProvisioningHook interface{} `field:"optional" json:"preProvisioningHook" yaml:"preProvisioningHook"`
	// Metadata that can be used to manage the fleet provisioning template.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The name of the fleet provisioning template.
	TemplateName *string `field:"optional" json:"templateName" yaml:"templateName"`
	// The type of the provisioning template.
	TemplateType *string `field:"optional" json:"templateType" yaml:"templateType"`
}

Properties for defining a `CfnProvisioningTemplate`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnProvisioningTemplateProps := &cfnProvisioningTemplateProps{
	provisioningRoleArn: jsii.String("provisioningRoleArn"),
	templateBody: jsii.String("templateBody"),

	// the properties below are optional
	description: jsii.String("description"),
	enabled: jsii.Boolean(false),
	preProvisioningHook: &provisioningHookProperty{
		payloadVersion: jsii.String("payloadVersion"),
		targetArn: jsii.String("targetArn"),
	},
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	templateName: jsii.String("templateName"),
	templateType: jsii.String("templateType"),
}

type CfnProvisioningTemplate_ProvisioningHookProperty

type CfnProvisioningTemplate_ProvisioningHookProperty struct {
	// The payload that was sent to the target function.
	//
	// The valid payload is `"2020-04-01"` .
	PayloadVersion *string `field:"optional" json:"payloadVersion" yaml:"payloadVersion"`
	// The ARN of the target function.
	TargetArn *string `field:"optional" json:"targetArn" yaml:"targetArn"`
}

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

provisioningHookProperty := &provisioningHookProperty{
	payloadVersion: jsii.String("payloadVersion"),
	targetArn: jsii.String("targetArn"),
}

type CfnResourceSpecificLogging

type CfnResourceSpecificLogging interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The target Id.
	AttrTargetId() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The default log level.Valid Values: `DEBUG | INFO | ERROR | WARN | DISABLED`.
	LogLevel() *string
	SetLogLevel(val *string)
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// The target name.
	TargetName() *string
	SetTargetName(val *string)
	// The target type.
	//
	// Valid Values: `DEFAULT | THING_GROUP`.
	TargetType() *string
	SetTargetType(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::ResourceSpecificLogging`.

Configure resource-specific logging.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnResourceSpecificLogging := awscdk.Aws_iot.NewCfnResourceSpecificLogging(this, jsii.String("MyCfnResourceSpecificLogging"), &cfnResourceSpecificLoggingProps{
	logLevel: jsii.String("logLevel"),
	targetName: jsii.String("targetName"),
	targetType: jsii.String("targetType"),
})

func NewCfnResourceSpecificLogging

func NewCfnResourceSpecificLogging(scope awscdk.Construct, id *string, props *CfnResourceSpecificLoggingProps) CfnResourceSpecificLogging

Create a new `AWS::IoT::ResourceSpecificLogging`.

type CfnResourceSpecificLoggingProps

type CfnResourceSpecificLoggingProps struct {
	// The default log level.Valid Values: `DEBUG | INFO | ERROR | WARN | DISABLED`.
	LogLevel *string `field:"required" json:"logLevel" yaml:"logLevel"`
	// The target name.
	TargetName *string `field:"required" json:"targetName" yaml:"targetName"`
	// The target type.
	//
	// Valid Values: `DEFAULT | THING_GROUP`.
	TargetType *string `field:"required" json:"targetType" yaml:"targetType"`
}

Properties for defining a `CfnResourceSpecificLogging`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnResourceSpecificLoggingProps := &cfnResourceSpecificLoggingProps{
	logLevel: jsii.String("logLevel"),
	targetName: jsii.String("targetName"),
	targetType: jsii.String("targetType"),
}

type CfnRoleAlias

type CfnRoleAlias interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The role alias ARN.
	AttrRoleAliasArn() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The number of seconds for which the credential is valid.
	CredentialDurationSeconds() *float64
	SetCredentialDurationSeconds(val *float64)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The role alias.
	RoleAlias() *string
	SetRoleAlias(val *string)
	// The role ARN.
	RoleArn() *string
	SetRoleArn(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// 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) .
	Tags() awscdk.TagManager
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::RoleAlias`.

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnRoleAlias := awscdk.Aws_iot.NewCfnRoleAlias(this, jsii.String("MyCfnRoleAlias"), &cfnRoleAliasProps{
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	credentialDurationSeconds: jsii.Number(123),
	roleAlias: jsii.String("roleAlias"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnRoleAlias

func NewCfnRoleAlias(scope awscdk.Construct, id *string, props *CfnRoleAliasProps) CfnRoleAlias

Create a new `AWS::IoT::RoleAlias`.

type CfnRoleAliasProps

type CfnRoleAliasProps struct {
	// The role ARN.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The number of seconds for which the credential is valid.
	CredentialDurationSeconds *float64 `field:"optional" json:"credentialDurationSeconds" yaml:"credentialDurationSeconds"`
	// The role alias.
	RoleAlias *string `field:"optional" json:"roleAlias" yaml:"roleAlias"`
	// 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) .
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnRoleAlias`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnRoleAliasProps := &cfnRoleAliasProps{
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	credentialDurationSeconds: jsii.Number(123),
	roleAlias: jsii.String("roleAlias"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnScheduledAudit

type CfnScheduledAudit interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The ARN of the scheduled audit.
	AttrScheduledAuditArn() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// 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.
	DayOfMonth() *string
	SetDayOfMonth(val *string)
	// The day of the week on which the scheduled audit is run (if the `frequency` is "WEEKLY" or "BIWEEKLY").
	DayOfWeek() *string
	SetDayOfWeek(val *string)
	// How often the scheduled audit occurs.
	Frequency() *string
	SetFrequency(val *string)
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The name of the scheduled audit.
	ScheduledAuditName() *string
	SetScheduledAuditName(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Metadata that can be used to manage the scheduled audit.
	Tags() awscdk.TagManager
	// 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 aviable:
	//
	// - `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`.
	TargetCheckNames() *[]*string
	SetTargetCheckNames(val *[]*string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::ScheduledAudit`.

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) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnScheduledAudit := awscdk.Aws_iot.NewCfnScheduledAudit(this, jsii.String("MyCfnScheduledAudit"), &cfnScheduledAuditProps{
	frequency: jsii.String("frequency"),
	targetCheckNames: []*string{
		jsii.String("targetCheckNames"),
	},

	// the properties below are optional
	dayOfMonth: jsii.String("dayOfMonth"),
	dayOfWeek: jsii.String("dayOfWeek"),
	scheduledAuditName: jsii.String("scheduledAuditName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnScheduledAudit

func NewCfnScheduledAudit(scope awscdk.Construct, id *string, props *CfnScheduledAuditProps) CfnScheduledAudit

Create a new `AWS::IoT::ScheduledAudit`.

type CfnScheduledAuditProps

type CfnScheduledAuditProps struct {
	// How often the scheduled audit occurs.
	Frequency *string `field:"required" json:"frequency" yaml:"frequency"`
	// 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 aviable:
	//
	// - `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`.
	TargetCheckNames *[]*string `field:"required" json:"targetCheckNames" yaml:"targetCheckNames"`
	// 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.
	DayOfMonth *string `field:"optional" json:"dayOfMonth" yaml:"dayOfMonth"`
	// The day of the week on which the scheduled audit is run (if the `frequency` is "WEEKLY" or "BIWEEKLY").
	DayOfWeek *string `field:"optional" json:"dayOfWeek" yaml:"dayOfWeek"`
	// The name of the scheduled audit.
	ScheduledAuditName *string `field:"optional" json:"scheduledAuditName" yaml:"scheduledAuditName"`
	// Metadata that can be used to manage the scheduled audit.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnScheduledAudit`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnScheduledAuditProps := &cfnScheduledAuditProps{
	frequency: jsii.String("frequency"),
	targetCheckNames: []*string{
		jsii.String("targetCheckNames"),
	},

	// the properties below are optional
	dayOfMonth: jsii.String("dayOfMonth"),
	dayOfWeek: jsii.String("dayOfWeek"),
	scheduledAuditName: jsii.String("scheduledAuditName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnSecurityProfile

type CfnSecurityProfile interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// 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.
	AdditionalMetricsToRetainV2() interface{}
	SetAdditionalMetricsToRetainV2(val interface{})
	// 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.
	AlertTargets() interface{}
	SetAlertTargets(val interface{})
	// The Amazon Resource Name (ARN) of the security profile.
	AttrSecurityProfileArn() *string
	// Specifies the behaviors that, when violated by a device (thing), cause an alert.
	Behaviors() interface{}
	SetBehaviors(val interface{})
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// A description of the security profile.
	SecurityProfileDescription() *string
	SetSecurityProfileDescription(val *string)
	// The name you gave to the security profile.
	SecurityProfileName() *string
	SetSecurityProfileName(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// Metadata that can be used to manage the security profile.
	Tags() awscdk.TagManager
	// The ARN of the target (thing group) to which the security profile is attached.
	TargetArns() *[]*string
	SetTargetArns(val *[]*string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::SecurityProfile`.

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) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnSecurityProfile := awscdk.Aws_iot.NewCfnSecurityProfile(this, jsii.String("MyCfnSecurityProfile"), &cfnSecurityProfileProps{
	additionalMetricsToRetainV2: []interface{}{
		&metricToRetainProperty{
			metric: jsii.String("metric"),

			// the properties below are optional
			metricDimension: &metricDimensionProperty{
				dimensionName: jsii.String("dimensionName"),

				// the properties below are optional
				operator: jsii.String("operator"),
			},
		},
	},
	alertTargets: map[string]interface{}{
		"alertTargetsKey": &AlertTargetProperty{
			"alertTargetArn": jsii.String("alertTargetArn"),
			"roleArn": jsii.String("roleArn"),
		},
	},
	behaviors: []interface{}{
		&behaviorProperty{
			name: jsii.String("name"),

			// the properties below are optional
			criteria: &behaviorCriteriaProperty{
				comparisonOperator: jsii.String("comparisonOperator"),
				consecutiveDatapointsToAlarm: jsii.Number(123),
				consecutiveDatapointsToClear: jsii.Number(123),
				durationSeconds: jsii.Number(123),
				mlDetectionConfig: &machineLearningDetectionConfigProperty{
					confidenceLevel: jsii.String("confidenceLevel"),
				},
				statisticalThreshold: &statisticalThresholdProperty{
					statistic: jsii.String("statistic"),
				},
				value: &metricValueProperty{
					cidrs: []*string{
						jsii.String("cidrs"),
					},
					count: jsii.String("count"),
					number: jsii.Number(123),
					numbers: []interface{}{
						jsii.Number(123),
					},
					ports: []interface{}{
						jsii.Number(123),
					},
					strings: []*string{
						jsii.String("strings"),
					},
				},
			},
			metric: jsii.String("metric"),
			metricDimension: &metricDimensionProperty{
				dimensionName: jsii.String("dimensionName"),

				// the properties below are optional
				operator: jsii.String("operator"),
			},
			suppressAlerts: jsii.Boolean(false),
		},
	},
	securityProfileDescription: jsii.String("securityProfileDescription"),
	securityProfileName: jsii.String("securityProfileName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	targetArns: []*string{
		jsii.String("targetArns"),
	},
})

func NewCfnSecurityProfile

func NewCfnSecurityProfile(scope awscdk.Construct, id *string, props *CfnSecurityProfileProps) CfnSecurityProfile

Create a new `AWS::IoT::SecurityProfile`.

type CfnSecurityProfileProps

type CfnSecurityProfileProps struct {
	// 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.
	AdditionalMetricsToRetainV2 interface{} `field:"optional" json:"additionalMetricsToRetainV2" yaml:"additionalMetricsToRetainV2"`
	// 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.
	AlertTargets interface{} `field:"optional" json:"alertTargets" yaml:"alertTargets"`
	// Specifies the behaviors that, when violated by a device (thing), cause an alert.
	Behaviors interface{} `field:"optional" json:"behaviors" yaml:"behaviors"`
	// A description of the security profile.
	SecurityProfileDescription *string `field:"optional" json:"securityProfileDescription" yaml:"securityProfileDescription"`
	// The name you gave to the security profile.
	SecurityProfileName *string `field:"optional" json:"securityProfileName" yaml:"securityProfileName"`
	// Metadata that can be used to manage the security profile.
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
	// The ARN of the target (thing group) to which the security profile is attached.
	TargetArns *[]*string `field:"optional" json:"targetArns" yaml:"targetArns"`
}

Properties for defining a `CfnSecurityProfile`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnSecurityProfileProps := &cfnSecurityProfileProps{
	additionalMetricsToRetainV2: []interface{}{
		&metricToRetainProperty{
			metric: jsii.String("metric"),

			// the properties below are optional
			metricDimension: &metricDimensionProperty{
				dimensionName: jsii.String("dimensionName"),

				// the properties below are optional
				operator: jsii.String("operator"),
			},
		},
	},
	alertTargets: map[string]interface{}{
		"alertTargetsKey": &AlertTargetProperty{
			"alertTargetArn": jsii.String("alertTargetArn"),
			"roleArn": jsii.String("roleArn"),
		},
	},
	behaviors: []interface{}{
		&behaviorProperty{
			name: jsii.String("name"),

			// the properties below are optional
			criteria: &behaviorCriteriaProperty{
				comparisonOperator: jsii.String("comparisonOperator"),
				consecutiveDatapointsToAlarm: jsii.Number(123),
				consecutiveDatapointsToClear: jsii.Number(123),
				durationSeconds: jsii.Number(123),
				mlDetectionConfig: &machineLearningDetectionConfigProperty{
					confidenceLevel: jsii.String("confidenceLevel"),
				},
				statisticalThreshold: &statisticalThresholdProperty{
					statistic: jsii.String("statistic"),
				},
				value: &metricValueProperty{
					cidrs: []*string{
						jsii.String("cidrs"),
					},
					count: jsii.String("count"),
					number: jsii.Number(123),
					numbers: []interface{}{
						jsii.Number(123),
					},
					ports: []interface{}{
						jsii.Number(123),
					},
					strings: []*string{
						jsii.String("strings"),
					},
				},
			},
			metric: jsii.String("metric"),
			metricDimension: &metricDimensionProperty{
				dimensionName: jsii.String("dimensionName"),

				// the properties below are optional
				operator: jsii.String("operator"),
			},
			suppressAlerts: jsii.Boolean(false),
		},
	},
	securityProfileDescription: jsii.String("securityProfileDescription"),
	securityProfileName: jsii.String("securityProfileName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
	targetArns: []*string{
		jsii.String("targetArns"),
	},
}

type CfnSecurityProfile_AlertTargetProperty

type CfnSecurityProfile_AlertTargetProperty struct {
	// The Amazon Resource Name (ARN) of the notification target to which alerts are sent.
	AlertTargetArn *string `field:"required" json:"alertTargetArn" yaml:"alertTargetArn"`
	// The ARN of the role that grants permission to send alerts to the notification target.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
}

A structure containing the alert target ARN and the role ARN.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

alertTargetProperty := &alertTargetProperty{
	alertTargetArn: jsii.String("alertTargetArn"),
	roleArn: jsii.String("roleArn"),
}

type CfnSecurityProfile_BehaviorCriteriaProperty

type CfnSecurityProfile_BehaviorCriteriaProperty struct {
	// 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`.
	ComparisonOperator *string `field:"optional" json:"comparisonOperator" yaml:"comparisonOperator"`
	// 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.
	ConsecutiveDatapointsToAlarm *float64 `field:"optional" json:"consecutiveDatapointsToAlarm" yaml:"consecutiveDatapointsToAlarm"`
	// 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.
	ConsecutiveDatapointsToClear *float64 `field:"optional" json:"consecutiveDatapointsToClear" yaml:"consecutiveDatapointsToClear"`
	// 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.
	DurationSeconds *float64 `field:"optional" json:"durationSeconds" yaml:"durationSeconds"`
	// The confidence level of the detection model.
	MlDetectionConfig interface{} `field:"optional" json:"mlDetectionConfig" yaml:"mlDetectionConfig"`
	// 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.
	StatisticalThreshold interface{} `field:"optional" json:"statisticalThreshold" yaml:"statisticalThreshold"`
	// The value to be compared with the `metric` .
	Value interface{} `field:"optional" json:"value" yaml:"value"`
}

The criteria by which the behavior is determined to be normal.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

behaviorCriteriaProperty := &behaviorCriteriaProperty{
	comparisonOperator: jsii.String("comparisonOperator"),
	consecutiveDatapointsToAlarm: jsii.Number(123),
	consecutiveDatapointsToClear: jsii.Number(123),
	durationSeconds: jsii.Number(123),
	mlDetectionConfig: &machineLearningDetectionConfigProperty{
		confidenceLevel: jsii.String("confidenceLevel"),
	},
	statisticalThreshold: &statisticalThresholdProperty{
		statistic: jsii.String("statistic"),
	},
	value: &metricValueProperty{
		cidrs: []*string{
			jsii.String("cidrs"),
		},
		count: jsii.String("count"),
		number: jsii.Number(123),
		numbers: []interface{}{
			jsii.Number(123),
		},
		ports: []interface{}{
			jsii.Number(123),
		},
		strings: []*string{
			jsii.String("strings"),
		},
	},
}

type CfnSecurityProfile_BehaviorProperty

type CfnSecurityProfile_BehaviorProperty struct {
	// The name you've given to the behavior.
	Name *string `field:"required" json:"name" yaml:"name"`
	// The criteria that determine if a device is behaving normally in regard to the `metric` .
	Criteria interface{} `field:"optional" json:"criteria" yaml:"criteria"`
	// What is measured by the behavior.
	Metric *string `field:"optional" json:"metric" yaml:"metric"`
	// The dimension of the metric.
	MetricDimension interface{} `field:"optional" json:"metricDimension" yaml:"metricDimension"`
	// The alert status.
	//
	// If you set the value to `true` , alerts will be suppressed.
	SuppressAlerts interface{} `field:"optional" json:"suppressAlerts" yaml:"suppressAlerts"`
}

A Device Defender security profile behavior.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

behaviorProperty := &behaviorProperty{
	name: jsii.String("name"),

	// the properties below are optional
	criteria: &behaviorCriteriaProperty{
		comparisonOperator: jsii.String("comparisonOperator"),
		consecutiveDatapointsToAlarm: jsii.Number(123),
		consecutiveDatapointsToClear: jsii.Number(123),
		durationSeconds: jsii.Number(123),
		mlDetectionConfig: &machineLearningDetectionConfigProperty{
			confidenceLevel: jsii.String("confidenceLevel"),
		},
		statisticalThreshold: &statisticalThresholdProperty{
			statistic: jsii.String("statistic"),
		},
		value: &metricValueProperty{
			cidrs: []*string{
				jsii.String("cidrs"),
			},
			count: jsii.String("count"),
			number: jsii.Number(123),
			numbers: []interface{}{
				jsii.Number(123),
			},
			ports: []interface{}{
				jsii.Number(123),
			},
			strings: []*string{
				jsii.String("strings"),
			},
		},
	},
	metric: jsii.String("metric"),
	metricDimension: &metricDimensionProperty{
		dimensionName: jsii.String("dimensionName"),

		// the properties below are optional
		operator: jsii.String("operator"),
	},
	suppressAlerts: jsii.Boolean(false),
}

type CfnSecurityProfile_MachineLearningDetectionConfigProperty

type CfnSecurityProfile_MachineLearningDetectionConfigProperty struct {
	// 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.
	ConfidenceLevel *string `field:"optional" json:"confidenceLevel" yaml:"confidenceLevel"`
}

The `MachineLearningDetectionConfig` property type controls confidence of the machine learning model.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

machineLearningDetectionConfigProperty := &machineLearningDetectionConfigProperty{
	confidenceLevel: jsii.String("confidenceLevel"),
}

type CfnSecurityProfile_MetricDimensionProperty

type CfnSecurityProfile_MetricDimensionProperty struct {
	// The name of the dimension.
	DimensionName *string `field:"required" json:"dimensionName" yaml:"dimensionName"`
	// Operators are constructs that perform logical operations.
	//
	// Valid values are `IN` and `NOT_IN` .
	Operator *string `field:"optional" json:"operator" yaml:"operator"`
}

The dimension of the metric.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

metricDimensionProperty := &metricDimensionProperty{
	dimensionName: jsii.String("dimensionName"),

	// the properties below are optional
	operator: jsii.String("operator"),
}

type CfnSecurityProfile_MetricToRetainProperty

type CfnSecurityProfile_MetricToRetainProperty struct {
	// A standard of measurement.
	Metric *string `field:"required" json:"metric" yaml:"metric"`
	// The dimension of the metric.
	MetricDimension interface{} `field:"optional" json:"metricDimension" yaml:"metricDimension"`
}

The metric you want to retain.

Dimensions are optional.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

metricToRetainProperty := &metricToRetainProperty{
	metric: jsii.String("metric"),

	// the properties below are optional
	metricDimension: &metricDimensionProperty{
		dimensionName: jsii.String("dimensionName"),

		// the properties below are optional
		operator: jsii.String("operator"),
	},
}

type CfnSecurityProfile_MetricValueProperty

type CfnSecurityProfile_MetricValueProperty struct {
	// If the `comparisonOperator` calls for a set of CIDRs, use this to specify that set to be compared with the `metric` .
	Cidrs *[]*string `field:"optional" json:"cidrs" yaml:"cidrs"`
	// If the `comparisonOperator` calls for a numeric value, use this to specify that numeric value to be compared with the `metric` .
	Count *string `field:"optional" json:"count" yaml:"count"`
	// The numeric values of a metric.
	Number *float64 `field:"optional" json:"number" yaml:"number"`
	// The numeric value of a metric.
	Numbers interface{} `field:"optional" json:"numbers" yaml:"numbers"`
	// If the `comparisonOperator` calls for a set of ports, use this to specify that set to be compared with the `metric` .
	Ports interface{} `field:"optional" json:"ports" yaml:"ports"`
	// The string values of a metric.
	Strings *[]*string `field:"optional" json:"strings" yaml:"strings"`
}

The value to be compared with the `metric` .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

metricValueProperty := &metricValueProperty{
	cidrs: []*string{
		jsii.String("cidrs"),
	},
	count: jsii.String("count"),
	number: jsii.Number(123),
	numbers: []interface{}{
		jsii.Number(123),
	},
	ports: []interface{}{
		jsii.Number(123),
	},
	strings: []*string{
		jsii.String("strings"),
	},
}

type CfnSecurityProfile_StatisticalThresholdProperty

type CfnSecurityProfile_StatisticalThresholdProperty struct {
	// 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.
	Statistic *string `field:"optional" json:"statistic" yaml:"statistic"`
}

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

statisticalThresholdProperty := &statisticalThresholdProperty{
	statistic: jsii.String("statistic"),
}

type CfnThing

type CfnThing interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// A string that contains up to three key value pairs.
	//
	// Maximum length of 800. Duplicates not allowed.
	AttributePayload() interface{}
	SetAttributePayload(val interface{})
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// 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.
	ThingName() *string
	SetThingName(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::Thing`.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnThing := awscdk.Aws_iot.NewCfnThing(this, jsii.String("MyCfnThing"), &cfnThingProps{
	attributePayload: &attributePayloadProperty{
		attributes: map[string]*string{
			"attributesKey": jsii.String("attributes"),
		},
	},
	thingName: jsii.String("thingName"),
})

func NewCfnThing

func NewCfnThing(scope awscdk.Construct, id *string, props *CfnThingProps) CfnThing

Create a new `AWS::IoT::Thing`.

type CfnThingPrincipalAttachment

type CfnThingPrincipalAttachment interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// The principal, which can be a certificate ARN (as returned from the `CreateCertificate` operation) or an Amazon Cognito ID.
	Principal() *string
	SetPrincipal(val *string)
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// The name of the AWS IoT thing.
	ThingName() *string
	SetThingName(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::ThingPrincipalAttachment`.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnThingPrincipalAttachment := awscdk.Aws_iot.NewCfnThingPrincipalAttachment(this, jsii.String("MyCfnThingPrincipalAttachment"), &cfnThingPrincipalAttachmentProps{
	principal: jsii.String("principal"),
	thingName: jsii.String("thingName"),
})

func NewCfnThingPrincipalAttachment

func NewCfnThingPrincipalAttachment(scope awscdk.Construct, id *string, props *CfnThingPrincipalAttachmentProps) CfnThingPrincipalAttachment

Create a new `AWS::IoT::ThingPrincipalAttachment`.

type CfnThingPrincipalAttachmentProps

type CfnThingPrincipalAttachmentProps struct {
	// The principal, which can be a certificate ARN (as returned from the `CreateCertificate` operation) or an Amazon Cognito ID.
	Principal *string `field:"required" json:"principal" yaml:"principal"`
	// The name of the AWS IoT thing.
	ThingName *string `field:"required" json:"thingName" yaml:"thingName"`
}

Properties for defining a `CfnThingPrincipalAttachment`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnThingPrincipalAttachmentProps := &cfnThingPrincipalAttachmentProps{
	principal: jsii.String("principal"),
	thingName: jsii.String("thingName"),
}

type CfnThingProps

type CfnThingProps struct {
	// A string that contains up to three key value pairs.
	//
	// Maximum length of 800. Duplicates not allowed.
	AttributePayload interface{} `field:"optional" json:"attributePayload" yaml:"attributePayload"`
	// 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.
	ThingName *string `field:"optional" json:"thingName" yaml:"thingName"`
}

Properties for defining a `CfnThing`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnThingProps := &cfnThingProps{
	attributePayload: &attributePayloadProperty{
		attributes: map[string]*string{
			"attributesKey": jsii.String("attributes"),
		},
	},
	thingName: jsii.String("thingName"),
}

type CfnThing_AttributePayloadProperty

type CfnThing_AttributePayloadProperty struct {
	// A JSON string containing up to three key-value pair in JSON format. For example:.
	//
	// `{\"attributes\":{\"string1\":\"string2\"}}`.
	Attributes interface{} `field:"optional" json:"attributes" yaml:"attributes"`
}

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

attributePayloadProperty := &attributePayloadProperty{
	attributes: map[string]*string{
		"attributesKey": jsii.String("attributes"),
	},
}

type CfnTopicRule

type CfnTopicRule interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The Amazon Resource Name (ARN) of the AWS IoT rule, such as `arn:aws:iot:us-east-2:123456789012:rule/MyIoTRule` .
	AttrArn() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The name of the rule.
	RuleName() *string
	SetRuleName(val *string)
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// 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..."
	Tags() awscdk.TagManager
	// The rule payload.
	TopicRulePayload() interface{}
	SetTopicRulePayload(val interface{})
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::TopicRule`.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnTopicRule := awscdk.Aws_iot.NewCfnTopicRule(this, jsii.String("MyCfnTopicRule"), &cfnTopicRuleProps{
	topicRulePayload: &topicRulePayloadProperty{
		actions: []interface{}{
			&actionProperty{
				cloudwatchAlarm: &cloudwatchAlarmActionProperty{
					alarmName: jsii.String("alarmName"),
					roleArn: jsii.String("roleArn"),
					stateReason: jsii.String("stateReason"),
					stateValue: jsii.String("stateValue"),
				},
				cloudwatchLogs: &cloudwatchLogsActionProperty{
					logGroupName: jsii.String("logGroupName"),
					roleArn: jsii.String("roleArn"),
				},
				cloudwatchMetric: &cloudwatchMetricActionProperty{
					metricName: jsii.String("metricName"),
					metricNamespace: jsii.String("metricNamespace"),
					metricUnit: jsii.String("metricUnit"),
					metricValue: jsii.String("metricValue"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					metricTimestamp: jsii.String("metricTimestamp"),
				},
				dynamoDb: &dynamoDBActionProperty{
					hashKeyField: jsii.String("hashKeyField"),
					hashKeyValue: jsii.String("hashKeyValue"),
					roleArn: jsii.String("roleArn"),
					tableName: jsii.String("tableName"),

					// the properties below are optional
					hashKeyType: jsii.String("hashKeyType"),
					payloadField: jsii.String("payloadField"),
					rangeKeyField: jsii.String("rangeKeyField"),
					rangeKeyType: jsii.String("rangeKeyType"),
					rangeKeyValue: jsii.String("rangeKeyValue"),
				},
				dynamoDBv2: &dynamoDBv2ActionProperty{
					putItem: &putItemInputProperty{
						tableName: jsii.String("tableName"),
					},
					roleArn: jsii.String("roleArn"),
				},
				elasticsearch: &elasticsearchActionProperty{
					endpoint: jsii.String("endpoint"),
					id: jsii.String("id"),
					index: jsii.String("index"),
					roleArn: jsii.String("roleArn"),
					type: jsii.String("type"),
				},
				firehose: &firehoseActionProperty{
					deliveryStreamName: jsii.String("deliveryStreamName"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					batchMode: jsii.Boolean(false),
					separator: jsii.String("separator"),
				},
				http: &httpActionProperty{
					url: jsii.String("url"),

					// the properties below are optional
					auth: &httpAuthorizationProperty{
						sigv4: &sigV4AuthorizationProperty{
							roleArn: jsii.String("roleArn"),
							serviceName: jsii.String("serviceName"),
							signingRegion: jsii.String("signingRegion"),
						},
					},
					confirmationUrl: jsii.String("confirmationUrl"),
					headers: []interface{}{
						&httpActionHeaderProperty{
							key: jsii.String("key"),
							value: jsii.String("value"),
						},
					},
				},
				iotAnalytics: &iotAnalyticsActionProperty{
					channelName: jsii.String("channelName"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					batchMode: jsii.Boolean(false),
				},
				iotEvents: &iotEventsActionProperty{
					inputName: jsii.String("inputName"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					batchMode: jsii.Boolean(false),
					messageId: jsii.String("messageId"),
				},
				iotSiteWise: &iotSiteWiseActionProperty{
					putAssetPropertyValueEntries: []interface{}{
						&putAssetPropertyValueEntryProperty{
							propertyValues: []interface{}{
								&assetPropertyValueProperty{
									timestamp: &assetPropertyTimestampProperty{
										timeInSeconds: jsii.String("timeInSeconds"),

										// the properties below are optional
										offsetInNanos: jsii.String("offsetInNanos"),
									},
									value: &assetPropertyVariantProperty{
										booleanValue: jsii.String("booleanValue"),
										doubleValue: jsii.String("doubleValue"),
										integerValue: jsii.String("integerValue"),
										stringValue: jsii.String("stringValue"),
									},

									// the properties below are optional
									quality: jsii.String("quality"),
								},
							},

							// the properties below are optional
							assetId: jsii.String("assetId"),
							entryId: jsii.String("entryId"),
							propertyAlias: jsii.String("propertyAlias"),
							propertyId: jsii.String("propertyId"),
						},
					},
					roleArn: jsii.String("roleArn"),
				},
				kafka: &kafkaActionProperty{
					clientProperties: map[string]*string{
						"clientPropertiesKey": jsii.String("clientProperties"),
					},
					destinationArn: jsii.String("destinationArn"),
					topic: jsii.String("topic"),

					// the properties below are optional
					key: jsii.String("key"),
					partition: jsii.String("partition"),
				},
				kinesis: &kinesisActionProperty{
					roleArn: jsii.String("roleArn"),
					streamName: jsii.String("streamName"),

					// the properties below are optional
					partitionKey: jsii.String("partitionKey"),
				},
				lambda: &lambdaActionProperty{
					functionArn: jsii.String("functionArn"),
				},
				location: &locationActionProperty{
					deviceId: jsii.String("deviceId"),
					latitude: jsii.String("latitude"),
					longitude: jsii.String("longitude"),
					roleArn: jsii.String("roleArn"),
					trackerName: jsii.String("trackerName"),

					// the properties below are optional
					timestamp: NewDate(),
				},
				openSearch: &openSearchActionProperty{
					endpoint: jsii.String("endpoint"),
					id: jsii.String("id"),
					index: jsii.String("index"),
					roleArn: jsii.String("roleArn"),
					type: jsii.String("type"),
				},
				republish: &republishActionProperty{
					roleArn: jsii.String("roleArn"),
					topic: jsii.String("topic"),

					// the properties below are optional
					headers: &republishActionHeadersProperty{
						contentType: jsii.String("contentType"),
						correlationData: jsii.String("correlationData"),
						messageExpiry: jsii.String("messageExpiry"),
						payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
						responseTopic: jsii.String("responseTopic"),
						userProperties: []interface{}{
							&userPropertyProperty{
								key: jsii.String("key"),
								value: jsii.String("value"),
							},
						},
					},
					qos: jsii.Number(123),
				},
				s3: &s3ActionProperty{
					bucketName: jsii.String("bucketName"),
					key: jsii.String("key"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					cannedAcl: jsii.String("cannedAcl"),
				},
				sns: &snsActionProperty{
					roleArn: jsii.String("roleArn"),
					targetArn: jsii.String("targetArn"),

					// the properties below are optional
					messageFormat: jsii.String("messageFormat"),
				},
				sqs: &sqsActionProperty{
					queueUrl: jsii.String("queueUrl"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					useBase64: jsii.Boolean(false),
				},
				stepFunctions: &stepFunctionsActionProperty{
					roleArn: jsii.String("roleArn"),
					stateMachineName: jsii.String("stateMachineName"),

					// the properties below are optional
					executionNamePrefix: jsii.String("executionNamePrefix"),
				},
				timestream: &timestreamActionProperty{
					databaseName: jsii.String("databaseName"),
					dimensions: []interface{}{
						&timestreamDimensionProperty{
							name: jsii.String("name"),
							value: jsii.String("value"),
						},
					},
					roleArn: jsii.String("roleArn"),
					tableName: jsii.String("tableName"),

					// the properties below are optional
					timestamp: &timestreamTimestampProperty{
						unit: jsii.String("unit"),
						value: jsii.String("value"),
					},
				},
			},
		},
		sql: jsii.String("sql"),

		// the properties below are optional
		awsIotSqlVersion: jsii.String("awsIotSqlVersion"),
		description: jsii.String("description"),
		errorAction: &actionProperty{
			cloudwatchAlarm: &cloudwatchAlarmActionProperty{
				alarmName: jsii.String("alarmName"),
				roleArn: jsii.String("roleArn"),
				stateReason: jsii.String("stateReason"),
				stateValue: jsii.String("stateValue"),
			},
			cloudwatchLogs: &cloudwatchLogsActionProperty{
				logGroupName: jsii.String("logGroupName"),
				roleArn: jsii.String("roleArn"),
			},
			cloudwatchMetric: &cloudwatchMetricActionProperty{
				metricName: jsii.String("metricName"),
				metricNamespace: jsii.String("metricNamespace"),
				metricUnit: jsii.String("metricUnit"),
				metricValue: jsii.String("metricValue"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				metricTimestamp: jsii.String("metricTimestamp"),
			},
			dynamoDb: &dynamoDBActionProperty{
				hashKeyField: jsii.String("hashKeyField"),
				hashKeyValue: jsii.String("hashKeyValue"),
				roleArn: jsii.String("roleArn"),
				tableName: jsii.String("tableName"),

				// the properties below are optional
				hashKeyType: jsii.String("hashKeyType"),
				payloadField: jsii.String("payloadField"),
				rangeKeyField: jsii.String("rangeKeyField"),
				rangeKeyType: jsii.String("rangeKeyType"),
				rangeKeyValue: jsii.String("rangeKeyValue"),
			},
			dynamoDBv2: &dynamoDBv2ActionProperty{
				putItem: &putItemInputProperty{
					tableName: jsii.String("tableName"),
				},
				roleArn: jsii.String("roleArn"),
			},
			elasticsearch: &elasticsearchActionProperty{
				endpoint: jsii.String("endpoint"),
				id: jsii.String("id"),
				index: jsii.String("index"),
				roleArn: jsii.String("roleArn"),
				type: jsii.String("type"),
			},
			firehose: &firehoseActionProperty{
				deliveryStreamName: jsii.String("deliveryStreamName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
				separator: jsii.String("separator"),
			},
			http: &httpActionProperty{
				url: jsii.String("url"),

				// the properties below are optional
				auth: &httpAuthorizationProperty{
					sigv4: &sigV4AuthorizationProperty{
						roleArn: jsii.String("roleArn"),
						serviceName: jsii.String("serviceName"),
						signingRegion: jsii.String("signingRegion"),
					},
				},
				confirmationUrl: jsii.String("confirmationUrl"),
				headers: []interface{}{
					&httpActionHeaderProperty{
						key: jsii.String("key"),
						value: jsii.String("value"),
					},
				},
			},
			iotAnalytics: &iotAnalyticsActionProperty{
				channelName: jsii.String("channelName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
			},
			iotEvents: &iotEventsActionProperty{
				inputName: jsii.String("inputName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
				messageId: jsii.String("messageId"),
			},
			iotSiteWise: &iotSiteWiseActionProperty{
				putAssetPropertyValueEntries: []interface{}{
					&putAssetPropertyValueEntryProperty{
						propertyValues: []interface{}{
							&assetPropertyValueProperty{
								timestamp: &assetPropertyTimestampProperty{
									timeInSeconds: jsii.String("timeInSeconds"),

									// the properties below are optional
									offsetInNanos: jsii.String("offsetInNanos"),
								},
								value: &assetPropertyVariantProperty{
									booleanValue: jsii.String("booleanValue"),
									doubleValue: jsii.String("doubleValue"),
									integerValue: jsii.String("integerValue"),
									stringValue: jsii.String("stringValue"),
								},

								// the properties below are optional
								quality: jsii.String("quality"),
							},
						},

						// the properties below are optional
						assetId: jsii.String("assetId"),
						entryId: jsii.String("entryId"),
						propertyAlias: jsii.String("propertyAlias"),
						propertyId: jsii.String("propertyId"),
					},
				},
				roleArn: jsii.String("roleArn"),
			},
			kafka: &kafkaActionProperty{
				clientProperties: map[string]*string{
					"clientPropertiesKey": jsii.String("clientProperties"),
				},
				destinationArn: jsii.String("destinationArn"),
				topic: jsii.String("topic"),

				// the properties below are optional
				key: jsii.String("key"),
				partition: jsii.String("partition"),
			},
			kinesis: &kinesisActionProperty{
				roleArn: jsii.String("roleArn"),
				streamName: jsii.String("streamName"),

				// the properties below are optional
				partitionKey: jsii.String("partitionKey"),
			},
			lambda: &lambdaActionProperty{
				functionArn: jsii.String("functionArn"),
			},
			location: &locationActionProperty{
				deviceId: jsii.String("deviceId"),
				latitude: jsii.String("latitude"),
				longitude: jsii.String("longitude"),
				roleArn: jsii.String("roleArn"),
				trackerName: jsii.String("trackerName"),

				// the properties below are optional
				timestamp: NewDate(),
			},
			openSearch: &openSearchActionProperty{
				endpoint: jsii.String("endpoint"),
				id: jsii.String("id"),
				index: jsii.String("index"),
				roleArn: jsii.String("roleArn"),
				type: jsii.String("type"),
			},
			republish: &republishActionProperty{
				roleArn: jsii.String("roleArn"),
				topic: jsii.String("topic"),

				// the properties below are optional
				headers: &republishActionHeadersProperty{
					contentType: jsii.String("contentType"),
					correlationData: jsii.String("correlationData"),
					messageExpiry: jsii.String("messageExpiry"),
					payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
					responseTopic: jsii.String("responseTopic"),
					userProperties: []interface{}{
						&userPropertyProperty{
							key: jsii.String("key"),
							value: jsii.String("value"),
						},
					},
				},
				qos: jsii.Number(123),
			},
			s3: &s3ActionProperty{
				bucketName: jsii.String("bucketName"),
				key: jsii.String("key"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				cannedAcl: jsii.String("cannedAcl"),
			},
			sns: &snsActionProperty{
				roleArn: jsii.String("roleArn"),
				targetArn: jsii.String("targetArn"),

				// the properties below are optional
				messageFormat: jsii.String("messageFormat"),
			},
			sqs: &sqsActionProperty{
				queueUrl: jsii.String("queueUrl"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				useBase64: jsii.Boolean(false),
			},
			stepFunctions: &stepFunctionsActionProperty{
				roleArn: jsii.String("roleArn"),
				stateMachineName: jsii.String("stateMachineName"),

				// the properties below are optional
				executionNamePrefix: jsii.String("executionNamePrefix"),
			},
			timestream: &timestreamActionProperty{
				databaseName: jsii.String("databaseName"),
				dimensions: []interface{}{
					&timestreamDimensionProperty{
						name: jsii.String("name"),
						value: jsii.String("value"),
					},
				},
				roleArn: jsii.String("roleArn"),
				tableName: jsii.String("tableName"),

				// the properties below are optional
				timestamp: &timestreamTimestampProperty{
					unit: jsii.String("unit"),
					value: jsii.String("value"),
				},
			},
		},
		ruleDisabled: jsii.Boolean(false),
	},

	// the properties below are optional
	ruleName: jsii.String("ruleName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
})

func NewCfnTopicRule

func NewCfnTopicRule(scope awscdk.Construct, id *string, props *CfnTopicRuleProps) CfnTopicRule

Create a new `AWS::IoT::TopicRule`.

type CfnTopicRuleDestination

type CfnTopicRuleDestination interface {
	awscdk.CfnResource
	awscdk.IInspectable
	// The topic rule destination URL.
	AttrArn() *string
	// Additional details or reason why the topic rule destination is in the current status.
	AttrStatusReason() *string
	// Options for this resource, such as condition, update policy etc.
	// Experimental.
	CfnOptions() awscdk.ICfnResourceOptions
	CfnProperties() *map[string]interface{}
	// AWS resource type.
	// Experimental.
	CfnResourceType() *string
	// Returns: the stack trace of the point where this Resource was created from, sourced
	// from the +metadata+ entry typed +aws:cdk:logicalId+, and with the bottom-most
	// node +internal+ entries filtered.
	// Experimental.
	CreationStack() *[]*string
	// Properties of the HTTP URL.
	HttpUrlProperties() interface{}
	SetHttpUrlProperties(val interface{})
	// The logical ID for this CloudFormation stack element.
	//
	// The logical ID of the element
	// is calculated from the path of the resource node in the construct tree.
	//
	// To override this value, use `overrideLogicalId(newLogicalId)`.
	//
	// Returns: the logical ID as a stringified token. This value will only get
	// resolved during synthesis.
	// Experimental.
	LogicalId() *string
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Return a string that will be resolved to a CloudFormation `{ Ref }` for this element.
	//
	// If, by any chance, the intrinsic reference of a resource is not a string, you could
	// coerce it to an IResolvable through `Lazy.any({ produce: resource.ref })`.
	// Experimental.
	Ref() *string
	// The stack in which this element is defined.
	//
	// CfnElements must be defined within a stack scope (directly or indirectly).
	// Experimental.
	Stack() awscdk.Stack
	// - **IN_PROGRESS** - 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.
	Status() *string
	SetStatus(val *string)
	// Return properties modified after initiation.
	//
	// Resources that expose mutable properties should override this function to
	// collect and return the properties object for this resource.
	// Experimental.
	UpdatedProperites() *map[string]interface{}
	// Properties of the virtual private cloud (VPC) connection.
	VpcProperties() interface{}
	SetVpcProperties(val interface{})
	// Syntactic sugar for `addOverride(path, undefined)`.
	// Experimental.
	AddDeletionOverride(path *string)
	// Indicates that this resource depends on another resource and cannot be provisioned unless the other resource has been successfully provisioned.
	//
	// This can be used for resources across stacks (or nested stack) boundaries
	// and the dependency will automatically be transferred to the relevant scope.
	// Experimental.
	AddDependsOn(target awscdk.CfnResource)
	// Add a value to the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	AddMetadata(key *string, value interface{})
	// Adds an override to the synthesized CloudFormation resource.
	//
	// To add a
	// property override, either use `addPropertyOverride` or prefix `path` with
	// "Properties." (i.e. `Properties.TopicName`).
	//
	// If the override is nested, separate each nested level using a dot (.) in the path parameter.
	// If there is an array as part of the nesting, specify the index in the path.
	//
	// To include a literal `.` in the property name, prefix with a `\`. In most
	// programming languages you will need to write this as `"\\."` because the
	// `\` itself will need to be escaped.
	//
	// For example,
	// “`typescript
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.0.Projection.NonKeyAttributes', ['myattribute']);
	// cfnResource.addOverride('Properties.GlobalSecondaryIndexes.1.ProjectionType', 'INCLUDE');
	// “`
	// would add the overrides
	// “`json
	// "Properties": {
	//    "GlobalSecondaryIndexes": [
	//      {
	//        "Projection": {
	//          "NonKeyAttributes": [ "myattribute" ]
	//          ...
	//        }
	//        ...
	//      },
	//      {
	//        "ProjectionType": "INCLUDE"
	//        ...
	//      },
	//    ]
	//    ...
	// }
	// “`
	//
	// The `value` argument to `addOverride` will not be processed or translated
	// in any way. Pass raw JSON values in here with the correct capitalization
	// for CloudFormation. If you pass CDK classes or structs, they will be
	// rendered with lowercased key names, and CloudFormation will reject the
	// template.
	// Experimental.
	AddOverride(path *string, value interface{})
	// Adds an override that deletes the value of a property from the resource definition.
	// Experimental.
	AddPropertyDeletionOverride(propertyPath *string)
	// Adds an override to a resource property.
	//
	// Syntactic sugar for `addOverride("Properties.<...>", value)`.
	// Experimental.
	AddPropertyOverride(propertyPath *string, value interface{})
	// Sets the deletion policy of the resource based on the removal policy specified.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy, options *awscdk.RemovalPolicyOptions)
	// Returns a token for an runtime attribute of this resource.
	//
	// Ideally, use generated attribute accessors (e.g. `resource.arn`), but this can be used for future compatibility
	// in case there is no generated attribute.
	// Experimental.
	GetAtt(attributeName *string) awscdk.Reference
	// Retrieve a value value from the CloudFormation Resource Metadata.
	// See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html
	//
	// Note that this is a different set of metadata from CDK node metadata; this
	// metadata ends up in the stack template under the resource, whereas CDK
	// node metadata ends up in the Cloud Assembly.
	//
	// Experimental.
	GetMetadata(key *string) interface{}
	// Examines the CloudFormation resource and discloses attributes.
	Inspect(inspector awscdk.TreeInspector)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Overrides the auto-generated logical ID with a specific ID.
	// Experimental.
	OverrideLogicalId(newLogicalId *string)
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	RenderProperties(props *map[string]interface{}) *map[string]interface{}
	// Can be overridden by subclasses to determine if this resource will be rendered into the cloudformation template.
	//
	// Returns: `true` if the resource should be included or `false` is the resource
	// should be omitted.
	// Experimental.
	ShouldSynthesize() *bool
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	//
	// Returns: a string representation of this resource.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
	// Experimental.
	ValidateProperties(_properties interface{})
}

A CloudFormation `AWS::IoT::TopicRuleDestination`.

A topic rule destination.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnTopicRuleDestination := awscdk.Aws_iot.NewCfnTopicRuleDestination(this, jsii.String("MyCfnTopicRuleDestination"), &cfnTopicRuleDestinationProps{
	httpUrlProperties: &httpUrlDestinationSummaryProperty{
		confirmationUrl: jsii.String("confirmationUrl"),
	},
	status: jsii.String("status"),
	vpcProperties: &vpcDestinationPropertiesProperty{
		roleArn: jsii.String("roleArn"),
		securityGroups: []*string{
			jsii.String("securityGroups"),
		},
		subnetIds: []*string{
			jsii.String("subnetIds"),
		},
		vpcId: jsii.String("vpcId"),
	},
})

func NewCfnTopicRuleDestination

func NewCfnTopicRuleDestination(scope awscdk.Construct, id *string, props *CfnTopicRuleDestinationProps) CfnTopicRuleDestination

Create a new `AWS::IoT::TopicRuleDestination`.

type CfnTopicRuleDestinationProps

type CfnTopicRuleDestinationProps struct {
	// Properties of the HTTP URL.
	HttpUrlProperties interface{} `field:"optional" json:"httpUrlProperties" yaml:"httpUrlProperties"`
	// - **IN_PROGRESS** - 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.
	Status *string `field:"optional" json:"status" yaml:"status"`
	// Properties of the virtual private cloud (VPC) connection.
	VpcProperties interface{} `field:"optional" json:"vpcProperties" yaml:"vpcProperties"`
}

Properties for defining a `CfnTopicRuleDestination`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnTopicRuleDestinationProps := &cfnTopicRuleDestinationProps{
	httpUrlProperties: &httpUrlDestinationSummaryProperty{
		confirmationUrl: jsii.String("confirmationUrl"),
	},
	status: jsii.String("status"),
	vpcProperties: &vpcDestinationPropertiesProperty{
		roleArn: jsii.String("roleArn"),
		securityGroups: []*string{
			jsii.String("securityGroups"),
		},
		subnetIds: []*string{
			jsii.String("subnetIds"),
		},
		vpcId: jsii.String("vpcId"),
	},
}

type CfnTopicRuleDestination_HttpUrlDestinationSummaryProperty

type CfnTopicRuleDestination_HttpUrlDestinationSummaryProperty struct {
	// The URL used to confirm the HTTP topic rule destination URL.
	ConfirmationUrl *string `field:"optional" json:"confirmationUrl" yaml:"confirmationUrl"`
}

HTTP URL destination properties.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

httpUrlDestinationSummaryProperty := &httpUrlDestinationSummaryProperty{
	confirmationUrl: jsii.String("confirmationUrl"),
}

type CfnTopicRuleDestination_VpcDestinationPropertiesProperty

type CfnTopicRuleDestination_VpcDestinationPropertiesProperty struct {
	// The ARN of a role that has permission to create and attach to elastic network interfaces (ENIs).
	RoleArn *string `field:"optional" json:"roleArn" yaml:"roleArn"`
	// The security groups of the VPC destination.
	SecurityGroups *[]*string `field:"optional" json:"securityGroups" yaml:"securityGroups"`
	// The subnet IDs of the VPC destination.
	SubnetIds *[]*string `field:"optional" json:"subnetIds" yaml:"subnetIds"`
	// The ID of the VPC.
	VpcId *string `field:"optional" json:"vpcId" yaml:"vpcId"`
}

The properties of a virtual private cloud (VPC) destination.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

vpcDestinationPropertiesProperty := &vpcDestinationPropertiesProperty{
	roleArn: jsii.String("roleArn"),
	securityGroups: []*string{
		jsii.String("securityGroups"),
	},
	subnetIds: []*string{
		jsii.String("subnetIds"),
	},
	vpcId: jsii.String("vpcId"),
}

type CfnTopicRuleProps

type CfnTopicRuleProps struct {
	// The rule payload.
	TopicRulePayload interface{} `field:"required" json:"topicRulePayload" yaml:"topicRulePayload"`
	// The name of the rule.
	RuleName *string `field:"optional" json:"ruleName" yaml:"ruleName"`
	// 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..."
	Tags *[]*awscdk.CfnTag `field:"optional" json:"tags" yaml:"tags"`
}

Properties for defining a `CfnTopicRule`.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cfnTopicRuleProps := &cfnTopicRuleProps{
	topicRulePayload: &topicRulePayloadProperty{
		actions: []interface{}{
			&actionProperty{
				cloudwatchAlarm: &cloudwatchAlarmActionProperty{
					alarmName: jsii.String("alarmName"),
					roleArn: jsii.String("roleArn"),
					stateReason: jsii.String("stateReason"),
					stateValue: jsii.String("stateValue"),
				},
				cloudwatchLogs: &cloudwatchLogsActionProperty{
					logGroupName: jsii.String("logGroupName"),
					roleArn: jsii.String("roleArn"),
				},
				cloudwatchMetric: &cloudwatchMetricActionProperty{
					metricName: jsii.String("metricName"),
					metricNamespace: jsii.String("metricNamespace"),
					metricUnit: jsii.String("metricUnit"),
					metricValue: jsii.String("metricValue"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					metricTimestamp: jsii.String("metricTimestamp"),
				},
				dynamoDb: &dynamoDBActionProperty{
					hashKeyField: jsii.String("hashKeyField"),
					hashKeyValue: jsii.String("hashKeyValue"),
					roleArn: jsii.String("roleArn"),
					tableName: jsii.String("tableName"),

					// the properties below are optional
					hashKeyType: jsii.String("hashKeyType"),
					payloadField: jsii.String("payloadField"),
					rangeKeyField: jsii.String("rangeKeyField"),
					rangeKeyType: jsii.String("rangeKeyType"),
					rangeKeyValue: jsii.String("rangeKeyValue"),
				},
				dynamoDBv2: &dynamoDBv2ActionProperty{
					putItem: &putItemInputProperty{
						tableName: jsii.String("tableName"),
					},
					roleArn: jsii.String("roleArn"),
				},
				elasticsearch: &elasticsearchActionProperty{
					endpoint: jsii.String("endpoint"),
					id: jsii.String("id"),
					index: jsii.String("index"),
					roleArn: jsii.String("roleArn"),
					type: jsii.String("type"),
				},
				firehose: &firehoseActionProperty{
					deliveryStreamName: jsii.String("deliveryStreamName"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					batchMode: jsii.Boolean(false),
					separator: jsii.String("separator"),
				},
				http: &httpActionProperty{
					url: jsii.String("url"),

					// the properties below are optional
					auth: &httpAuthorizationProperty{
						sigv4: &sigV4AuthorizationProperty{
							roleArn: jsii.String("roleArn"),
							serviceName: jsii.String("serviceName"),
							signingRegion: jsii.String("signingRegion"),
						},
					},
					confirmationUrl: jsii.String("confirmationUrl"),
					headers: []interface{}{
						&httpActionHeaderProperty{
							key: jsii.String("key"),
							value: jsii.String("value"),
						},
					},
				},
				iotAnalytics: &iotAnalyticsActionProperty{
					channelName: jsii.String("channelName"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					batchMode: jsii.Boolean(false),
				},
				iotEvents: &iotEventsActionProperty{
					inputName: jsii.String("inputName"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					batchMode: jsii.Boolean(false),
					messageId: jsii.String("messageId"),
				},
				iotSiteWise: &iotSiteWiseActionProperty{
					putAssetPropertyValueEntries: []interface{}{
						&putAssetPropertyValueEntryProperty{
							propertyValues: []interface{}{
								&assetPropertyValueProperty{
									timestamp: &assetPropertyTimestampProperty{
										timeInSeconds: jsii.String("timeInSeconds"),

										// the properties below are optional
										offsetInNanos: jsii.String("offsetInNanos"),
									},
									value: &assetPropertyVariantProperty{
										booleanValue: jsii.String("booleanValue"),
										doubleValue: jsii.String("doubleValue"),
										integerValue: jsii.String("integerValue"),
										stringValue: jsii.String("stringValue"),
									},

									// the properties below are optional
									quality: jsii.String("quality"),
								},
							},

							// the properties below are optional
							assetId: jsii.String("assetId"),
							entryId: jsii.String("entryId"),
							propertyAlias: jsii.String("propertyAlias"),
							propertyId: jsii.String("propertyId"),
						},
					},
					roleArn: jsii.String("roleArn"),
				},
				kafka: &kafkaActionProperty{
					clientProperties: map[string]*string{
						"clientPropertiesKey": jsii.String("clientProperties"),
					},
					destinationArn: jsii.String("destinationArn"),
					topic: jsii.String("topic"),

					// the properties below are optional
					key: jsii.String("key"),
					partition: jsii.String("partition"),
				},
				kinesis: &kinesisActionProperty{
					roleArn: jsii.String("roleArn"),
					streamName: jsii.String("streamName"),

					// the properties below are optional
					partitionKey: jsii.String("partitionKey"),
				},
				lambda: &lambdaActionProperty{
					functionArn: jsii.String("functionArn"),
				},
				location: &locationActionProperty{
					deviceId: jsii.String("deviceId"),
					latitude: jsii.String("latitude"),
					longitude: jsii.String("longitude"),
					roleArn: jsii.String("roleArn"),
					trackerName: jsii.String("trackerName"),

					// the properties below are optional
					timestamp: NewDate(),
				},
				openSearch: &openSearchActionProperty{
					endpoint: jsii.String("endpoint"),
					id: jsii.String("id"),
					index: jsii.String("index"),
					roleArn: jsii.String("roleArn"),
					type: jsii.String("type"),
				},
				republish: &republishActionProperty{
					roleArn: jsii.String("roleArn"),
					topic: jsii.String("topic"),

					// the properties below are optional
					headers: &republishActionHeadersProperty{
						contentType: jsii.String("contentType"),
						correlationData: jsii.String("correlationData"),
						messageExpiry: jsii.String("messageExpiry"),
						payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
						responseTopic: jsii.String("responseTopic"),
						userProperties: []interface{}{
							&userPropertyProperty{
								key: jsii.String("key"),
								value: jsii.String("value"),
							},
						},
					},
					qos: jsii.Number(123),
				},
				s3: &s3ActionProperty{
					bucketName: jsii.String("bucketName"),
					key: jsii.String("key"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					cannedAcl: jsii.String("cannedAcl"),
				},
				sns: &snsActionProperty{
					roleArn: jsii.String("roleArn"),
					targetArn: jsii.String("targetArn"),

					// the properties below are optional
					messageFormat: jsii.String("messageFormat"),
				},
				sqs: &sqsActionProperty{
					queueUrl: jsii.String("queueUrl"),
					roleArn: jsii.String("roleArn"),

					// the properties below are optional
					useBase64: jsii.Boolean(false),
				},
				stepFunctions: &stepFunctionsActionProperty{
					roleArn: jsii.String("roleArn"),
					stateMachineName: jsii.String("stateMachineName"),

					// the properties below are optional
					executionNamePrefix: jsii.String("executionNamePrefix"),
				},
				timestream: &timestreamActionProperty{
					databaseName: jsii.String("databaseName"),
					dimensions: []interface{}{
						&timestreamDimensionProperty{
							name: jsii.String("name"),
							value: jsii.String("value"),
						},
					},
					roleArn: jsii.String("roleArn"),
					tableName: jsii.String("tableName"),

					// the properties below are optional
					timestamp: &timestreamTimestampProperty{
						unit: jsii.String("unit"),
						value: jsii.String("value"),
					},
				},
			},
		},
		sql: jsii.String("sql"),

		// the properties below are optional
		awsIotSqlVersion: jsii.String("awsIotSqlVersion"),
		description: jsii.String("description"),
		errorAction: &actionProperty{
			cloudwatchAlarm: &cloudwatchAlarmActionProperty{
				alarmName: jsii.String("alarmName"),
				roleArn: jsii.String("roleArn"),
				stateReason: jsii.String("stateReason"),
				stateValue: jsii.String("stateValue"),
			},
			cloudwatchLogs: &cloudwatchLogsActionProperty{
				logGroupName: jsii.String("logGroupName"),
				roleArn: jsii.String("roleArn"),
			},
			cloudwatchMetric: &cloudwatchMetricActionProperty{
				metricName: jsii.String("metricName"),
				metricNamespace: jsii.String("metricNamespace"),
				metricUnit: jsii.String("metricUnit"),
				metricValue: jsii.String("metricValue"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				metricTimestamp: jsii.String("metricTimestamp"),
			},
			dynamoDb: &dynamoDBActionProperty{
				hashKeyField: jsii.String("hashKeyField"),
				hashKeyValue: jsii.String("hashKeyValue"),
				roleArn: jsii.String("roleArn"),
				tableName: jsii.String("tableName"),

				// the properties below are optional
				hashKeyType: jsii.String("hashKeyType"),
				payloadField: jsii.String("payloadField"),
				rangeKeyField: jsii.String("rangeKeyField"),
				rangeKeyType: jsii.String("rangeKeyType"),
				rangeKeyValue: jsii.String("rangeKeyValue"),
			},
			dynamoDBv2: &dynamoDBv2ActionProperty{
				putItem: &putItemInputProperty{
					tableName: jsii.String("tableName"),
				},
				roleArn: jsii.String("roleArn"),
			},
			elasticsearch: &elasticsearchActionProperty{
				endpoint: jsii.String("endpoint"),
				id: jsii.String("id"),
				index: jsii.String("index"),
				roleArn: jsii.String("roleArn"),
				type: jsii.String("type"),
			},
			firehose: &firehoseActionProperty{
				deliveryStreamName: jsii.String("deliveryStreamName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
				separator: jsii.String("separator"),
			},
			http: &httpActionProperty{
				url: jsii.String("url"),

				// the properties below are optional
				auth: &httpAuthorizationProperty{
					sigv4: &sigV4AuthorizationProperty{
						roleArn: jsii.String("roleArn"),
						serviceName: jsii.String("serviceName"),
						signingRegion: jsii.String("signingRegion"),
					},
				},
				confirmationUrl: jsii.String("confirmationUrl"),
				headers: []interface{}{
					&httpActionHeaderProperty{
						key: jsii.String("key"),
						value: jsii.String("value"),
					},
				},
			},
			iotAnalytics: &iotAnalyticsActionProperty{
				channelName: jsii.String("channelName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
			},
			iotEvents: &iotEventsActionProperty{
				inputName: jsii.String("inputName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
				messageId: jsii.String("messageId"),
			},
			iotSiteWise: &iotSiteWiseActionProperty{
				putAssetPropertyValueEntries: []interface{}{
					&putAssetPropertyValueEntryProperty{
						propertyValues: []interface{}{
							&assetPropertyValueProperty{
								timestamp: &assetPropertyTimestampProperty{
									timeInSeconds: jsii.String("timeInSeconds"),

									// the properties below are optional
									offsetInNanos: jsii.String("offsetInNanos"),
								},
								value: &assetPropertyVariantProperty{
									booleanValue: jsii.String("booleanValue"),
									doubleValue: jsii.String("doubleValue"),
									integerValue: jsii.String("integerValue"),
									stringValue: jsii.String("stringValue"),
								},

								// the properties below are optional
								quality: jsii.String("quality"),
							},
						},

						// the properties below are optional
						assetId: jsii.String("assetId"),
						entryId: jsii.String("entryId"),
						propertyAlias: jsii.String("propertyAlias"),
						propertyId: jsii.String("propertyId"),
					},
				},
				roleArn: jsii.String("roleArn"),
			},
			kafka: &kafkaActionProperty{
				clientProperties: map[string]*string{
					"clientPropertiesKey": jsii.String("clientProperties"),
				},
				destinationArn: jsii.String("destinationArn"),
				topic: jsii.String("topic"),

				// the properties below are optional
				key: jsii.String("key"),
				partition: jsii.String("partition"),
			},
			kinesis: &kinesisActionProperty{
				roleArn: jsii.String("roleArn"),
				streamName: jsii.String("streamName"),

				// the properties below are optional
				partitionKey: jsii.String("partitionKey"),
			},
			lambda: &lambdaActionProperty{
				functionArn: jsii.String("functionArn"),
			},
			location: &locationActionProperty{
				deviceId: jsii.String("deviceId"),
				latitude: jsii.String("latitude"),
				longitude: jsii.String("longitude"),
				roleArn: jsii.String("roleArn"),
				trackerName: jsii.String("trackerName"),

				// the properties below are optional
				timestamp: NewDate(),
			},
			openSearch: &openSearchActionProperty{
				endpoint: jsii.String("endpoint"),
				id: jsii.String("id"),
				index: jsii.String("index"),
				roleArn: jsii.String("roleArn"),
				type: jsii.String("type"),
			},
			republish: &republishActionProperty{
				roleArn: jsii.String("roleArn"),
				topic: jsii.String("topic"),

				// the properties below are optional
				headers: &republishActionHeadersProperty{
					contentType: jsii.String("contentType"),
					correlationData: jsii.String("correlationData"),
					messageExpiry: jsii.String("messageExpiry"),
					payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
					responseTopic: jsii.String("responseTopic"),
					userProperties: []interface{}{
						&userPropertyProperty{
							key: jsii.String("key"),
							value: jsii.String("value"),
						},
					},
				},
				qos: jsii.Number(123),
			},
			s3: &s3ActionProperty{
				bucketName: jsii.String("bucketName"),
				key: jsii.String("key"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				cannedAcl: jsii.String("cannedAcl"),
			},
			sns: &snsActionProperty{
				roleArn: jsii.String("roleArn"),
				targetArn: jsii.String("targetArn"),

				// the properties below are optional
				messageFormat: jsii.String("messageFormat"),
			},
			sqs: &sqsActionProperty{
				queueUrl: jsii.String("queueUrl"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				useBase64: jsii.Boolean(false),
			},
			stepFunctions: &stepFunctionsActionProperty{
				roleArn: jsii.String("roleArn"),
				stateMachineName: jsii.String("stateMachineName"),

				// the properties below are optional
				executionNamePrefix: jsii.String("executionNamePrefix"),
			},
			timestream: &timestreamActionProperty{
				databaseName: jsii.String("databaseName"),
				dimensions: []interface{}{
					&timestreamDimensionProperty{
						name: jsii.String("name"),
						value: jsii.String("value"),
					},
				},
				roleArn: jsii.String("roleArn"),
				tableName: jsii.String("tableName"),

				// the properties below are optional
				timestamp: &timestreamTimestampProperty{
					unit: jsii.String("unit"),
					value: jsii.String("value"),
				},
			},
		},
		ruleDisabled: jsii.Boolean(false),
	},

	// the properties below are optional
	ruleName: jsii.String("ruleName"),
	tags: []cfnTag{
		&cfnTag{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnTopicRule_ActionProperty

type CfnTopicRule_ActionProperty struct {
	// Change the state of a CloudWatch alarm.
	CloudwatchAlarm interface{} `field:"optional" json:"cloudwatchAlarm" yaml:"cloudwatchAlarm"`
	// Sends data to CloudWatch.
	CloudwatchLogs interface{} `field:"optional" json:"cloudwatchLogs" yaml:"cloudwatchLogs"`
	// Capture a CloudWatch metric.
	CloudwatchMetric interface{} `field:"optional" json:"cloudwatchMetric" yaml:"cloudwatchMetric"`
	// Write to a DynamoDB table.
	DynamoDb interface{} `field:"optional" json:"dynamoDb" yaml:"dynamoDb"`
	// 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.
	DynamoDBv2 interface{} `field:"optional" json:"dynamoDBv2" yaml:"dynamoDBv2"`
	// 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) .
	Elasticsearch interface{} `field:"optional" json:"elasticsearch" yaml:"elasticsearch"`
	// Write to an Amazon Kinesis Firehose stream.
	Firehose interface{} `field:"optional" json:"firehose" yaml:"firehose"`
	// Send data to an HTTPS endpoint.
	Http interface{} `field:"optional" json:"http" yaml:"http"`
	// Sends message data to an AWS IoT Analytics channel.
	IotAnalytics interface{} `field:"optional" json:"iotAnalytics" yaml:"iotAnalytics"`
	// Sends an input to an AWS IoT Events detector.
	IotEvents interface{} `field:"optional" json:"iotEvents" yaml:"iotEvents"`
	// Sends data from the MQTT message that triggered the rule to AWS IoT SiteWise asset properties.
	IotSiteWise interface{} `field:"optional" json:"iotSiteWise" yaml:"iotSiteWise"`
	// Send messages to an Amazon Managed Streaming for Apache Kafka (Amazon MSK) or self-managed Apache Kafka cluster.
	Kafka interface{} `field:"optional" json:"kafka" yaml:"kafka"`
	// Write data to an Amazon Kinesis stream.
	Kinesis interface{} `field:"optional" json:"kinesis" yaml:"kinesis"`
	// Invoke a Lambda function.
	Lambda interface{} `field:"optional" json:"lambda" yaml:"lambda"`
	// Sends device location data to [Amazon Location Service](https://docs.aws.amazon.com//location/latest/developerguide/welcome.html) .
	Location interface{} `field:"optional" json:"location" yaml:"location"`
	// Write data to an Amazon OpenSearch Service domain.
	OpenSearch interface{} `field:"optional" json:"openSearch" yaml:"openSearch"`
	// Publish to another MQTT topic.
	Republish interface{} `field:"optional" json:"republish" yaml:"republish"`
	// Write to an Amazon S3 bucket.
	S3 interface{} `field:"optional" json:"s3" yaml:"s3"`
	// Publish to an Amazon SNS topic.
	Sns interface{} `field:"optional" json:"sns" yaml:"sns"`
	// Publish to an Amazon SQS queue.
	Sqs interface{} `field:"optional" json:"sqs" yaml:"sqs"`
	// Starts execution of a Step Functions state machine.
	StepFunctions interface{} `field:"optional" json:"stepFunctions" yaml:"stepFunctions"`
	// Writes attributes from an MQTT message.
	Timestream interface{} `field:"optional" json:"timestream" yaml:"timestream"`
}

Describes the actions associated with a rule.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

actionProperty := &actionProperty{
	cloudwatchAlarm: &cloudwatchAlarmActionProperty{
		alarmName: jsii.String("alarmName"),
		roleArn: jsii.String("roleArn"),
		stateReason: jsii.String("stateReason"),
		stateValue: jsii.String("stateValue"),
	},
	cloudwatchLogs: &cloudwatchLogsActionProperty{
		logGroupName: jsii.String("logGroupName"),
		roleArn: jsii.String("roleArn"),
	},
	cloudwatchMetric: &cloudwatchMetricActionProperty{
		metricName: jsii.String("metricName"),
		metricNamespace: jsii.String("metricNamespace"),
		metricUnit: jsii.String("metricUnit"),
		metricValue: jsii.String("metricValue"),
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		metricTimestamp: jsii.String("metricTimestamp"),
	},
	dynamoDb: &dynamoDBActionProperty{
		hashKeyField: jsii.String("hashKeyField"),
		hashKeyValue: jsii.String("hashKeyValue"),
		roleArn: jsii.String("roleArn"),
		tableName: jsii.String("tableName"),

		// the properties below are optional
		hashKeyType: jsii.String("hashKeyType"),
		payloadField: jsii.String("payloadField"),
		rangeKeyField: jsii.String("rangeKeyField"),
		rangeKeyType: jsii.String("rangeKeyType"),
		rangeKeyValue: jsii.String("rangeKeyValue"),
	},
	dynamoDBv2: &dynamoDBv2ActionProperty{
		putItem: &putItemInputProperty{
			tableName: jsii.String("tableName"),
		},
		roleArn: jsii.String("roleArn"),
	},
	elasticsearch: &elasticsearchActionProperty{
		endpoint: jsii.String("endpoint"),
		id: jsii.String("id"),
		index: jsii.String("index"),
		roleArn: jsii.String("roleArn"),
		type: jsii.String("type"),
	},
	firehose: &firehoseActionProperty{
		deliveryStreamName: jsii.String("deliveryStreamName"),
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		batchMode: jsii.Boolean(false),
		separator: jsii.String("separator"),
	},
	http: &httpActionProperty{
		url: jsii.String("url"),

		// the properties below are optional
		auth: &httpAuthorizationProperty{
			sigv4: &sigV4AuthorizationProperty{
				roleArn: jsii.String("roleArn"),
				serviceName: jsii.String("serviceName"),
				signingRegion: jsii.String("signingRegion"),
			},
		},
		confirmationUrl: jsii.String("confirmationUrl"),
		headers: []interface{}{
			&httpActionHeaderProperty{
				key: jsii.String("key"),
				value: jsii.String("value"),
			},
		},
	},
	iotAnalytics: &iotAnalyticsActionProperty{
		channelName: jsii.String("channelName"),
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		batchMode: jsii.Boolean(false),
	},
	iotEvents: &iotEventsActionProperty{
		inputName: jsii.String("inputName"),
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		batchMode: jsii.Boolean(false),
		messageId: jsii.String("messageId"),
	},
	iotSiteWise: &iotSiteWiseActionProperty{
		putAssetPropertyValueEntries: []interface{}{
			&putAssetPropertyValueEntryProperty{
				propertyValues: []interface{}{
					&assetPropertyValueProperty{
						timestamp: &assetPropertyTimestampProperty{
							timeInSeconds: jsii.String("timeInSeconds"),

							// the properties below are optional
							offsetInNanos: jsii.String("offsetInNanos"),
						},
						value: &assetPropertyVariantProperty{
							booleanValue: jsii.String("booleanValue"),
							doubleValue: jsii.String("doubleValue"),
							integerValue: jsii.String("integerValue"),
							stringValue: jsii.String("stringValue"),
						},

						// the properties below are optional
						quality: jsii.String("quality"),
					},
				},

				// the properties below are optional
				assetId: jsii.String("assetId"),
				entryId: jsii.String("entryId"),
				propertyAlias: jsii.String("propertyAlias"),
				propertyId: jsii.String("propertyId"),
			},
		},
		roleArn: jsii.String("roleArn"),
	},
	kafka: &kafkaActionProperty{
		clientProperties: map[string]*string{
			"clientPropertiesKey": jsii.String("clientProperties"),
		},
		destinationArn: jsii.String("destinationArn"),
		topic: jsii.String("topic"),

		// the properties below are optional
		key: jsii.String("key"),
		partition: jsii.String("partition"),
	},
	kinesis: &kinesisActionProperty{
		roleArn: jsii.String("roleArn"),
		streamName: jsii.String("streamName"),

		// the properties below are optional
		partitionKey: jsii.String("partitionKey"),
	},
	lambda: &lambdaActionProperty{
		functionArn: jsii.String("functionArn"),
	},
	location: &locationActionProperty{
		deviceId: jsii.String("deviceId"),
		latitude: jsii.String("latitude"),
		longitude: jsii.String("longitude"),
		roleArn: jsii.String("roleArn"),
		trackerName: jsii.String("trackerName"),

		// the properties below are optional
		timestamp: NewDate(),
	},
	openSearch: &openSearchActionProperty{
		endpoint: jsii.String("endpoint"),
		id: jsii.String("id"),
		index: jsii.String("index"),
		roleArn: jsii.String("roleArn"),
		type: jsii.String("type"),
	},
	republish: &republishActionProperty{
		roleArn: jsii.String("roleArn"),
		topic: jsii.String("topic"),

		// the properties below are optional
		headers: &republishActionHeadersProperty{
			contentType: jsii.String("contentType"),
			correlationData: jsii.String("correlationData"),
			messageExpiry: jsii.String("messageExpiry"),
			payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
			responseTopic: jsii.String("responseTopic"),
			userProperties: []interface{}{
				&userPropertyProperty{
					key: jsii.String("key"),
					value: jsii.String("value"),
				},
			},
		},
		qos: jsii.Number(123),
	},
	s3: &s3ActionProperty{
		bucketName: jsii.String("bucketName"),
		key: jsii.String("key"),
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		cannedAcl: jsii.String("cannedAcl"),
	},
	sns: &snsActionProperty{
		roleArn: jsii.String("roleArn"),
		targetArn: jsii.String("targetArn"),

		// the properties below are optional
		messageFormat: jsii.String("messageFormat"),
	},
	sqs: &sqsActionProperty{
		queueUrl: jsii.String("queueUrl"),
		roleArn: jsii.String("roleArn"),

		// the properties below are optional
		useBase64: jsii.Boolean(false),
	},
	stepFunctions: &stepFunctionsActionProperty{
		roleArn: jsii.String("roleArn"),
		stateMachineName: jsii.String("stateMachineName"),

		// the properties below are optional
		executionNamePrefix: jsii.String("executionNamePrefix"),
	},
	timestream: &timestreamActionProperty{
		databaseName: jsii.String("databaseName"),
		dimensions: []interface{}{
			&timestreamDimensionProperty{
				name: jsii.String("name"),
				value: jsii.String("value"),
			},
		},
		roleArn: jsii.String("roleArn"),
		tableName: jsii.String("tableName"),

		// the properties below are optional
		timestamp: &timestreamTimestampProperty{
			unit: jsii.String("unit"),
			value: jsii.String("value"),
		},
	},
}

type CfnTopicRule_AssetPropertyTimestampProperty

type CfnTopicRule_AssetPropertyTimestampProperty struct {
	// A string that contains the time in seconds since epoch.
	//
	// Accepts substitution templates.
	TimeInSeconds *string `field:"required" json:"timeInSeconds" yaml:"timeInSeconds"`
	// Optional.
	//
	// A string that contains the nanosecond time offset. Accepts substitution templates.
	OffsetInNanos *string `field:"optional" json:"offsetInNanos" yaml:"offsetInNanos"`
}

An asset property timestamp entry containing the following information.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

assetPropertyTimestampProperty := &assetPropertyTimestampProperty{
	timeInSeconds: jsii.String("timeInSeconds"),

	// the properties below are optional
	offsetInNanos: jsii.String("offsetInNanos"),
}

type CfnTopicRule_AssetPropertyValueProperty

type CfnTopicRule_AssetPropertyValueProperty struct {
	// The asset property value timestamp.
	Timestamp interface{} `field:"required" json:"timestamp" yaml:"timestamp"`
	// The value of the asset property.
	Value interface{} `field:"required" json:"value" yaml:"value"`
	// Optional.
	//
	// A string that describes the quality of the value. Accepts substitution templates. Must be `GOOD` , `BAD` , or `UNCERTAIN` .
	Quality *string `field:"optional" json:"quality" yaml:"quality"`
}

An asset property value entry containing the following information.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

assetPropertyValueProperty := &assetPropertyValueProperty{
	timestamp: &assetPropertyTimestampProperty{
		timeInSeconds: jsii.String("timeInSeconds"),

		// the properties below are optional
		offsetInNanos: jsii.String("offsetInNanos"),
	},
	value: &assetPropertyVariantProperty{
		booleanValue: jsii.String("booleanValue"),
		doubleValue: jsii.String("doubleValue"),
		integerValue: jsii.String("integerValue"),
		stringValue: jsii.String("stringValue"),
	},

	// the properties below are optional
	quality: jsii.String("quality"),
}

type CfnTopicRule_AssetPropertyVariantProperty

type CfnTopicRule_AssetPropertyVariantProperty struct {
	// Optional.
	//
	// A string that contains the boolean value ( `true` or `false` ) of the value entry. Accepts substitution templates.
	BooleanValue *string `field:"optional" json:"booleanValue" yaml:"booleanValue"`
	// Optional.
	//
	// A string that contains the double value of the value entry. Accepts substitution templates.
	DoubleValue *string `field:"optional" json:"doubleValue" yaml:"doubleValue"`
	// Optional.
	//
	// A string that contains the integer value of the value entry. Accepts substitution templates.
	IntegerValue *string `field:"optional" json:"integerValue" yaml:"integerValue"`
	// Optional.
	//
	// The string value of the value entry. Accepts substitution templates.
	StringValue *string `field:"optional" json:"stringValue" yaml:"stringValue"`
}

Contains an asset property value (of a single type).

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

assetPropertyVariantProperty := &assetPropertyVariantProperty{
	booleanValue: jsii.String("booleanValue"),
	doubleValue: jsii.String("doubleValue"),
	integerValue: jsii.String("integerValue"),
	stringValue: jsii.String("stringValue"),
}

type CfnTopicRule_CloudwatchAlarmActionProperty

type CfnTopicRule_CloudwatchAlarmActionProperty struct {
	// The CloudWatch alarm name.
	AlarmName *string `field:"required" json:"alarmName" yaml:"alarmName"`
	// The IAM role that allows access to the CloudWatch alarm.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The reason for the alarm change.
	StateReason *string `field:"required" json:"stateReason" yaml:"stateReason"`
	// The value of the alarm state.
	//
	// Acceptable values are: OK, ALARM, INSUFFICIENT_DATA.
	StateValue *string `field:"required" json:"stateValue" yaml:"stateValue"`
}

Describes an action that updates a CloudWatch alarm.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cloudwatchAlarmActionProperty := &cloudwatchAlarmActionProperty{
	alarmName: jsii.String("alarmName"),
	roleArn: jsii.String("roleArn"),
	stateReason: jsii.String("stateReason"),
	stateValue: jsii.String("stateValue"),
}

type CfnTopicRule_CloudwatchLogsActionProperty

type CfnTopicRule_CloudwatchLogsActionProperty struct {
	// The CloudWatch log name.
	LogGroupName *string `field:"required" json:"logGroupName" yaml:"logGroupName"`
	// The IAM role that allows access to the CloudWatch log.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
}

Describes an action that updates a CloudWatch log.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cloudwatchLogsActionProperty := &cloudwatchLogsActionProperty{
	logGroupName: jsii.String("logGroupName"),
	roleArn: jsii.String("roleArn"),
}

type CfnTopicRule_CloudwatchMetricActionProperty

type CfnTopicRule_CloudwatchMetricActionProperty struct {
	// The CloudWatch metric name.
	MetricName *string `field:"required" json:"metricName" yaml:"metricName"`
	// The CloudWatch metric namespace name.
	MetricNamespace *string `field:"required" json:"metricNamespace" yaml:"metricNamespace"`
	// The [metric unit](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#Unit) supported by CloudWatch.
	MetricUnit *string `field:"required" json:"metricUnit" yaml:"metricUnit"`
	// The CloudWatch metric value.
	MetricValue *string `field:"required" json:"metricValue" yaml:"metricValue"`
	// The IAM role that allows access to the CloudWatch metric.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// An optional [Unix timestamp](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/cloudwatch_concepts.html#about_timestamp) .
	MetricTimestamp *string `field:"optional" json:"metricTimestamp" yaml:"metricTimestamp"`
}

Describes an action that captures a CloudWatch metric.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

cloudwatchMetricActionProperty := &cloudwatchMetricActionProperty{
	metricName: jsii.String("metricName"),
	metricNamespace: jsii.String("metricNamespace"),
	metricUnit: jsii.String("metricUnit"),
	metricValue: jsii.String("metricValue"),
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	metricTimestamp: jsii.String("metricTimestamp"),
}

type CfnTopicRule_DynamoDBActionProperty

type CfnTopicRule_DynamoDBActionProperty struct {
	// The hash key name.
	HashKeyField *string `field:"required" json:"hashKeyField" yaml:"hashKeyField"`
	// The hash key value.
	HashKeyValue *string `field:"required" json:"hashKeyValue" yaml:"hashKeyValue"`
	// The ARN of the IAM role that grants access to the DynamoDB table.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The name of the DynamoDB table.
	TableName *string `field:"required" json:"tableName" yaml:"tableName"`
	// The hash key type.
	//
	// Valid values are "STRING" or "NUMBER".
	HashKeyType *string `field:"optional" json:"hashKeyType" yaml:"hashKeyType"`
	// The action payload.
	//
	// This name can be customized.
	PayloadField *string `field:"optional" json:"payloadField" yaml:"payloadField"`
	// The range key name.
	RangeKeyField *string `field:"optional" json:"rangeKeyField" yaml:"rangeKeyField"`
	// The range key type.
	//
	// Valid values are "STRING" or "NUMBER".
	RangeKeyType *string `field:"optional" json:"rangeKeyType" yaml:"rangeKeyType"`
	// The range key value.
	RangeKeyValue *string `field:"optional" json:"rangeKeyValue" yaml:"rangeKeyValue"`
}

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: ${ *sql-expression* }.

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* .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

dynamoDBActionProperty := &dynamoDBActionProperty{
	hashKeyField: jsii.String("hashKeyField"),
	hashKeyValue: jsii.String("hashKeyValue"),
	roleArn: jsii.String("roleArn"),
	tableName: jsii.String("tableName"),

	// the properties below are optional
	hashKeyType: jsii.String("hashKeyType"),
	payloadField: jsii.String("payloadField"),
	rangeKeyField: jsii.String("rangeKeyField"),
	rangeKeyType: jsii.String("rangeKeyType"),
	rangeKeyValue: jsii.String("rangeKeyValue"),
}

type CfnTopicRule_DynamoDBv2ActionProperty

type CfnTopicRule_DynamoDBv2ActionProperty struct {
	// 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.
	PutItem interface{} `field:"optional" json:"putItem" yaml:"putItem"`
	// The ARN of the IAM role that grants access to the DynamoDB table.
	RoleArn *string `field:"optional" json:"roleArn" yaml:"roleArn"`
}

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

dynamoDBv2ActionProperty := &dynamoDBv2ActionProperty{
	putItem: &putItemInputProperty{
		tableName: jsii.String("tableName"),
	},
	roleArn: jsii.String("roleArn"),
}

type CfnTopicRule_ElasticsearchActionProperty

type CfnTopicRule_ElasticsearchActionProperty struct {
	// The endpoint of your OpenSearch domain.
	Endpoint *string `field:"required" json:"endpoint" yaml:"endpoint"`
	// The unique identifier for the document you are storing.
	Id *string `field:"required" json:"id" yaml:"id"`
	// The index where you want to store your data.
	Index *string `field:"required" json:"index" yaml:"index"`
	// The IAM role ARN that has access to OpenSearch.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The type of document you are storing.
	Type *string `field:"required" json:"type" yaml:"type"`
}

Describes an action that writes 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) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

elasticsearchActionProperty := &elasticsearchActionProperty{
	endpoint: jsii.String("endpoint"),
	id: jsii.String("id"),
	index: jsii.String("index"),
	roleArn: jsii.String("roleArn"),
	type: jsii.String("type"),
}

type CfnTopicRule_FirehoseActionProperty

type CfnTopicRule_FirehoseActionProperty struct {
	// The delivery stream name.
	DeliveryStreamName *string `field:"required" json:"deliveryStreamName" yaml:"deliveryStreamName"`
	// The IAM role that grants access to the Amazon Kinesis Firehose stream.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// Whether to deliver the Kinesis Data Firehose stream as a batch by using [`PutRecordBatch`](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 [`PutRecordBatch`](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html) request. The resulting array can't have more than 500 records.
	BatchMode interface{} `field:"optional" json:"batchMode" yaml:"batchMode"`
	// A character separator that will be used to separate records written to the Firehose stream.
	//
	// Valid values are: '\n' (newline), '\t' (tab), '\r\n' (Windows newline), ',' (comma).
	Separator *string `field:"optional" json:"separator" yaml:"separator"`
}

Describes an action that writes data to an Amazon Kinesis Firehose stream.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

firehoseActionProperty := &firehoseActionProperty{
	deliveryStreamName: jsii.String("deliveryStreamName"),
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	batchMode: jsii.Boolean(false),
	separator: jsii.String("separator"),
}

type CfnTopicRule_HttpActionHeaderProperty

type CfnTopicRule_HttpActionHeaderProperty struct {
	// The HTTP header key.
	Key *string `field:"required" json:"key" yaml:"key"`
	// The HTTP header value.
	//
	// Substitution templates are supported.
	Value *string `field:"required" json:"value" yaml:"value"`
}

The HTTP action header.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

httpActionHeaderProperty := &httpActionHeaderProperty{
	key: jsii.String("key"),
	value: jsii.String("value"),
}

type CfnTopicRule_HttpActionProperty

type CfnTopicRule_HttpActionProperty struct {
	// 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.
	Url *string `field:"required" json:"url" yaml:"url"`
	// The authentication method to use when sending data to an HTTPS endpoint.
	Auth interface{} `field:"optional" json:"auth" yaml:"auth"`
	// 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.
	ConfirmationUrl *string `field:"optional" json:"confirmationUrl" yaml:"confirmationUrl"`
	// The HTTP headers to send with the message data.
	Headers interface{} `field:"optional" json:"headers" yaml:"headers"`
}

Send data to an HTTPS endpoint.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

httpActionProperty := &httpActionProperty{
	url: jsii.String("url"),

	// the properties below are optional
	auth: &httpAuthorizationProperty{
		sigv4: &sigV4AuthorizationProperty{
			roleArn: jsii.String("roleArn"),
			serviceName: jsii.String("serviceName"),
			signingRegion: jsii.String("signingRegion"),
		},
	},
	confirmationUrl: jsii.String("confirmationUrl"),
	headers: []interface{}{
		&httpActionHeaderProperty{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnTopicRule_HttpAuthorizationProperty

type CfnTopicRule_HttpAuthorizationProperty struct {
	// 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) .
	Sigv4 interface{} `field:"optional" json:"sigv4" yaml:"sigv4"`
}

The authorization method used to send messages.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

httpAuthorizationProperty := &httpAuthorizationProperty{
	sigv4: &sigV4AuthorizationProperty{
		roleArn: jsii.String("roleArn"),
		serviceName: jsii.String("serviceName"),
		signingRegion: jsii.String("signingRegion"),
	},
}

type CfnTopicRule_IotAnalyticsActionProperty

type CfnTopicRule_IotAnalyticsActionProperty struct {
	// The name of the IoT Analytics channel to which message data will be sent.
	ChannelName *string `field:"required" json:"channelName" yaml:"channelName"`
	// The ARN of the role which has a policy that grants IoT Analytics permission to send message data via IoT Analytics (iotanalytics:BatchPutMessage).
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// 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 [`BatchPutMessage`](https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_BatchPutMessage.html) The resulting array can't have more than 100 messages.
	BatchMode interface{} `field:"optional" json:"batchMode" yaml:"batchMode"`
}

Sends message data to an AWS IoT Analytics channel.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

iotAnalyticsActionProperty := &iotAnalyticsActionProperty{
	channelName: jsii.String("channelName"),
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	batchMode: jsii.Boolean(false),
}

type CfnTopicRule_IotEventsActionProperty

type CfnTopicRule_IotEventsActionProperty struct {
	// The name of the AWS IoT Events input.
	InputName *string `field:"required" json:"inputName" yaml:"inputName"`
	// The ARN of the role that grants AWS IoT permission to send an input to an AWS IoT Events detector.
	//
	// ("Action":"iotevents:BatchPutMessage").
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// 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 [`BatchPutMessage`](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchPutMessage.html) . The resulting array can't have more than 10 messages.
	BatchMode interface{} `field:"optional" json:"batchMode" yaml:"batchMode"`
	// 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.
	MessageId *string `field:"optional" json:"messageId" yaml:"messageId"`
}

Sends an input to an AWS IoT Events detector.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

iotEventsActionProperty := &iotEventsActionProperty{
	inputName: jsii.String("inputName"),
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	batchMode: jsii.Boolean(false),
	messageId: jsii.String("messageId"),
}

type CfnTopicRule_IotSiteWiseActionProperty

type CfnTopicRule_IotSiteWiseActionProperty struct {
	// A list of asset property value entries.
	PutAssetPropertyValueEntries interface{} `field:"required" json:"putAssetPropertyValueEntries" yaml:"putAssetPropertyValueEntries"`
	// 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.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
}

Describes an action to send data from an MQTT message that triggered the rule to AWS IoT SiteWise asset properties.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

iotSiteWiseActionProperty := &iotSiteWiseActionProperty{
	putAssetPropertyValueEntries: []interface{}{
		&putAssetPropertyValueEntryProperty{
			propertyValues: []interface{}{
				&assetPropertyValueProperty{
					timestamp: &assetPropertyTimestampProperty{
						timeInSeconds: jsii.String("timeInSeconds"),

						// the properties below are optional
						offsetInNanos: jsii.String("offsetInNanos"),
					},
					value: &assetPropertyVariantProperty{
						booleanValue: jsii.String("booleanValue"),
						doubleValue: jsii.String("doubleValue"),
						integerValue: jsii.String("integerValue"),
						stringValue: jsii.String("stringValue"),
					},

					// the properties below are optional
					quality: jsii.String("quality"),
				},
			},

			// the properties below are optional
			assetId: jsii.String("assetId"),
			entryId: jsii.String("entryId"),
			propertyAlias: jsii.String("propertyAlias"),
			propertyId: jsii.String("propertyId"),
		},
	},
	roleArn: jsii.String("roleArn"),
}

type CfnTopicRule_KafkaActionProperty

type CfnTopicRule_KafkaActionProperty struct {
	// Properties of the Apache Kafka producer client.
	ClientProperties interface{} `field:"required" json:"clientProperties" yaml:"clientProperties"`
	// The ARN of Kafka action's VPC `TopicRuleDestination` .
	DestinationArn *string `field:"required" json:"destinationArn" yaml:"destinationArn"`
	// The Kafka topic for messages to be sent to the Kafka broker.
	Topic *string `field:"required" json:"topic" yaml:"topic"`
	// The Kafka message key.
	Key *string `field:"optional" json:"key" yaml:"key"`
	// The Kafka message partition.
	Partition *string `field:"optional" json:"partition" yaml:"partition"`
}

Send messages to an Amazon Managed Streaming for Apache Kafka (Amazon MSK) or self-managed Apache Kafka cluster.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

kafkaActionProperty := &kafkaActionProperty{
	clientProperties: map[string]*string{
		"clientPropertiesKey": jsii.String("clientProperties"),
	},
	destinationArn: jsii.String("destinationArn"),
	topic: jsii.String("topic"),

	// the properties below are optional
	key: jsii.String("key"),
	partition: jsii.String("partition"),
}

type CfnTopicRule_KinesisActionProperty

type CfnTopicRule_KinesisActionProperty struct {
	// The ARN of the IAM role that grants access to the Amazon Kinesis stream.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The name of the Amazon Kinesis stream.
	StreamName *string `field:"required" json:"streamName" yaml:"streamName"`
	// The partition key.
	PartitionKey *string `field:"optional" json:"partitionKey" yaml:"partitionKey"`
}

Describes an action to write data to an Amazon Kinesis stream.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

kinesisActionProperty := &kinesisActionProperty{
	roleArn: jsii.String("roleArn"),
	streamName: jsii.String("streamName"),

	// the properties below are optional
	partitionKey: jsii.String("partitionKey"),
}

type CfnTopicRule_LambdaActionProperty

type CfnTopicRule_LambdaActionProperty struct {
	// The ARN of the Lambda function.
	FunctionArn *string `field:"optional" json:"functionArn" yaml:"functionArn"`
}

Describes an action to invoke a Lambda function.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

lambdaActionProperty := &lambdaActionProperty{
	functionArn: jsii.String("functionArn"),
}

type CfnTopicRule_LocationActionProperty

type CfnTopicRule_LocationActionProperty struct {
	// The unique ID of the device providing the location data.
	DeviceId *string `field:"required" json:"deviceId" yaml:"deviceId"`
	// A string that evaluates to a double value that represents the latitude of the device's location.
	Latitude *string `field:"required" json:"latitude" yaml:"latitude"`
	// A string that evaluates to a double value that represents the longitude of the device's location.
	Longitude *string `field:"required" json:"longitude" yaml:"longitude"`
	// The IAM role that grants permission to write to the Amazon Location resource.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The name of the tracker resource in Amazon Location in which the location is updated.
	TrackerName *string `field:"required" json:"trackerName" yaml:"trackerName"`
	// The time that the location data was sampled.
	//
	// The default value is the time the MQTT message was processed.
	Timestamp interface{} `field:"optional" json:"timestamp" yaml:"timestamp"`
}

Describes an action to send device location updates from an MQTT message to an Amazon Location tracker resource.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

locationActionProperty := &locationActionProperty{
	deviceId: jsii.String("deviceId"),
	latitude: jsii.String("latitude"),
	longitude: jsii.String("longitude"),
	roleArn: jsii.String("roleArn"),
	trackerName: jsii.String("trackerName"),

	// the properties below are optional
	timestamp: NewDate(),
}

type CfnTopicRule_OpenSearchActionProperty

type CfnTopicRule_OpenSearchActionProperty struct {
	// The endpoint of your OpenSearch domain.
	Endpoint *string `field:"required" json:"endpoint" yaml:"endpoint"`
	// The unique identifier for the document you are storing.
	Id *string `field:"required" json:"id" yaml:"id"`
	// The OpenSearch index where you want to store your data.
	Index *string `field:"required" json:"index" yaml:"index"`
	// The IAM role ARN that has access to OpenSearch.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The type of document you are storing.
	Type *string `field:"required" json:"type" yaml:"type"`
}

Describes an action that writes data to an Amazon OpenSearch Service domain.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

openSearchActionProperty := &openSearchActionProperty{
	endpoint: jsii.String("endpoint"),
	id: jsii.String("id"),
	index: jsii.String("index"),
	roleArn: jsii.String("roleArn"),
	type: jsii.String("type"),
}

type CfnTopicRule_PutAssetPropertyValueEntryProperty

type CfnTopicRule_PutAssetPropertyValueEntryProperty struct {
	// A list of property values to insert that each contain timestamp, quality, and value (TQV) information.
	PropertyValues interface{} `field:"required" json:"propertyValues" yaml:"propertyValues"`
	// The ID of the AWS IoT SiteWise asset.
	//
	// You must specify either a `propertyAlias` or both an `aliasId` and a `propertyId` . Accepts substitution templates.
	AssetId *string `field:"optional" json:"assetId" yaml:"assetId"`
	// 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.
	EntryId *string `field:"optional" json:"entryId" yaml:"entryId"`
	// 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.
	PropertyAlias *string `field:"optional" json:"propertyAlias" yaml:"propertyAlias"`
	// The ID of the asset's property.
	//
	// You must specify either a `propertyAlias` or both an `aliasId` and a `propertyId` . Accepts substitution templates.
	PropertyId *string `field:"optional" json:"propertyId" yaml:"propertyId"`
}

An asset property value entry containing the following information.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

putAssetPropertyValueEntryProperty := &putAssetPropertyValueEntryProperty{
	propertyValues: []interface{}{
		&assetPropertyValueProperty{
			timestamp: &assetPropertyTimestampProperty{
				timeInSeconds: jsii.String("timeInSeconds"),

				// the properties below are optional
				offsetInNanos: jsii.String("offsetInNanos"),
			},
			value: &assetPropertyVariantProperty{
				booleanValue: jsii.String("booleanValue"),
				doubleValue: jsii.String("doubleValue"),
				integerValue: jsii.String("integerValue"),
				stringValue: jsii.String("stringValue"),
			},

			// the properties below are optional
			quality: jsii.String("quality"),
		},
	},

	// the properties below are optional
	assetId: jsii.String("assetId"),
	entryId: jsii.String("entryId"),
	propertyAlias: jsii.String("propertyAlias"),
	propertyId: jsii.String("propertyId"),
}

type CfnTopicRule_PutItemInputProperty

type CfnTopicRule_PutItemInputProperty struct {
	// The table where the message data will be written.
	TableName *string `field:"required" json:"tableName" yaml:"tableName"`
}

The input for the DynamoActionVS action that specifies the DynamoDB table to which the message data will be written.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

putItemInputProperty := &putItemInputProperty{
	tableName: jsii.String("tableName"),
}

type CfnTopicRule_RepublishActionHeadersProperty

type CfnTopicRule_RepublishActionHeadersProperty struct {
	// A UTF-8 encoded string that describes the content of the publishing message.
	//
	// For more information, see [Content Type](https://docs.aws.amazon.com/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) .
	ContentType *string `field:"optional" json:"contentType" yaml:"contentType"`
	// 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.aws.amazon.com/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.
	CorrelationData *string `field:"optional" json:"correlationData" yaml:"correlationData"`
	// 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) .
	MessageExpiry *string `field:"optional" json:"messageExpiry" yaml:"messageExpiry"`
	// 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.aws.amazon.com/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) .
	PayloadFormatIndicator *string `field:"optional" json:"payloadFormatIndicator" yaml:"payloadFormatIndicator"`
	// 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.aws.amazon.com/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) .
	ResponseTopic *string `field:"optional" json:"responseTopic" yaml:"responseTopic"`
	// An array of key-value pairs that you define in the MQTT5 header.
	UserProperties interface{} `field:"optional" json:"userProperties" yaml:"userProperties"`
}

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.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

republishActionHeadersProperty := &republishActionHeadersProperty{
	contentType: jsii.String("contentType"),
	correlationData: jsii.String("correlationData"),
	messageExpiry: jsii.String("messageExpiry"),
	payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
	responseTopic: jsii.String("responseTopic"),
	userProperties: []interface{}{
		&userPropertyProperty{
			key: jsii.String("key"),
			value: jsii.String("value"),
		},
	},
}

type CfnTopicRule_RepublishActionProperty

type CfnTopicRule_RepublishActionProperty struct {
	// The ARN of the IAM role that grants access.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The name of the MQTT topic.
	Topic *string `field:"required" json:"topic" yaml:"topic"`
	// 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.
	Headers interface{} `field:"optional" json:"headers" yaml:"headers"`
	// The Quality of Service (QoS) level to use when republishing messages.
	//
	// The default value is 0.
	Qos *float64 `field:"optional" json:"qos" yaml:"qos"`
}

Describes an action to republish to another topic.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

republishActionProperty := &republishActionProperty{
	roleArn: jsii.String("roleArn"),
	topic: jsii.String("topic"),

	// the properties below are optional
	headers: &republishActionHeadersProperty{
		contentType: jsii.String("contentType"),
		correlationData: jsii.String("correlationData"),
		messageExpiry: jsii.String("messageExpiry"),
		payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
		responseTopic: jsii.String("responseTopic"),
		userProperties: []interface{}{
			&userPropertyProperty{
				key: jsii.String("key"),
				value: jsii.String("value"),
			},
		},
	},
	qos: jsii.Number(123),
}

type CfnTopicRule_S3ActionProperty

type CfnTopicRule_S3ActionProperty struct {
	// The Amazon S3 bucket.
	BucketName *string `field:"required" json:"bucketName" yaml:"bucketName"`
	// 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) .
	Key *string `field:"required" json:"key" yaml:"key"`
	// The ARN of the IAM role that grants access.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// 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) .
	CannedAcl *string `field:"optional" json:"cannedAcl" yaml:"cannedAcl"`
}

Describes an action to write data to an Amazon S3 bucket.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

s3ActionProperty := &s3ActionProperty{
	bucketName: jsii.String("bucketName"),
	key: jsii.String("key"),
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	cannedAcl: jsii.String("cannedAcl"),
}

type CfnTopicRule_SigV4AuthorizationProperty

type CfnTopicRule_SigV4AuthorizationProperty struct {
	// The ARN of the signing role.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The service name to use while signing with Sig V4.
	ServiceName *string `field:"required" json:"serviceName" yaml:"serviceName"`
	// The signing region.
	SigningRegion *string `field:"required" json:"signingRegion" yaml:"signingRegion"`
}

For more information, see [Signature Version 4 signing process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) .

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

sigV4AuthorizationProperty := &sigV4AuthorizationProperty{
	roleArn: jsii.String("roleArn"),
	serviceName: jsii.String("serviceName"),
	signingRegion: jsii.String("signingRegion"),
}

type CfnTopicRule_SnsActionProperty

type CfnTopicRule_SnsActionProperty struct {
	// The ARN of the IAM role that grants access.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The ARN of the SNS topic.
	TargetArn *string `field:"required" json:"targetArn" yaml:"targetArn"`
	// (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* .
	MessageFormat *string `field:"optional" json:"messageFormat" yaml:"messageFormat"`
}

Describes an action to publish to an Amazon SNS topic.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

snsActionProperty := &snsActionProperty{
	roleArn: jsii.String("roleArn"),
	targetArn: jsii.String("targetArn"),

	// the properties below are optional
	messageFormat: jsii.String("messageFormat"),
}

type CfnTopicRule_SqsActionProperty

type CfnTopicRule_SqsActionProperty struct {
	// The URL of the Amazon SQS queue.
	QueueUrl *string `field:"required" json:"queueUrl" yaml:"queueUrl"`
	// The ARN of the IAM role that grants access.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// Specifies whether to use Base64 encoding.
	UseBase64 interface{} `field:"optional" json:"useBase64" yaml:"useBase64"`
}

Describes an action to publish data to an Amazon SQS queue.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

sqsActionProperty := &sqsActionProperty{
	queueUrl: jsii.String("queueUrl"),
	roleArn: jsii.String("roleArn"),

	// the properties below are optional
	useBase64: jsii.Boolean(false),
}

type CfnTopicRule_StepFunctionsActionProperty

type CfnTopicRule_StepFunctionsActionProperty struct {
	// The ARN of the role that grants IoT permission to start execution of a state machine ("Action":"states:StartExecution").
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The name of the Step Functions state machine whose execution will be started.
	StateMachineName *string `field:"required" json:"stateMachineName" yaml:"stateMachineName"`
	// (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.
	ExecutionNamePrefix *string `field:"optional" json:"executionNamePrefix" yaml:"executionNamePrefix"`
}

Starts execution of a Step Functions state machine.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

stepFunctionsActionProperty := &stepFunctionsActionProperty{
	roleArn: jsii.String("roleArn"),
	stateMachineName: jsii.String("stateMachineName"),

	// the properties below are optional
	executionNamePrefix: jsii.String("executionNamePrefix"),
}

type CfnTopicRule_TimestampProperty

type CfnTopicRule_TimestampProperty struct {
	// An expression that returns a long epoch time value.
	Value *string `field:"required" json:"value" yaml:"value"`
	// The precision of the timestamp value that results from the expression described in `value` .
	Unit *string `field:"optional" json:"unit" yaml:"unit"`
}

Describes how to interpret an application-defined timestamp value from an MQTT message payload and the precision of that value.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

timestampProperty := &timestampProperty{
	value: jsii.String("value"),

	// the properties below are optional
	unit: jsii.String("unit"),
}

type CfnTopicRule_TimestreamActionProperty

type CfnTopicRule_TimestreamActionProperty struct {
	// The name of an Amazon Timestream database that has the table to write records into.
	DatabaseName *string `field:"required" json:"databaseName" yaml:"databaseName"`
	// Metadata attributes of the time series that are written in each measure record.
	Dimensions interface{} `field:"required" json:"dimensions" yaml:"dimensions"`
	// The Amazon Resource Name (ARN) of the role that grants AWS IoT permission to write to the Timestream database table.
	RoleArn *string `field:"required" json:"roleArn" yaml:"roleArn"`
	// The table where the message data will be written.
	TableName *string `field:"required" json:"tableName" yaml:"tableName"`
	// The value to use for the entry's timestamp.
	//
	// If blank, the time that the entry was processed is used.
	Timestamp interface{} `field:"optional" json:"timestamp" yaml:"timestamp"`
}

Describes an action that writes records into an Amazon Timestream table.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

timestreamActionProperty := &timestreamActionProperty{
	databaseName: jsii.String("databaseName"),
	dimensions: []interface{}{
		&timestreamDimensionProperty{
			name: jsii.String("name"),
			value: jsii.String("value"),
		},
	},
	roleArn: jsii.String("roleArn"),
	tableName: jsii.String("tableName"),

	// the properties below are optional
	timestamp: &timestreamTimestampProperty{
		unit: jsii.String("unit"),
		value: jsii.String("value"),
	},
}

type CfnTopicRule_TimestreamDimensionProperty

type CfnTopicRule_TimestreamDimensionProperty struct {
	// The metadata dimension name.
	//
	// This is the name of the column in the Amazon Timestream database table record.
	Name *string `field:"required" json:"name" yaml:"name"`
	// The value to write in this column of the database record.
	Value *string `field:"required" json:"value" yaml:"value"`
}

Metadata attributes of the time series that are written in each measure record.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

timestreamDimensionProperty := &timestreamDimensionProperty{
	name: jsii.String("name"),
	value: jsii.String("value"),
}

type CfnTopicRule_TimestreamTimestampProperty

type CfnTopicRule_TimestreamTimestampProperty struct {
	// The precision of the timestamp value that results from the expression described in `value` .
	Unit *string `field:"required" json:"unit" yaml:"unit"`
	// An expression that returns a long epoch time value.
	Value *string `field:"required" json:"value" yaml:"value"`
}

The value to use for the entry's timestamp.

If blank, the time that the entry was processed is used.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

timestreamTimestampProperty := &timestreamTimestampProperty{
	unit: jsii.String("unit"),
	value: jsii.String("value"),
}

type CfnTopicRule_TopicRulePayloadProperty

type CfnTopicRule_TopicRulePayloadProperty struct {
	// The actions associated with the rule.
	Actions interface{} `field:"required" json:"actions" yaml:"actions"`
	// 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* .
	Sql *string `field:"required" json:"sql" yaml:"sql"`
	// The version of the SQL rules engine to use when evaluating the rule.
	//
	// The default value is 2015-10-08.
	AwsIotSqlVersion *string `field:"optional" json:"awsIotSqlVersion" yaml:"awsIotSqlVersion"`
	// The description of the rule.
	Description *string `field:"optional" json:"description" yaml:"description"`
	// The action to take when an error occurs.
	ErrorAction interface{} `field:"optional" json:"errorAction" yaml:"errorAction"`
	// Specifies whether the rule is disabled.
	RuleDisabled interface{} `field:"optional" json:"ruleDisabled" yaml:"ruleDisabled"`
}

Describes a rule.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

topicRulePayloadProperty := &topicRulePayloadProperty{
	actions: []interface{}{
		&actionProperty{
			cloudwatchAlarm: &cloudwatchAlarmActionProperty{
				alarmName: jsii.String("alarmName"),
				roleArn: jsii.String("roleArn"),
				stateReason: jsii.String("stateReason"),
				stateValue: jsii.String("stateValue"),
			},
			cloudwatchLogs: &cloudwatchLogsActionProperty{
				logGroupName: jsii.String("logGroupName"),
				roleArn: jsii.String("roleArn"),
			},
			cloudwatchMetric: &cloudwatchMetricActionProperty{
				metricName: jsii.String("metricName"),
				metricNamespace: jsii.String("metricNamespace"),
				metricUnit: jsii.String("metricUnit"),
				metricValue: jsii.String("metricValue"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				metricTimestamp: jsii.String("metricTimestamp"),
			},
			dynamoDb: &dynamoDBActionProperty{
				hashKeyField: jsii.String("hashKeyField"),
				hashKeyValue: jsii.String("hashKeyValue"),
				roleArn: jsii.String("roleArn"),
				tableName: jsii.String("tableName"),

				// the properties below are optional
				hashKeyType: jsii.String("hashKeyType"),
				payloadField: jsii.String("payloadField"),
				rangeKeyField: jsii.String("rangeKeyField"),
				rangeKeyType: jsii.String("rangeKeyType"),
				rangeKeyValue: jsii.String("rangeKeyValue"),
			},
			dynamoDBv2: &dynamoDBv2ActionProperty{
				putItem: &putItemInputProperty{
					tableName: jsii.String("tableName"),
				},
				roleArn: jsii.String("roleArn"),
			},
			elasticsearch: &elasticsearchActionProperty{
				endpoint: jsii.String("endpoint"),
				id: jsii.String("id"),
				index: jsii.String("index"),
				roleArn: jsii.String("roleArn"),
				type: jsii.String("type"),
			},
			firehose: &firehoseActionProperty{
				deliveryStreamName: jsii.String("deliveryStreamName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
				separator: jsii.String("separator"),
			},
			http: &httpActionProperty{
				url: jsii.String("url"),

				// the properties below are optional
				auth: &httpAuthorizationProperty{
					sigv4: &sigV4AuthorizationProperty{
						roleArn: jsii.String("roleArn"),
						serviceName: jsii.String("serviceName"),
						signingRegion: jsii.String("signingRegion"),
					},
				},
				confirmationUrl: jsii.String("confirmationUrl"),
				headers: []interface{}{
					&httpActionHeaderProperty{
						key: jsii.String("key"),
						value: jsii.String("value"),
					},
				},
			},
			iotAnalytics: &iotAnalyticsActionProperty{
				channelName: jsii.String("channelName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
			},
			iotEvents: &iotEventsActionProperty{
				inputName: jsii.String("inputName"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				batchMode: jsii.Boolean(false),
				messageId: jsii.String("messageId"),
			},
			iotSiteWise: &iotSiteWiseActionProperty{
				putAssetPropertyValueEntries: []interface{}{
					&putAssetPropertyValueEntryProperty{
						propertyValues: []interface{}{
							&assetPropertyValueProperty{
								timestamp: &assetPropertyTimestampProperty{
									timeInSeconds: jsii.String("timeInSeconds"),

									// the properties below are optional
									offsetInNanos: jsii.String("offsetInNanos"),
								},
								value: &assetPropertyVariantProperty{
									booleanValue: jsii.String("booleanValue"),
									doubleValue: jsii.String("doubleValue"),
									integerValue: jsii.String("integerValue"),
									stringValue: jsii.String("stringValue"),
								},

								// the properties below are optional
								quality: jsii.String("quality"),
							},
						},

						// the properties below are optional
						assetId: jsii.String("assetId"),
						entryId: jsii.String("entryId"),
						propertyAlias: jsii.String("propertyAlias"),
						propertyId: jsii.String("propertyId"),
					},
				},
				roleArn: jsii.String("roleArn"),
			},
			kafka: &kafkaActionProperty{
				clientProperties: map[string]*string{
					"clientPropertiesKey": jsii.String("clientProperties"),
				},
				destinationArn: jsii.String("destinationArn"),
				topic: jsii.String("topic"),

				// the properties below are optional
				key: jsii.String("key"),
				partition: jsii.String("partition"),
			},
			kinesis: &kinesisActionProperty{
				roleArn: jsii.String("roleArn"),
				streamName: jsii.String("streamName"),

				// the properties below are optional
				partitionKey: jsii.String("partitionKey"),
			},
			lambda: &lambdaActionProperty{
				functionArn: jsii.String("functionArn"),
			},
			location: &locationActionProperty{
				deviceId: jsii.String("deviceId"),
				latitude: jsii.String("latitude"),
				longitude: jsii.String("longitude"),
				roleArn: jsii.String("roleArn"),
				trackerName: jsii.String("trackerName"),

				// the properties below are optional
				timestamp: NewDate(),
			},
			openSearch: &openSearchActionProperty{
				endpoint: jsii.String("endpoint"),
				id: jsii.String("id"),
				index: jsii.String("index"),
				roleArn: jsii.String("roleArn"),
				type: jsii.String("type"),
			},
			republish: &republishActionProperty{
				roleArn: jsii.String("roleArn"),
				topic: jsii.String("topic"),

				// the properties below are optional
				headers: &republishActionHeadersProperty{
					contentType: jsii.String("contentType"),
					correlationData: jsii.String("correlationData"),
					messageExpiry: jsii.String("messageExpiry"),
					payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
					responseTopic: jsii.String("responseTopic"),
					userProperties: []interface{}{
						&userPropertyProperty{
							key: jsii.String("key"),
							value: jsii.String("value"),
						},
					},
				},
				qos: jsii.Number(123),
			},
			s3: &s3ActionProperty{
				bucketName: jsii.String("bucketName"),
				key: jsii.String("key"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				cannedAcl: jsii.String("cannedAcl"),
			},
			sns: &snsActionProperty{
				roleArn: jsii.String("roleArn"),
				targetArn: jsii.String("targetArn"),

				// the properties below are optional
				messageFormat: jsii.String("messageFormat"),
			},
			sqs: &sqsActionProperty{
				queueUrl: jsii.String("queueUrl"),
				roleArn: jsii.String("roleArn"),

				// the properties below are optional
				useBase64: jsii.Boolean(false),
			},
			stepFunctions: &stepFunctionsActionProperty{
				roleArn: jsii.String("roleArn"),
				stateMachineName: jsii.String("stateMachineName"),

				// the properties below are optional
				executionNamePrefix: jsii.String("executionNamePrefix"),
			},
			timestream: &timestreamActionProperty{
				databaseName: jsii.String("databaseName"),
				dimensions: []interface{}{
					&timestreamDimensionProperty{
						name: jsii.String("name"),
						value: jsii.String("value"),
					},
				},
				roleArn: jsii.String("roleArn"),
				tableName: jsii.String("tableName"),

				// the properties below are optional
				timestamp: &timestreamTimestampProperty{
					unit: jsii.String("unit"),
					value: jsii.String("value"),
				},
			},
		},
	},
	sql: jsii.String("sql"),

	// the properties below are optional
	awsIotSqlVersion: jsii.String("awsIotSqlVersion"),
	description: jsii.String("description"),
	errorAction: &actionProperty{
		cloudwatchAlarm: &cloudwatchAlarmActionProperty{
			alarmName: jsii.String("alarmName"),
			roleArn: jsii.String("roleArn"),
			stateReason: jsii.String("stateReason"),
			stateValue: jsii.String("stateValue"),
		},
		cloudwatchLogs: &cloudwatchLogsActionProperty{
			logGroupName: jsii.String("logGroupName"),
			roleArn: jsii.String("roleArn"),
		},
		cloudwatchMetric: &cloudwatchMetricActionProperty{
			metricName: jsii.String("metricName"),
			metricNamespace: jsii.String("metricNamespace"),
			metricUnit: jsii.String("metricUnit"),
			metricValue: jsii.String("metricValue"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			metricTimestamp: jsii.String("metricTimestamp"),
		},
		dynamoDb: &dynamoDBActionProperty{
			hashKeyField: jsii.String("hashKeyField"),
			hashKeyValue: jsii.String("hashKeyValue"),
			roleArn: jsii.String("roleArn"),
			tableName: jsii.String("tableName"),

			// the properties below are optional
			hashKeyType: jsii.String("hashKeyType"),
			payloadField: jsii.String("payloadField"),
			rangeKeyField: jsii.String("rangeKeyField"),
			rangeKeyType: jsii.String("rangeKeyType"),
			rangeKeyValue: jsii.String("rangeKeyValue"),
		},
		dynamoDBv2: &dynamoDBv2ActionProperty{
			putItem: &putItemInputProperty{
				tableName: jsii.String("tableName"),
			},
			roleArn: jsii.String("roleArn"),
		},
		elasticsearch: &elasticsearchActionProperty{
			endpoint: jsii.String("endpoint"),
			id: jsii.String("id"),
			index: jsii.String("index"),
			roleArn: jsii.String("roleArn"),
			type: jsii.String("type"),
		},
		firehose: &firehoseActionProperty{
			deliveryStreamName: jsii.String("deliveryStreamName"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			batchMode: jsii.Boolean(false),
			separator: jsii.String("separator"),
		},
		http: &httpActionProperty{
			url: jsii.String("url"),

			// the properties below are optional
			auth: &httpAuthorizationProperty{
				sigv4: &sigV4AuthorizationProperty{
					roleArn: jsii.String("roleArn"),
					serviceName: jsii.String("serviceName"),
					signingRegion: jsii.String("signingRegion"),
				},
			},
			confirmationUrl: jsii.String("confirmationUrl"),
			headers: []interface{}{
				&httpActionHeaderProperty{
					key: jsii.String("key"),
					value: jsii.String("value"),
				},
			},
		},
		iotAnalytics: &iotAnalyticsActionProperty{
			channelName: jsii.String("channelName"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			batchMode: jsii.Boolean(false),
		},
		iotEvents: &iotEventsActionProperty{
			inputName: jsii.String("inputName"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			batchMode: jsii.Boolean(false),
			messageId: jsii.String("messageId"),
		},
		iotSiteWise: &iotSiteWiseActionProperty{
			putAssetPropertyValueEntries: []interface{}{
				&putAssetPropertyValueEntryProperty{
					propertyValues: []interface{}{
						&assetPropertyValueProperty{
							timestamp: &assetPropertyTimestampProperty{
								timeInSeconds: jsii.String("timeInSeconds"),

								// the properties below are optional
								offsetInNanos: jsii.String("offsetInNanos"),
							},
							value: &assetPropertyVariantProperty{
								booleanValue: jsii.String("booleanValue"),
								doubleValue: jsii.String("doubleValue"),
								integerValue: jsii.String("integerValue"),
								stringValue: jsii.String("stringValue"),
							},

							// the properties below are optional
							quality: jsii.String("quality"),
						},
					},

					// the properties below are optional
					assetId: jsii.String("assetId"),
					entryId: jsii.String("entryId"),
					propertyAlias: jsii.String("propertyAlias"),
					propertyId: jsii.String("propertyId"),
				},
			},
			roleArn: jsii.String("roleArn"),
		},
		kafka: &kafkaActionProperty{
			clientProperties: map[string]*string{
				"clientPropertiesKey": jsii.String("clientProperties"),
			},
			destinationArn: jsii.String("destinationArn"),
			topic: jsii.String("topic"),

			// the properties below are optional
			key: jsii.String("key"),
			partition: jsii.String("partition"),
		},
		kinesis: &kinesisActionProperty{
			roleArn: jsii.String("roleArn"),
			streamName: jsii.String("streamName"),

			// the properties below are optional
			partitionKey: jsii.String("partitionKey"),
		},
		lambda: &lambdaActionProperty{
			functionArn: jsii.String("functionArn"),
		},
		location: &locationActionProperty{
			deviceId: jsii.String("deviceId"),
			latitude: jsii.String("latitude"),
			longitude: jsii.String("longitude"),
			roleArn: jsii.String("roleArn"),
			trackerName: jsii.String("trackerName"),

			// the properties below are optional
			timestamp: NewDate(),
		},
		openSearch: &openSearchActionProperty{
			endpoint: jsii.String("endpoint"),
			id: jsii.String("id"),
			index: jsii.String("index"),
			roleArn: jsii.String("roleArn"),
			type: jsii.String("type"),
		},
		republish: &republishActionProperty{
			roleArn: jsii.String("roleArn"),
			topic: jsii.String("topic"),

			// the properties below are optional
			headers: &republishActionHeadersProperty{
				contentType: jsii.String("contentType"),
				correlationData: jsii.String("correlationData"),
				messageExpiry: jsii.String("messageExpiry"),
				payloadFormatIndicator: jsii.String("payloadFormatIndicator"),
				responseTopic: jsii.String("responseTopic"),
				userProperties: []interface{}{
					&userPropertyProperty{
						key: jsii.String("key"),
						value: jsii.String("value"),
					},
				},
			},
			qos: jsii.Number(123),
		},
		s3: &s3ActionProperty{
			bucketName: jsii.String("bucketName"),
			key: jsii.String("key"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			cannedAcl: jsii.String("cannedAcl"),
		},
		sns: &snsActionProperty{
			roleArn: jsii.String("roleArn"),
			targetArn: jsii.String("targetArn"),

			// the properties below are optional
			messageFormat: jsii.String("messageFormat"),
		},
		sqs: &sqsActionProperty{
			queueUrl: jsii.String("queueUrl"),
			roleArn: jsii.String("roleArn"),

			// the properties below are optional
			useBase64: jsii.Boolean(false),
		},
		stepFunctions: &stepFunctionsActionProperty{
			roleArn: jsii.String("roleArn"),
			stateMachineName: jsii.String("stateMachineName"),

			// the properties below are optional
			executionNamePrefix: jsii.String("executionNamePrefix"),
		},
		timestream: &timestreamActionProperty{
			databaseName: jsii.String("databaseName"),
			dimensions: []interface{}{
				&timestreamDimensionProperty{
					name: jsii.String("name"),
					value: jsii.String("value"),
				},
			},
			roleArn: jsii.String("roleArn"),
			tableName: jsii.String("tableName"),

			// the properties below are optional
			timestamp: &timestreamTimestampProperty{
				unit: jsii.String("unit"),
				value: jsii.String("value"),
			},
		},
	},
	ruleDisabled: jsii.Boolean(false),
}

type CfnTopicRule_UserPropertyProperty

type CfnTopicRule_UserPropertyProperty struct {
	// A key to be specified in `UserProperty` .
	Key *string `field:"required" json:"key" yaml:"key"`
	// A value to be specified in `UserProperty` .
	Value *string `field:"required" json:"value" yaml:"value"`
}

A key-value pair that you define in the header.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

userPropertyProperty := &userPropertyProperty{
	key: jsii.String("key"),
	value: jsii.String("value"),
}

type IAction

type IAction interface {
	// Returns the topic rule action specification.
	// Experimental.
	Bind(topicRule ITopicRule) *ActionConfig
}

An abstract action for TopicRule. Experimental.

type ITopicRule

type ITopicRule interface {
	awscdk.IResource
	// The value of the topic rule Amazon Resource Name (ARN), such as arn:aws:iot:us-east-2:123456789012:rule/rule_name.
	// Experimental.
	TopicRuleArn() *string
	// The name topic rule.
	// Experimental.
	TopicRuleName() *string
}

Represents an AWS IoT Rule. Experimental.

func TopicRule_FromTopicRuleArn

func TopicRule_FromTopicRuleArn(scope constructs.Construct, id *string, topicRuleArn *string) ITopicRule

Import an existing AWS IoT Rule provided an ARN. Experimental.

type IotSql

type IotSql interface {
	// Returns the IoT SQL configuration.
	// Experimental.
	Bind(scope constructs.Construct) *IotSqlConfig
}

Defines AWS IoT SQL.

Example:

bucket := s3.NewBucket(this, jsii.String("MyBucket"))

iot.NewTopicRule(this, jsii.String("TopicRule"), &topicRuleProps{
	sql: iot.iotSql.fromStringAsVer20160323(jsii.String("SELECT * FROM 'device/+/data'")),
	actions: []iAction{
		actions.NewS3PutObjectAction(bucket, &s3PutObjectActionProps{
			accessControl: s3.bucketAccessControl_PUBLIC_READ,
		}),
	},
})

Experimental.

func IotSql_FromStringAsVer20151008

func IotSql_FromStringAsVer20151008(sql *string) IotSql

Uses the original SQL version built on 2015-10-08.

Returns: Instance of IotSql. Experimental.

func IotSql_FromStringAsVer20160323

func IotSql_FromStringAsVer20160323(sql *string) IotSql

Uses the SQL version built on 2016-03-23.

Returns: Instance of IotSql. Experimental.

func IotSql_FromStringAsVerNewestUnstable

func IotSql_FromStringAsVerNewestUnstable(sql *string) IotSql

Uses the most recent beta SQL version.

If you use this version, it might introduce breaking changes to your rules.

Returns: Instance of IotSql. Experimental.

type IotSqlConfig

type IotSqlConfig struct {
	// The version of the SQL rules engine to use when evaluating the rule.
	// Experimental.
	AwsIotSqlVersion *string `field:"required" json:"awsIotSqlVersion" yaml:"awsIotSqlVersion"`
	// The SQL statement used to query the topic.
	// Experimental.
	Sql *string `field:"required" json:"sql" yaml:"sql"`
}

The type returned from the `bind()` method in {@link IotSql}.

Example:

// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import "github.com/aws/aws-cdk-go/awscdk"

iotSqlConfig := &iotSqlConfig{
	awsIotSqlVersion: jsii.String("awsIotSqlVersion"),
	sql: jsii.String("sql"),
}

Experimental.

type TopicRule

type TopicRule interface {
	awscdk.Resource
	ITopicRule
	// The environment this resource belongs to.
	//
	// For resources that are created and managed by the CDK
	// (generally, those created by creating new class instances like Role, Bucket, etc.),
	// this is always the same as the environment of the stack they belong to;
	// however, for imported resources
	// (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
	// that might be different than the stack they were imported into.
	// Experimental.
	Env() *awscdk.ResourceEnvironment
	// The construct tree node associated with this construct.
	// Experimental.
	Node() awscdk.ConstructNode
	// Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.
	//
	// This value will resolve to one of the following:
	// - a concrete value (e.g. `"my-awesome-bucket"`)
	// - `undefined`, when a name should be generated by CloudFormation
	// - a concrete name generated automatically during synthesis, in
	//    cross-environment scenarios.
	// Experimental.
	PhysicalName() *string
	// The stack in which this resource is defined.
	// Experimental.
	Stack() awscdk.Stack
	// Arn of this topic rule.
	// Experimental.
	TopicRuleArn() *string
	// Name of this topic rule.
	// Experimental.
	TopicRuleName() *string
	// Add a action to the topic rule.
	// Experimental.
	AddAction(action IAction)
	// Apply the given removal policy to this resource.
	//
	// The Removal Policy controls what happens to this resource when it stops
	// being managed by CloudFormation, either because you've removed it from the
	// CDK application or because you've made a change that requires the resource
	// to be replaced.
	//
	// The resource can be deleted (`RemovalPolicy.DESTROY`), or left in your AWS
	// account for data recovery and cleanup later (`RemovalPolicy.RETAIN`).
	// Experimental.
	ApplyRemovalPolicy(policy awscdk.RemovalPolicy)
	// Experimental.
	GeneratePhysicalName() *string
	// Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. `bucket.bucketArn`).
	//
	// Normally, this token will resolve to `arnAttr`, but if the resource is
	// referenced across environments, `arnComponents` will be used to synthesize
	// a concrete ARN with the resource's physical name. Make sure to reference
	// `this.physicalName` in `arnComponents`.
	// Experimental.
	GetResourceArnAttribute(arnAttr *string, arnComponents *awscdk.ArnComponents) *string
	// Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. `bucket.bucketName`).
	//
	// Normally, this token will resolve to `nameAttr`, but if the resource is
	// referenced across environments, it will be resolved to `this.physicalName`,
	// which will be a concrete name.
	// Experimental.
	GetResourceNameAttribute(nameAttr *string) *string
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	OnPrepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	OnSynthesize(session constructs.ISynthesisSession)
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	OnValidate() *[]*string
	// Perform final modifications before synthesis.
	//
	// This method can be implemented by derived constructs in order to perform
	// final changes before synthesis. prepare() will be called after child
	// constructs have been prepared.
	//
	// This is an advanced framework feature. Only use this if you
	// understand the implications.
	// Experimental.
	Prepare()
	// Allows this construct to emit artifacts into the cloud assembly during synthesis.
	//
	// This method is usually implemented by framework-level constructs such as `Stack` and `Asset`
	// as they participate in synthesizing the cloud assembly.
	// Experimental.
	Synthesize(session awscdk.ISynthesisSession)
	// Returns a string representation of this construct.
	// Experimental.
	ToString() *string
	// Validate the current construct.
	//
	// This method can be implemented by derived constructs in order to perform
	// validation logic. It is called on all constructs before synthesis.
	//
	// Returns: An array of validation error messages, or an empty array if the construct is valid.
	// Experimental.
	Validate() *[]*string
}

Defines an AWS IoT Rule in this stack.

Example:

bucket := s3.NewBucket(this, jsii.String("MyBucket"))

iot.NewTopicRule(this, jsii.String("TopicRule"), &topicRuleProps{
	sql: iot.iotSql.fromStringAsVer20160323(jsii.String("SELECT * FROM 'device/+/data'")),
	actions: []iAction{
		actions.NewS3PutObjectAction(bucket, &s3PutObjectActionProps{
			accessControl: s3.bucketAccessControl_PUBLIC_READ,
		}),
	},
})

Experimental.

func NewTopicRule

func NewTopicRule(scope constructs.Construct, id *string, props *TopicRuleProps) TopicRule

Experimental.

type TopicRuleProps

type TopicRuleProps struct {
	// A simplified SQL syntax to filter messages received on an MQTT topic and push the data elsewhere.
	// See: https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html
	//
	// Experimental.
	Sql IotSql `field:"required" json:"sql" yaml:"sql"`
	// The actions associated with the topic rule.
	// Experimental.
	Actions *[]IAction `field:"optional" json:"actions" yaml:"actions"`
	// A textual description of the topic rule.
	// Experimental.
	Description *string `field:"optional" json:"description" yaml:"description"`
	// Specifies whether the rule is enabled.
	// Experimental.
	Enabled *bool `field:"optional" json:"enabled" yaml:"enabled"`
	// The action AWS IoT performs when it is unable to perform a rule's action.
	// Experimental.
	ErrorAction IAction `field:"optional" json:"errorAction" yaml:"errorAction"`
	// The name of the topic rule.
	// Experimental.
	TopicRuleName *string `field:"optional" json:"topicRuleName" yaml:"topicRuleName"`
}

Properties for defining an AWS IoT Rule.

Example:

bucket := s3.NewBucket(this, jsii.String("MyBucket"))

iot.NewTopicRule(this, jsii.String("TopicRule"), &topicRuleProps{
	sql: iot.iotSql.fromStringAsVer20160323(jsii.String("SELECT * FROM 'device/+/data'")),
	actions: []iAction{
		actions.NewS3PutObjectAction(bucket, &s3PutObjectActionProps{
			accessControl: s3.bucketAccessControl_PUBLIC_READ,
		}),
	},
})

Experimental.

Source Files

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL