io.cloudshiftdev.awscdk.services.events.CfnRuleProps.kt Maven / Gradle / Ivy
The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")
package io.cloudshiftdev.awscdk.services.events
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
/**
* Properties for defining a `CfnRule`.
*
* Example:
*
* ```
* // The code below shows an example of how to instantiate this type.
* // The values are placeholders you should change.
* import io.cloudshiftdev.awscdk.services.events.*;
* Object eventPattern;
* CfnRuleProps cfnRuleProps = CfnRuleProps.builder()
* .description("description")
* .eventBusName("eventBusName")
* .eventPattern(eventPattern)
* .name("name")
* .roleArn("roleArn")
* .scheduleExpression("scheduleExpression")
* .state("state")
* .targets(List.of(TargetProperty.builder()
* .arn("arn")
* .id("id")
* // the properties below are optional
* .appSyncParameters(AppSyncParametersProperty.builder()
* .graphQlOperation("graphQlOperation")
* .build())
* .batchParameters(BatchParametersProperty.builder()
* .jobDefinition("jobDefinition")
* .jobName("jobName")
* // the properties below are optional
* .arrayProperties(BatchArrayPropertiesProperty.builder()
* .size(123)
* .build())
* .retryStrategy(BatchRetryStrategyProperty.builder()
* .attempts(123)
* .build())
* .build())
* .deadLetterConfig(DeadLetterConfigProperty.builder()
* .arn("arn")
* .build())
* .ecsParameters(EcsParametersProperty.builder()
* .taskDefinitionArn("taskDefinitionArn")
* // the properties below are optional
* .capacityProviderStrategy(List.of(CapacityProviderStrategyItemProperty.builder()
* .capacityProvider("capacityProvider")
* // the properties below are optional
* .base(123)
* .weight(123)
* .build()))
* .enableEcsManagedTags(false)
* .enableExecuteCommand(false)
* .group("group")
* .launchType("launchType")
* .networkConfiguration(NetworkConfigurationProperty.builder()
* .awsVpcConfiguration(AwsVpcConfigurationProperty.builder()
* .subnets(List.of("subnets"))
* // the properties below are optional
* .assignPublicIp("assignPublicIp")
* .securityGroups(List.of("securityGroups"))
* .build())
* .build())
* .placementConstraints(List.of(PlacementConstraintProperty.builder()
* .expression("expression")
* .type("type")
* .build()))
* .placementStrategies(List.of(PlacementStrategyProperty.builder()
* .field("field")
* .type("type")
* .build()))
* .platformVersion("platformVersion")
* .propagateTags("propagateTags")
* .referenceId("referenceId")
* .tagList(List.of(CfnTag.builder()
* .key("key")
* .value("value")
* .build()))
* .taskCount(123)
* .build())
* .httpParameters(HttpParametersProperty.builder()
* .headerParameters(Map.of(
* "headerParametersKey", "headerParameters"))
* .pathParameterValues(List.of("pathParameterValues"))
* .queryStringParameters(Map.of(
* "queryStringParametersKey", "queryStringParameters"))
* .build())
* .input("input")
* .inputPath("inputPath")
* .inputTransformer(InputTransformerProperty.builder()
* .inputTemplate("inputTemplate")
* // the properties below are optional
* .inputPathsMap(Map.of(
* "inputPathsMapKey", "inputPathsMap"))
* .build())
* .kinesisParameters(KinesisParametersProperty.builder()
* .partitionKeyPath("partitionKeyPath")
* .build())
* .redshiftDataParameters(RedshiftDataParametersProperty.builder()
* .database("database")
* // the properties below are optional
* .dbUser("dbUser")
* .secretManagerArn("secretManagerArn")
* .sql("sql")
* .sqls(List.of("sqls"))
* .statementName("statementName")
* .withEvent(false)
* .build())
* .retryPolicy(RetryPolicyProperty.builder()
* .maximumEventAgeInSeconds(123)
* .maximumRetryAttempts(123)
* .build())
* .roleArn("roleArn")
* .runCommandParameters(RunCommandParametersProperty.builder()
* .runCommandTargets(List.of(RunCommandTargetProperty.builder()
* .key("key")
* .values(List.of("values"))
* .build()))
* .build())
* .sageMakerPipelineParameters(SageMakerPipelineParametersProperty.builder()
* .pipelineParameterList(List.of(SageMakerPipelineParameterProperty.builder()
* .name("name")
* .value("value")
* .build()))
* .build())
* .sqsParameters(SqsParametersProperty.builder()
* .messageGroupId("messageGroupId")
* .build())
* .build()))
* .build();
* ```
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html)
*/
public interface CfnRuleProps {
/**
* The description of the rule.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-description)
*/
public fun description(): String? = unwrap(this).getDescription()
/**
* The name or ARN of the event bus associated with the rule.
*
* If you omit this, the default event bus is used.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventbusname)
*/
public fun eventBusName(): String? = unwrap(this).getEventBusName()
/**
* The event pattern of the rule.
*
* For more information, see [Events and Event
* Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)
* in the **Amazon EventBridge User Guide** .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventpattern)
*/
public fun eventPattern(): Any? = unwrap(this).getEventPattern()
/**
* The name of the rule.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-name)
*/
public fun name(): String? = unwrap(this).getName()
/**
* The Amazon Resource Name (ARN) of the role that is used for target invocation.
*
* If you're setting an event bus in another account as the target and that account granted
* permission to your account through an organization instead of directly by the account ID, you must
* specify a `RoleArn` with proper permissions in the `Target` structure, instead of here in this
* parameter.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-rolearn)
*/
public fun roleArn(): String? = unwrap(this).getRoleArn()
/**
* The scheduling expression.
*
* For example, "cron(0 20 * * ? *)", "rate(5 minutes)". For more information, see [Creating an
* Amazon EventBridge rule that runs on a
* schedule](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html) .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression)
*/
public fun scheduleExpression(): String? = unwrap(this).getScheduleExpression()
/**
* The state of the rule.
*
* Valid values include:
*
* * `DISABLED` : The rule is disabled. EventBridge does not match any events against the rule.
* * `ENABLED` : The rule is enabled. EventBridge matches events against the rule, *except* for
* AWS management events delivered through CloudTrail.
* * `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` : The rule is enabled for all events,
* including AWS management events delivered through CloudTrail.
*
* Management events provide visibility into management operations that are performed on resources
* in your AWS account. These are also known as control plane operations. For more information, see
* [Logging management
* events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)
* in the *CloudTrail User Guide* , and [Filtering management events from AWS
* services](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-service-event-cloudtrail)
* in the **Amazon EventBridge User Guide** .
*
* This value is only valid for rules on the
* [default](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is-how-it-works-concepts.html#eb-bus-concepts-buses)
* event bus or [custom event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-event-bus.html) . It
* does not apply to [partner event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html) .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state)
*/
public fun state(): String? = unwrap(this).getState()
/**
* Adds the specified targets to the specified rule, or updates the targets if they are already
* associated with the rule.
*
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the **Amazon
* EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you can
* use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets` .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events to
* another account, your account is charged for each sent event. Each event sent to another account
* is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/) .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the target
* is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then you
* must specify a `RoleArn` with proper permissions in the `Target` structure. For more information,
* see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a role
* on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden with
* this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only the
* part of the event specified in the path is passed to the target (for example, only the detail part
* of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take effect.
*
* This action can partially fail if too many requests are made at the same time. If that happens,
* `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries` provides the ID
* of the failed target and the error code.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-targets)
*/
public fun targets(): Any? = unwrap(this).getTargets()
/**
* A builder for [CfnRuleProps]
*/
@CdkDslMarker
public interface Builder {
/**
* @param description The description of the rule.
*/
public fun description(description: String)
/**
* @param eventBusName The name or ARN of the event bus associated with the rule.
* If you omit this, the default event bus is used.
*/
public fun eventBusName(eventBusName: String)
/**
* @param eventPattern The event pattern of the rule.
* For more information, see [Events and Event
* Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)
* in the **Amazon EventBridge User Guide** .
*/
public fun eventPattern(eventPattern: Any)
/**
* @param name The name of the rule.
*/
public fun name(name: String)
/**
* @param roleArn The Amazon Resource Name (ARN) of the role that is used for target invocation.
* If you're setting an event bus in another account as the target and that account granted
* permission to your account through an organization instead of directly by the account ID, you
* must specify a `RoleArn` with proper permissions in the `Target` structure, instead of here in
* this parameter.
*/
public fun roleArn(roleArn: String)
/**
* @param scheduleExpression The scheduling expression.
* For example, "cron(0 20 * * ? *)", "rate(5 minutes)". For more information, see [Creating an
* Amazon EventBridge rule that runs on a
* schedule](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)
* .
*/
public fun scheduleExpression(scheduleExpression: String)
/**
* @param state The state of the rule.
* Valid values include:
*
* * `DISABLED` : The rule is disabled. EventBridge does not match any events against the rule.
* * `ENABLED` : The rule is enabled. EventBridge matches events against the rule, *except* for
* AWS management events delivered through CloudTrail.
* * `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` : The rule is enabled for all events,
* including AWS management events delivered through CloudTrail.
*
* Management events provide visibility into management operations that are performed on
* resources in your AWS account. These are also known as control plane operations. For more
* information, see [Logging management
* events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)
* in the *CloudTrail User Guide* , and [Filtering management events from AWS
* services](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-service-event-cloudtrail)
* in the **Amazon EventBridge User Guide** .
*
* This value is only valid for rules on the
* [default](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is-how-it-works-concepts.html#eb-bus-concepts-buses)
* event bus or [custom event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-event-bus.html) . It
* does not apply to [partner event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html) .
*/
public fun state(state: String)
/**
* @param targets Adds the specified targets to the specified rule, or updates the targets if
* they are already associated with the rule.
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the
* **Amazon EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you
* can use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets`
* .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events
* to another account, your account is charged for each sent event. Each event sent to another
* account is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/)
* .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the
* target is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then
* you must specify a `RoleArn` with proper permissions in the `Target` structure. For more
* information, see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a
* role on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden
* with this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only
* the part of the event specified in the path is passed to the target (for example, only the
* detail part of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take
* effect.
*
* This action can partially fail if too many requests are made at the same time. If that
* happens, `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries`
* provides the ID of the failed target and the error code.
*/
public fun targets(targets: IResolvable)
/**
* @param targets Adds the specified targets to the specified rule, or updates the targets if
* they are already associated with the rule.
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the
* **Amazon EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you
* can use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets`
* .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events
* to another account, your account is charged for each sent event. Each event sent to another
* account is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/)
* .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the
* target is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then
* you must specify a `RoleArn` with proper permissions in the `Target` structure. For more
* information, see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a
* role on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden
* with this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only
* the part of the event specified in the path is passed to the target (for example, only the
* detail part of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take
* effect.
*
* This action can partially fail if too many requests are made at the same time. If that
* happens, `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries`
* provides the ID of the failed target and the error code.
*/
public fun targets(targets: List)
/**
* @param targets Adds the specified targets to the specified rule, or updates the targets if
* they are already associated with the rule.
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the
* **Amazon EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you
* can use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets`
* .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events
* to another account, your account is charged for each sent event. Each event sent to another
* account is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/)
* .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the
* target is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then
* you must specify a `RoleArn` with proper permissions in the `Target` structure. For more
* information, see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a
* role on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden
* with this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only
* the part of the event specified in the path is passed to the target (for example, only the
* detail part of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take
* effect.
*
* This action can partially fail if too many requests are made at the same time. If that
* happens, `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries`
* provides the ID of the failed target and the error code.
*/
public fun targets(vararg targets: Any)
}
private class BuilderImpl : Builder {
private val cdkBuilder: software.amazon.awscdk.services.events.CfnRuleProps.Builder =
software.amazon.awscdk.services.events.CfnRuleProps.builder()
/**
* @param description The description of the rule.
*/
override fun description(description: String) {
cdkBuilder.description(description)
}
/**
* @param eventBusName The name or ARN of the event bus associated with the rule.
* If you omit this, the default event bus is used.
*/
override fun eventBusName(eventBusName: String) {
cdkBuilder.eventBusName(eventBusName)
}
/**
* @param eventPattern The event pattern of the rule.
* For more information, see [Events and Event
* Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)
* in the **Amazon EventBridge User Guide** .
*/
override fun eventPattern(eventPattern: Any) {
cdkBuilder.eventPattern(eventPattern)
}
/**
* @param name The name of the rule.
*/
override fun name(name: String) {
cdkBuilder.name(name)
}
/**
* @param roleArn The Amazon Resource Name (ARN) of the role that is used for target invocation.
* If you're setting an event bus in another account as the target and that account granted
* permission to your account through an organization instead of directly by the account ID, you
* must specify a `RoleArn` with proper permissions in the `Target` structure, instead of here in
* this parameter.
*/
override fun roleArn(roleArn: String) {
cdkBuilder.roleArn(roleArn)
}
/**
* @param scheduleExpression The scheduling expression.
* For example, "cron(0 20 * * ? *)", "rate(5 minutes)". For more information, see [Creating an
* Amazon EventBridge rule that runs on a
* schedule](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)
* .
*/
override fun scheduleExpression(scheduleExpression: String) {
cdkBuilder.scheduleExpression(scheduleExpression)
}
/**
* @param state The state of the rule.
* Valid values include:
*
* * `DISABLED` : The rule is disabled. EventBridge does not match any events against the rule.
* * `ENABLED` : The rule is enabled. EventBridge matches events against the rule, *except* for
* AWS management events delivered through CloudTrail.
* * `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` : The rule is enabled for all events,
* including AWS management events delivered through CloudTrail.
*
* Management events provide visibility into management operations that are performed on
* resources in your AWS account. These are also known as control plane operations. For more
* information, see [Logging management
* events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)
* in the *CloudTrail User Guide* , and [Filtering management events from AWS
* services](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-service-event-cloudtrail)
* in the **Amazon EventBridge User Guide** .
*
* This value is only valid for rules on the
* [default](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is-how-it-works-concepts.html#eb-bus-concepts-buses)
* event bus or [custom event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-event-bus.html) . It
* does not apply to [partner event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html) .
*/
override fun state(state: String) {
cdkBuilder.state(state)
}
/**
* @param targets Adds the specified targets to the specified rule, or updates the targets if
* they are already associated with the rule.
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the
* **Amazon EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you
* can use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets`
* .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events
* to another account, your account is charged for each sent event. Each event sent to another
* account is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/)
* .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the
* target is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then
* you must specify a `RoleArn` with proper permissions in the `Target` structure. For more
* information, see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a
* role on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden
* with this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only
* the part of the event specified in the path is passed to the target (for example, only the
* detail part of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take
* effect.
*
* This action can partially fail if too many requests are made at the same time. If that
* happens, `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries`
* provides the ID of the failed target and the error code.
*/
override fun targets(targets: IResolvable) {
cdkBuilder.targets(targets.let(IResolvable.Companion::unwrap))
}
/**
* @param targets Adds the specified targets to the specified rule, or updates the targets if
* they are already associated with the rule.
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the
* **Amazon EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you
* can use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets`
* .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events
* to another account, your account is charged for each sent event. Each event sent to another
* account is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/)
* .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the
* target is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then
* you must specify a `RoleArn` with proper permissions in the `Target` structure. For more
* information, see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a
* role on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden
* with this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only
* the part of the event specified in the path is passed to the target (for example, only the
* detail part of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take
* effect.
*
* This action can partially fail if too many requests are made at the same time. If that
* happens, `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries`
* provides the ID of the failed target and the error code.
*/
override fun targets(targets: List) {
cdkBuilder.targets(targets.map{CdkObjectWrappers.unwrap(it)})
}
/**
* @param targets Adds the specified targets to the specified rule, or updates the targets if
* they are already associated with the rule.
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the
* **Amazon EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you
* can use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets`
* .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events
* to another account, your account is charged for each sent event. Each event sent to another
* account is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/)
* .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the
* target is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then
* you must specify a `RoleArn` with proper permissions in the `Target` structure. For more
* information, see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a
* role on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden
* with this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only
* the part of the event specified in the path is passed to the target (for example, only the
* detail part of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take
* effect.
*
* This action can partially fail if too many requests are made at the same time. If that
* happens, `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries`
* provides the ID of the failed target and the error code.
*/
override fun targets(vararg targets: Any): Unit = targets(targets.toList())
public fun build(): software.amazon.awscdk.services.events.CfnRuleProps = cdkBuilder.build()
}
private class Wrapper(
cdkObject: software.amazon.awscdk.services.events.CfnRuleProps,
) : CdkObject(cdkObject),
CfnRuleProps {
/**
* The description of the rule.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-description)
*/
override fun description(): String? = unwrap(this).getDescription()
/**
* The name or ARN of the event bus associated with the rule.
*
* If you omit this, the default event bus is used.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventbusname)
*/
override fun eventBusName(): String? = unwrap(this).getEventBusName()
/**
* The event pattern of the rule.
*
* For more information, see [Events and Event
* Patterns](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)
* in the **Amazon EventBridge User Guide** .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-eventpattern)
*/
override fun eventPattern(): Any? = unwrap(this).getEventPattern()
/**
* The name of the rule.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-name)
*/
override fun name(): String? = unwrap(this).getName()
/**
* The Amazon Resource Name (ARN) of the role that is used for target invocation.
*
* If you're setting an event bus in another account as the target and that account granted
* permission to your account through an organization instead of directly by the account ID, you
* must specify a `RoleArn` with proper permissions in the `Target` structure, instead of here in
* this parameter.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-rolearn)
*/
override fun roleArn(): String? = unwrap(this).getRoleArn()
/**
* The scheduling expression.
*
* For example, "cron(0 20 * * ? *)", "rate(5 minutes)". For more information, see [Creating an
* Amazon EventBridge rule that runs on a
* schedule](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)
* .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression)
*/
override fun scheduleExpression(): String? = unwrap(this).getScheduleExpression()
/**
* The state of the rule.
*
* Valid values include:
*
* * `DISABLED` : The rule is disabled. EventBridge does not match any events against the rule.
* * `ENABLED` : The rule is enabled. EventBridge matches events against the rule, *except* for
* AWS management events delivered through CloudTrail.
* * `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` : The rule is enabled for all events,
* including AWS management events delivered through CloudTrail.
*
* Management events provide visibility into management operations that are performed on
* resources in your AWS account. These are also known as control plane operations. For more
* information, see [Logging management
* events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)
* in the *CloudTrail User Guide* , and [Filtering management events from AWS
* services](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-service-event-cloudtrail)
* in the **Amazon EventBridge User Guide** .
*
* This value is only valid for rules on the
* [default](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is-how-it-works-concepts.html#eb-bus-concepts-buses)
* event bus or [custom event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-event-bus.html) . It
* does not apply to [partner event
* buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html) .
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state)
*/
override fun state(): String? = unwrap(this).getState()
/**
* Adds the specified targets to the specified rule, or updates the targets if they are already
* associated with the rule.
*
* Targets are the resources that are invoked when a rule is triggered.
*
* The maximum number of entries per request is 10.
*
*
* Each rule can have up to five (5) targets associated with it at one time.
*
*
* For a list of services you can configure as targets for events, see [EventBridge
* targets](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) in the
* **Amazon EventBridge User Guide** .
*
* Creating rules with built-in targets is supported only in the AWS Management Console . The
* built-in targets are:
*
* * `Amazon EBS CreateSnapshot API call`
* * `Amazon EC2 RebootInstances API call`
* * `Amazon EC2 StopInstances API call`
* * `Amazon EC2 TerminateInstances API call`
*
* For some target types, `PutTargets` provides target-specific parameters. If the target is a
* Kinesis data stream, you can optionally specify which shard the event goes to by using the
* `KinesisParameters` argument. To invoke a command on multiple EC2 instances with one rule, you
* can use the `RunCommandParameters` field.
*
* To be able to make API calls against the resources that you own, Amazon EventBridge needs the
* appropriate permissions:
*
* * For AWS Lambda and Amazon SNS resources, EventBridge relies on resource-based policies.
* * For EC2 instances, Kinesis Data Streams, AWS Step Functions state machines and API Gateway
* APIs, EventBridge relies on IAM roles that you specify in the `RoleARN` argument in `PutTargets`
* .
*
* For more information, see [Authentication and Access
* Control](https://docs.aws.amazon.com/eventbridge/latest/userguide/auth-and-access-control-eventbridge.html)
* in the **Amazon EventBridge User Guide** .
*
* If another AWS account is in the same region and has granted you permission (using
* `PutPermission` ), you can send events to that account. Set that account's event bus as a target
* of the rules in your account. To send the matched events to the other account, specify that
* account's event bus as the `Arn` value when you run `PutTargets` . If your account sends events
* to another account, your account is charged for each sent event. Each event sent to another
* account is charged as a custom event. The account receiving the event is not charged. For more
* information, see [Amazon EventBridge Pricing](https://docs.aws.amazon.com/eventbridge/pricing/)
* .
*
*
* `Input` , `InputPath` , and `InputTransformer` are not available with `PutTarget` if the
* target is an event bus of a different AWS account.
*
*
* If you are setting the event bus of another account as the target, and that account granted
* permission to your account through an organization instead of directly by the account ID, then
* you must specify a `RoleArn` with proper permissions in the `Target` structure. For more
* information, see [Sending and Receiving Events Between AWS
* Accounts](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-cross-account-event-delivery.html)
* in the *Amazon EventBridge User Guide* .
*
*
* If you have an IAM role on a cross-account event bus target, a `PutTargets` call without a
* role on the same target (same `Id` and `Arn` ) will not remove the role.
*
*
* For more information about enabling cross-account events, see
* [PutPermission](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutPermission.html)
* .
*
* *Input* , *InputPath* , and *InputTransformer* are mutually exclusive and optional parameters
* of a target. When a rule is triggered due to a matched event:
*
* * If none of the following arguments are specified for a target, then the entire event is
* passed to the target in JSON format (unless the target is Amazon EC2 Run Command or Amazon ECS
* task, in which case nothing from the event is passed to the target).
* * If *Input* is specified in the form of valid JSON, then the matched event is overridden
* with this constant.
* * If *InputPath* is specified in the form of JSONPath (for example, `$.detail` ), then only
* the part of the event specified in the path is passed to the target (for example, only the
* detail part of the event is passed).
* * If *InputTransformer* is specified, then one or more specified JSONPaths are extracted from
* the event and used as values in a template that you specify as the input to the target.
*
* When you specify `InputPath` or `InputTransformer` , you must use JSON dot notation, not
* bracket notation.
*
* When you add targets to a rule and the associated rule triggers soon after, new or updated
* targets might not be immediately invoked. Allow a short period of time for changes to take
* effect.
*
* This action can partially fail if too many requests are made at the same time. If that
* happens, `FailedEntryCount` is non-zero in the response and each entry in `FailedEntries`
* provides the ID of the failed target and the error code.
*
* [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-targets)
*/
override fun targets(): Any? = unwrap(this).getTargets()
}
public companion object {
public operator fun invoke(block: Builder.() -> Unit = {}): CfnRuleProps {
val builderImpl = BuilderImpl()
return Wrapper(builderImpl.apply(block).build())
}
internal fun wrap(cdkObject: software.amazon.awscdk.services.events.CfnRuleProps): CfnRuleProps
= CdkObjectWrappers.wrap(cdkObject) as? CfnRuleProps ?: Wrapper(cdkObject)
internal fun unwrap(wrapped: CfnRuleProps): software.amazon.awscdk.services.events.CfnRuleProps
= (wrapped as CdkObject).cdkObject as software.amazon.awscdk.services.events.CfnRuleProps
}
}