Class EventTarget


  • public class EventTarget
    extends com.pulumi.resources.CustomResource
    Provides an EventBridge Target resource. > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. > **Note:** In order to be able to have your AWS Lambda function or SNS topic invoked by an EventBridge rule, you must set up the right permissions using `aws.lambda.Permission` or `aws.sns.TopicPolicy`. More info [here](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html). ## Example Usage ### Kinesis Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventRuleArgs;
     import com.pulumi.aws.kinesis.Stream;
     import com.pulumi.aws.kinesis.StreamArgs;
     import com.pulumi.aws.kinesis.inputs.StreamStreamModeDetailsArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;
     import static com.pulumi.codegen.internal.Serialization.*;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var console = new EventRule("console", EventRuleArgs.builder()
                 .name("capture-ec2-scaling-events")
                 .description("Capture all EC2 scaling events")
                 .eventPattern(serializeJson(
                     jsonObject(
                         jsonProperty("source", jsonArray("aws.autoscaling")),
                         jsonProperty("detail-type", jsonArray(
                             "EC2 Instance Launch Successful", 
                             "EC2 Instance Terminate Successful", 
                             "EC2 Instance Launch Unsuccessful", 
                             "EC2 Instance Terminate Unsuccessful"
                         ))
                     )))
                 .build());
     
             var testStream = new Stream("testStream", StreamArgs.builder()
                 .streamModeDetails(StreamStreamModeDetailsArgs.builder()
                     .streamMode("ON_DEMAND")
                     .build())
                 .name("pulumi-kinesis-test")
                 .build());
     
             var yada = new EventTarget("yada", EventTargetArgs.builder()
                 .runCommandTargets(            
                     EventTargetRunCommandTargetArgs.builder()
                         .key("tag:Name")
                         .values("FooBar")
                         .build(),
                     EventTargetRunCommandTargetArgs.builder()
                         .key("InstanceIds")
                         .values("i-162058cd308bffec2")
                         .build())
                 .targetId("Yada")
                 .rule(console.name())
                 .arn(testStream.arn())
                 .build());
     
         }
     }
     
     
    ### SSM Document Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.ssm.Document;
     import com.pulumi.aws.ssm.DocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.iam.Policy;
     import com.pulumi.aws.iam.PolicyArgs;
     import com.pulumi.aws.iam.RolePolicyAttachment;
     import com.pulumi.aws.iam.RolePolicyAttachmentArgs;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventRuleArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;
     import static com.pulumi.codegen.internal.Serialization.*;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             final var ssmLifecycleTrust = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("events.amazonaws.com")
                         .build())
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var stopInstance = new Document("stopInstance", DocumentArgs.builder()
                 .name("stop_instance")
                 .documentType("Command")
                 .content(serializeJson(
                     jsonObject(
                         jsonProperty("schemaVersion", "1.2"),
                         jsonProperty("description", "Stop an instance"),
                         jsonProperty("parameters", jsonObject(
     
                         )),
                         jsonProperty("runtimeConfig", jsonObject(
                             jsonProperty("aws:runShellScript", jsonObject(
                                 jsonProperty("properties", jsonArray(jsonObject(
                                     jsonProperty("id", "0.aws:runShellScript"),
                                     jsonProperty("runCommand", jsonArray("halt"))
                                 )))
                             ))
                         ))
                     )))
                 .build());
     
             final var ssmLifecycle = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(            
                     GetPolicyDocumentStatementArgs.builder()
                         .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                             .test("StringEquals")
                             .variable("ec2:ResourceTag/Terminate")
                             .values("*")
                             .build())
                         .effect("Allow")
                         .actions("ssm:SendCommand")
                         .resources("arn:aws:ec2:eu-west-1:1234567890:instance/*")
                         .build(),
                     GetPolicyDocumentStatementArgs.builder()
                         .effect("Allow")
                         .actions("ssm:SendCommand")
                         .resources(stopInstance.arn())
                         .build())
                 .build());
     
             var ssmLifecycleRole = new Role("ssmLifecycleRole", RoleArgs.builder()
                 .name("SSMLifecycle")
                 .assumeRolePolicy(ssmLifecycleTrust.json())
                 .build());
     
             var ssmLifecyclePolicy = new Policy("ssmLifecyclePolicy", PolicyArgs.builder()
                 .name("SSMLifecycle")
                 .policy(ssmLifecycle.applyValue(_ssmLifecycle -> _ssmLifecycle.json()))
                 .build());
     
             var ssmLifecycleRolePolicyAttachment = new RolePolicyAttachment("ssmLifecycleRolePolicyAttachment", RolePolicyAttachmentArgs.builder()
                 .policyArn(ssmLifecyclePolicy.arn())
                 .role(ssmLifecycleRole.name())
                 .build());
     
             var stopInstances = new EventRule("stopInstances", EventRuleArgs.builder()
                 .name("StopInstance")
                 .description("Stop instances nightly")
                 .scheduleExpression("cron(0 0 * * ? *)")
                 .build());
     
             var stopInstancesEventTarget = new EventTarget("stopInstancesEventTarget", EventTargetArgs.builder()
                 .runCommandTargets(EventTargetRunCommandTargetArgs.builder()
                     .key("tag:Terminate")
                     .values("midnight")
                     .build())
                 .targetId("StopInstance")
                 .arn(stopInstance.arn())
                 .rule(stopInstances.name())
                 .roleArn(ssmLifecycleRole.arn())
                 .build());
     
         }
     }
     
     
    ### RunCommand Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventRuleArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetRunCommandTargetArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var stopInstances = new EventRule("stopInstances", EventRuleArgs.builder()
                 .name("StopInstance")
                 .description("Stop instances nightly")
                 .scheduleExpression("cron(0 0 * * ? *)")
                 .build());
     
             var stopInstancesEventTarget = new EventTarget("stopInstancesEventTarget", EventTargetArgs.builder()
                 .runCommandTargets(EventTargetRunCommandTargetArgs.builder()
                     .key("tag:Terminate")
                     .values("midnight")
                     .build())
                 .targetId("StopInstance")
                 .arn(String.format("arn:aws:ssm:%s::document/AWS-RunShellScript", awsRegion))
                 .input("{\"commands\":[\"halt\"]}")
                 .rule(stopInstances.name())
                 .roleArn(ssmLifecycle.arn())
                 .build());
     
         }
     }
     
     
    ### ECS Run Task with Role and Task Override Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.ReplaceArgs;
     import com.pulumi.aws.iam.RolePolicy;
     import com.pulumi.aws.iam.RolePolicyArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetEcsTargetArgs;
     import static com.pulumi.codegen.internal.Serialization.*;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("events.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var ecsEvents = new Role("ecsEvents", RoleArgs.builder()
                 .name("ecs_events")
                 .assumeRolePolicy(assumeRole.json())
                 .build());
     
             final var ecsEventsRunTaskWithAnyRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(            
                     GetPolicyDocumentStatementArgs.builder()
                         .effect("Allow")
                         .actions("iam:PassRole")
                         .resources("*")
                         .build(),
                     GetPolicyDocumentStatementArgs.builder()
                         .effect("Allow")
                         .actions("ecs:RunTask")
                         .resources(StdFunctions.replace(ReplaceArgs.builder()
                             .text(taskName.arn())
                             .search("/:\\d+$/")
                             .replace(":*")
                             .build()).result())
                         .build())
                 .build());
     
             var ecsEventsRunTaskWithAnyRoleRolePolicy = new RolePolicy("ecsEventsRunTaskWithAnyRoleRolePolicy", RolePolicyArgs.builder()
                 .name("ecs_events_run_task_with_any_role")
                 .role(ecsEvents.id())
                 .policy(ecsEventsRunTaskWithAnyRole.json())
                 .build());
     
             var ecsScheduledTask = new EventTarget("ecsScheduledTask", EventTargetArgs.builder()
                 .ecsTarget(EventTargetEcsTargetArgs.builder()
                     .taskCount(1)
                     .taskDefinitionArn(taskName.arn())
                     .build())
                 .targetId("run-scheduled-task-every-hour")
                 .arn(clusterName.arn())
                 .rule(everyHour.name())
                 .roleArn(ecsEvents.arn())
                 .input(serializeJson(
                     jsonObject(
                         jsonProperty("containerOverrides", jsonArray(jsonObject(
                             jsonProperty("name", "name-of-container-to-override"),
                             jsonProperty("command", jsonArray(
                                 "bin/console", 
                                 "scheduled-task"
                             ))
                         )))
                     )))
                 .build());
     
         }
     }
     
     
    ### API Gateway target
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.apigateway.Deployment;
     import com.pulumi.aws.apigateway.DeploymentArgs;
     import com.pulumi.aws.apigateway.Stage;
     import com.pulumi.aws.apigateway.StageArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetHttpTargetArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var exampleEventRule = new EventRule("exampleEventRule");
     
             var exampleDeployment = new Deployment("exampleDeployment", DeploymentArgs.builder()
                 .restApi(exampleAwsApiGatewayRestApi.id())
                 .build());
     
             var exampleStage = new Stage("exampleStage", StageArgs.builder()
                 .restApi(exampleAwsApiGatewayRestApi.id())
                 .deployment(exampleDeployment.id())
                 .build());
     
             var example = new EventTarget("example", EventTargetArgs.builder()
                 .httpTarget(EventTargetHttpTargetArgs.builder()
                     .queryStringParameters(Map.of("Body", "$.detail.body"))
                     .headerParameters(Map.of("Env", "Test"))
                     .build())
                 .arn(exampleStage.executionArn().applyValue(_executionArn -> String.format("%s/GET", _executionArn)))
                 .rule(exampleEventRule.name())
                 .build());
     
         }
     }
     
     
    ### Cross-Account Event Bus target
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.iam.Policy;
     import com.pulumi.aws.iam.PolicyArgs;
     import com.pulumi.aws.iam.RolePolicyAttachment;
     import com.pulumi.aws.iam.RolePolicyAttachmentArgs;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventRuleArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("events.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var eventBusInvokeRemoteEventBusRole = new Role("eventBusInvokeRemoteEventBusRole", RoleArgs.builder()
                 .name("event-bus-invoke-remote-event-bus")
                 .assumeRolePolicy(assumeRole.json())
                 .build());
     
             final var eventBusInvokeRemoteEventBus = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .effect("Allow")
                     .actions("events:PutEvents")
                     .resources("arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus")
                     .build())
                 .build());
     
             var eventBusInvokeRemoteEventBusPolicy = new Policy("eventBusInvokeRemoteEventBusPolicy", PolicyArgs.builder()
                 .name("event_bus_invoke_remote_event_bus")
                 .policy(eventBusInvokeRemoteEventBus.json())
                 .build());
     
             var eventBusInvokeRemoteEventBusRolePolicyAttachment = new RolePolicyAttachment("eventBusInvokeRemoteEventBusRolePolicyAttachment", RolePolicyAttachmentArgs.builder()
                 .role(eventBusInvokeRemoteEventBusRole.name())
                 .policyArn(eventBusInvokeRemoteEventBusPolicy.arn())
                 .build());
     
             var stopInstances = new EventRule("stopInstances", EventRuleArgs.builder()
                 .name("StopInstance")
                 .description("Stop instances nightly")
                 .scheduleExpression("cron(0 0 * * ? *)")
                 .build());
     
             var stopInstancesEventTarget = new EventTarget("stopInstancesEventTarget", EventTargetArgs.builder()
                 .targetId("StopInstance")
                 .arn("arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus")
                 .rule(stopInstances.name())
                 .roleArn(eventBusInvokeRemoteEventBusRole.arn())
                 .build());
     
         }
     }
     
     
    ### Input Transformer Usage - JSON Object
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var exampleEventRule = new EventRule("exampleEventRule");
     
             var example = new EventTarget("example", EventTargetArgs.builder()
                 .inputTransformer(EventTargetInputTransformerArgs.builder()
                     .inputPaths(Map.ofEntries(
                         Map.entry("instance", "$.detail.instance"),
                         Map.entry("status", "$.detail.status")
                     ))
                     .inputTemplate("""
     {
       \"instance_id\": <instance>,
       \"instance_status\": <status>
     }
                     """)
                     .build())
                 .arn(exampleAwsLambdaFunction.arn())
                 .rule(exampleEventRule.name())
                 .build());
     
         }
     }
     
     
    ### Input Transformer Usage - Simple String
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var exampleEventRule = new EventRule("exampleEventRule");
     
             var example = new EventTarget("example", EventTargetArgs.builder()
                 .inputTransformer(EventTargetInputTransformerArgs.builder()
                     .inputPaths(Map.ofEntries(
                         Map.entry("instance", "$.detail.instance"),
                         Map.entry("status", "$.detail.status")
                     ))
                     .inputTemplate("\"<instance> is in state <status>\"")
                     .build())
                 .arn(exampleAwsLambdaFunction.arn())
                 .rule(exampleEventRule.name())
                 .build());
     
         }
     }
     
     
    ### CloudWatch Log Group Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudwatch.LogGroup;
     import com.pulumi.aws.cloudwatch.LogGroupArgs;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventRuleArgs;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
     import com.pulumi.aws.cloudwatch.LogResourcePolicy;
     import com.pulumi.aws.cloudwatch.LogResourcePolicyArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import static com.pulumi.codegen.internal.Serialization.*;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new LogGroup("example", LogGroupArgs.builder()
                 .name("/aws/events/guardduty/logs")
                 .retentionInDays(1)
                 .build());
     
             var exampleEventRule = new EventRule("exampleEventRule", EventRuleArgs.builder()
                 .name("guard-duty_event_rule")
                 .description("GuardDuty Findings")
                 .eventPattern(serializeJson(
                     jsonObject(
                         jsonProperty("source", jsonArray("aws.guardduty"))
                     )))
                 .tags(Map.of("Environment", "example"))
                 .build());
     
             final var exampleLogPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(            
                     GetPolicyDocumentStatementArgs.builder()
                         .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                             .type("Service")
                             .identifiers(                        
                                 "events.amazonaws.com",
                                 "delivery.logs.amazonaws.com")
                             .build())
                         .effect("Allow")
                         .actions("logs:CreateLogStream")
                         .resources(example.arn().applyValue(_arn -> String.format("%s:*", _arn)))
                         .build(),
                     GetPolicyDocumentStatementArgs.builder()
                         .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                             .test("ArnEquals")
                             .values(exampleEventRule.arn())
                             .variable("aws:SourceArn")
                             .build())
                         .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                             .type("Service")
                             .identifiers(                        
                                 "events.amazonaws.com",
                                 "delivery.logs.amazonaws.com")
                             .build())
                         .effect("Allow")
                         .actions("logs:PutLogEvents")
                         .resources(example.arn().applyValue(_arn -> String.format("%s:*:*", _arn)))
                         .build())
                 .build());
     
             var exampleLogResourcePolicy = new LogResourcePolicy("exampleLogResourcePolicy", LogResourcePolicyArgs.builder()
                 .policyDocument(exampleLogPolicy.applyValue(_exampleLogPolicy -> _exampleLogPolicy.json()))
                 .policyName("guardduty-log-publishing-policy")
                 .build());
     
             var exampleEventTarget = new EventTarget("exampleEventTarget", EventTargetArgs.builder()
                 .rule(exampleEventRule.name())
                 .arn(example.arn())
                 .build());
     
         }
     }
     
     
    ### AppSync Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudwatch.EventRule;
     import com.pulumi.aws.cloudwatch.EventRuleArgs;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.appsync.GraphQLApi;
     import com.pulumi.aws.appsync.GraphQLApiArgs;
     import com.pulumi.aws.cloudwatch.EventTarget;
     import com.pulumi.aws.cloudwatch.EventTargetArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetInputTransformerArgs;
     import com.pulumi.aws.cloudwatch.inputs.EventTargetAppsyncTargetArgs;
     import com.pulumi.std.StdFunctions;
     import com.pulumi.std.inputs.ReplaceArgs;
     import com.pulumi.aws.iam.Policy;
     import com.pulumi.aws.iam.PolicyArgs;
     import com.pulumi.aws.iam.RolePolicyAttachment;
     import com.pulumi.aws.iam.RolePolicyAttachmentArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var invokeAppsyncMutation = new EventRule("invokeAppsyncMutation", EventRuleArgs.builder()
                 .name("invoke-appsync-mutation")
                 .description("schedule_batch_test")
                 .scheduleExpression("rate(5 minutes)")
                 .build());
     
             final var appsyncMutationRoleTrust = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("events.amazonaws.com")
                         .build())
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var appsyncMutationRole = new Role("appsyncMutationRole", RoleArgs.builder()
                 .name("appsync-mutation-role")
                 .assumeRolePolicy(appsyncMutationRoleTrust.json())
                 .build());
     
             var graphql_api = new GraphQLApi("graphql-api", GraphQLApiArgs.builder()
                 .name("api")
                 .authenticationType("AWS_IAM")
                 .schema("""
         schema {
           mutation: Mutation
           query: Query
         }
     
         type Query {
           testQuery: String
         }
     
         type Mutation {
           testMutation(input: MutationInput!): TestMutationResult
         }
     
         type TestMutationResult {
           test: String
         }
     
         input MutationInput {
           testInput: String
         }
                 """)
                 .build());
     
             var invokeAppsyncMutationEventTarget = new EventTarget("invokeAppsyncMutationEventTarget", EventTargetArgs.builder()
                 .inputTransformer(EventTargetInputTransformerArgs.builder()
                     .inputPaths(Map.of("input", "$.detail.input"))
                     .inputTemplate("""
           {
             \"input\": <input>
           }
                     """)
                     .build())
                 .appsyncTarget(EventTargetAppsyncTargetArgs.builder()
                     .graphqlOperation("mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}")
                     .build())
                 .arn(StdFunctions.replace(ReplaceArgs.builder()
                     .text(graphql_api.arn())
                     .search("apis")
                     .replace("endpoints/graphql-api")
                     .build()).applyValue(_invoke -> _invoke.result()))
                 .rule(invokeAppsyncMutation.name())
                 .roleArn(appsyncMutationRole.arn())
                 .build());
     
             final var appsyncMutationRolePolicyDocument = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .actions("appsync:GraphQL")
                     .effect("Allow")
                     .resources(graphql_api.arn())
                     .build())
                 .build());
     
             var appsyncMutationRolePolicy = new Policy("appsyncMutationRolePolicy", PolicyArgs.builder()
                 .name("appsync-mutation-role-policy")
                 .policy(appsyncMutationRolePolicyDocument.applyValue(_appsyncMutationRolePolicyDocument -> _appsyncMutationRolePolicyDocument.json()))
                 .build());
     
             var appsyncMutationRoleAttachment = new RolePolicyAttachment("appsyncMutationRoleAttachment", RolePolicyAttachmentArgs.builder()
                 .policyArn(appsyncMutationRolePolicy.arn())
                 .role(appsyncMutationRole.name())
                 .build());
     
         }
     }
     
     
    ## Import ### Identity Schema #### Required * `eventBusName` (String) Event bus name for the target. * `rule` (String) Rule name for the target. * `targetId` (String) Target ID. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `eventBusName`, the `default` event bus will be used). For example: ```sh $ pulumi import aws:cloudwatch/eventTarget:EventTarget example rule-name/target-id ```
    • Constructor Detail

      • EventTarget

        public EventTarget​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • EventTarget

        public EventTarget​(java.lang.String name,
                           EventTargetArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • EventTarget

        public EventTarget​(java.lang.String name,
                           EventTargetArgs args,
                           @Nullable
                           com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • appsyncTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetAppsyncTarget>> appsyncTarget()
        Returns:
        Parameters used when you are using the rule to invoke an AppSync GraphQL API mutation. Documented below. A maximum of 1 are allowed.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the target.
      • batchTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetBatchTarget>> batchTarget()
        Returns:
        Parameters used when you are using the rule to invoke an Amazon Batch Job. Documented below. A maximum of 1 are allowed.
      • deadLetterConfig

        public com.pulumi.core.Output<java.util.Optional<EventTargetDeadLetterConfig>> deadLetterConfig()
        Returns:
        Parameters used when you are providing a dead letter config. Documented below. A maximum of 1 are allowed.
      • ecsTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetEcsTarget>> ecsTarget()
        Returns:
        Parameters used when you are using the rule to invoke Amazon ECS Task. Documented below. A maximum of 1 are allowed.
      • eventBusName

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> eventBusName()
        Returns:
        The name or ARN of the event bus to associate with the rule. If you omit this, the `default` event bus is used.
      • forceDestroy

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> forceDestroy()
        Returns:
        Used to delete managed rules created by AWS. Defaults to `false`.
      • httpTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetHttpTarget>> httpTarget()
        Returns:
        Parameters used when you are using the rule to invoke an API Gateway REST endpoint. Documented below. A maximum of 1 is allowed.
      • input

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> input()
        Returns:
        Valid JSON text passed to the target. Conflicts with `inputPath` and `inputTransformer`.
      • inputPath

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> inputPath()
        Returns:
        The value of the [JSONPath](http://goessner.net/articles/JsonPath/) that is used for extracting part of the matched event when passing it to the target. Conflicts with `input` and `inputTransformer`.
      • inputTransformer

        public com.pulumi.core.Output<java.util.Optional<EventTargetInputTransformer>> inputTransformer()
        Returns:
        Parameters used when you are providing a custom input to a target based on certain event data. Conflicts with `input` and `inputPath`.
      • kinesisTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetKinesisTarget>> kinesisTarget()
        Returns:
        Parameters used when you are using the rule to invoke an Amazon Kinesis Stream. Documented below. A maximum of 1 are allowed.
      • redshiftTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetRedshiftTarget>> redshiftTarget()
        Returns:
        Parameters used when you are using the rule to invoke an Amazon Redshift Statement. Documented below. A maximum of 1 are allowed.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • retryPolicy

        public com.pulumi.core.Output<java.util.Optional<EventTargetRetryPolicy>> retryPolicy()
        Returns:
        Parameters used when you are providing retry policies. Documented below. A maximum of 1 are allowed.
      • roleArn

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> roleArn()
        Returns:
        ARN of the IAM role to be used for this target when the rule is triggered. Required if `ecsTarget` is used or target in `arn` is EC2 instance, Kinesis data stream, Step Functions state machine, or Event Bus in different account or region.
      • rule

        public com.pulumi.core.Output<java.lang.String> rule()
        Returns:
        The name of the rule you want to add targets to. The following arguments are optional:
      • runCommandTargets

        public com.pulumi.core.Output<java.util.Optional<java.util.List<EventTargetRunCommandTarget>>> runCommandTargets()
        Returns:
        Parameters used when you are using the rule to invoke Amazon EC2 Run Command. Documented below. A maximum of 5 are allowed.
      • sagemakerPipelineTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetSagemakerPipelineTarget>> sagemakerPipelineTarget()
        Returns:
        Parameters used when you are using the rule to invoke an Amazon SageMaker AI Pipeline. Documented below. A maximum of 1 are allowed.
      • sqsTarget

        public com.pulumi.core.Output<java.util.Optional<EventTargetSqsTarget>> sqsTarget()
        Returns:
        Parameters used when you are using the rule to invoke an Amazon SQS Queue. Documented below. A maximum of 1 are allowed.
      • targetId

        public com.pulumi.core.Output<java.lang.String> targetId()
        Returns:
        The unique target assignment ID. If missing, will generate a random, unique ID.
      • get

        public static EventTarget get​(java.lang.String name,
                                      com.pulumi.core.Output<java.lang.String> id,
                                      @Nullable
                                      EventTargetState state,
                                      @Nullable
                                      com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.