java.lang.Object
software.amazon.jsii.JsiiObject
software.constructs.Construct
All Implemented Interfaces:
IInspectable, software.amazon.jsii.JsiiSerializable, software.constructs.IConstruct, software.constructs.IDependable

@Generated(value="jsii-pacmak/1.98.0 (build 00b106d)", date="2024-05-08T21:35:07.411Z") @Stability(Stable) public class CfnRule extends CfnResource implements IInspectable
Creates or updates the specified rule.

Rules are enabled by default, or based on value of the state. You can disable a rule using DisableRule .

A single rule watches for events from a single event bus. Events generated by AWS services go to your account's default event bus. Events generated by SaaS partner services or applications go to the matching partner event bus. If you have custom applications or services, you can specify whether their events go to your default event bus or a custom event bus that you have created. For more information, see CreateEventBus .

If you are updating an existing rule, the rule is replaced with what you specify in this PutRule command. If you omit arguments in PutRule , the old values for those arguments are not kept. Instead, they are replaced with null values.

When you create or update a rule, incoming events might not immediately start matching to new or updated rules. Allow a short period of time for changes to take effect.

A rule must contain at least an EventPattern or ScheduleExpression. Rules with EventPatterns are triggered when a matching event is observed. Rules with ScheduleExpressions self-trigger based on the given schedule. A rule can have both an EventPattern and a ScheduleExpression, in which case the rule triggers on matching events as well as on a schedule.

Most services in AWS treat : or / as the same character in Amazon Resource Names (ARNs). However, EventBridge uses an exact match in event patterns and rules. Be sure to use the correct ARN characters when creating event patterns so that they match the ARN syntax in the event you want to match.

In EventBridge, it is possible to create rules that lead to infinite loops, where a rule is fired repeatedly. For example, a rule might detect that ACLs have changed on an S3 bucket, and trigger software to change them to the desired state. If the rule is not written carefully, the subsequent change to the ACLs fires the rule again, creating an infinite loop.

To prevent this, write the rules so that the triggered actions do not re-fire the same rule. For example, your rule could fire only if ACLs are found to be in a bad state, instead of after any change.

An infinite loop can quickly cause higher than expected charges. We recommend that you use budgeting, which alerts you when charges exceed your specified limit. For more information, see Managing Your Costs with Budgets .

As an aid to help you jumpstart developing CloudFormation templates, the EventBridge console enables you to create templates from the existing rules in your account. For more information, see Generating CloudFormation templates from an EventBridge rule in the Amazon EventBridge User Guide .

Example:

 // The code below shows an example of how to instantiate this type.
 // The values are placeholders you should change.
 import software.amazon.awscdk.services.events.*;
 Object eventPattern;
 CfnRule cfnRule = CfnRule.Builder.create(this, "MyCfnRule")
         .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();
 

See Also:
  • Field Details

    • CFN_RESOURCE_TYPE_NAME

      @Stability(Stable) public static final String CFN_RESOURCE_TYPE_NAME
      The CloudFormation resource type name for this resource class.
  • Constructor Details

    • CfnRule

      protected CfnRule(software.amazon.jsii.JsiiObjectRef objRef)
    • CfnRule

      protected CfnRule(software.amazon.jsii.JsiiObject.InitializationMode initializationMode)
    • CfnRule

      @Stability(Stable) public CfnRule(@NotNull software.constructs.Construct scope, @NotNull String id, @Nullable CfnRuleProps props)
      Parameters:
      scope - Scope in which this resource is defined. This parameter is required.
      id - Construct identifier for this resource (unique in its scope). This parameter is required.
      props - Resource properties.
    • CfnRule

      @Stability(Stable) public CfnRule(@NotNull software.constructs.Construct scope, @NotNull String id)
      Parameters:
      scope - Scope in which this resource is defined. This parameter is required.
      id - Construct identifier for this resource (unique in its scope). This parameter is required.
  • Method Details

    • inspect

      @Stability(Stable) public void inspect(@NotNull TreeInspector inspector)
      Examines the CloudFormation resource and discloses attributes.

      Specified by:
      inspect in interface IInspectable
      Parameters:
      inspector - tree inspector to collect and process attributes. This parameter is required.
    • renderProperties

      @Stability(Stable) @NotNull protected Map<String,Object> renderProperties(@NotNull Map<String,Object> props)
      Overrides:
      renderProperties in class CfnResource
      Parameters:
      props - This parameter is required.
    • getAttrArn

      @Stability(Stable) @NotNull public String getAttrArn()
      The ARN of the rule, such as arn:aws:events:us-east-2:123456789012:rule/example .
    • getCfnProperties

      @Stability(Stable) @NotNull protected Map<String,Object> getCfnProperties()
      Overrides:
      getCfnProperties in class CfnResource
    • getDescription

      @Stability(Stable) @Nullable public String getDescription()
      The description of the rule.
    • setDescription

      @Stability(Stable) public void setDescription(@Nullable String value)
      The description of the rule.
    • getEventBusName

      @Stability(Stable) @Nullable public String getEventBusName()
      The name or ARN of the event bus associated with the rule.
    • setEventBusName

      @Stability(Stable) public void setEventBusName(@Nullable String value)
      The name or ARN of the event bus associated with the rule.
    • getEventPattern

      @Stability(Stable) @Nullable public Object getEventPattern()
      The event pattern of the rule.
    • setEventPattern

      @Stability(Stable) public void setEventPattern(@Nullable Object value)
      The event pattern of the rule.
    • getName

      @Stability(Stable) @Nullable public String getName()
      The name of the rule.
    • setName

      @Stability(Stable) public void setName(@Nullable String value)
      The name of the rule.
    • getRoleArn

      @Stability(Stable) @Nullable public String getRoleArn()
      The Amazon Resource Name (ARN) of the role that is used for target invocation.
    • setRoleArn

      @Stability(Stable) public void setRoleArn(@Nullable String value)
      The Amazon Resource Name (ARN) of the role that is used for target invocation.
    • getScheduleExpression

      @Stability(Stable) @Nullable public String getScheduleExpression()
      The scheduling expression.
    • setScheduleExpression

      @Stability(Stable) public void setScheduleExpression(@Nullable String value)
      The scheduling expression.
    • getState

      @Stability(Stable) @Nullable public String getState()
      The state of the rule.
    • setState

      @Stability(Stable) public void setState(@Nullable String value)
      The state of the rule.
    • getTargets

      @Stability(Stable) @Nullable public Object getTargets()
      Adds the specified targets to the specified rule, or updates the targets if they are already associated with the rule.
    • setTargets

      @Stability(Stable) public void setTargets(@Nullable IResolvable value)
      Adds the specified targets to the specified rule, or updates the targets if they are already associated with the rule.
    • setTargets

      @Stability(Stable) public void setTargets(@Nullable List<Object> value)
      Adds the specified targets to the specified rule, or updates the targets if they are already associated with the rule.