Package com.pulumi.aws.cloudwatch
Class EventBus
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.cloudwatch.EventBus
-
public class EventBus extends com.pulumi.resources.CustomResourceProvides an EventBridge event bus resource. > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. ## Example Usage ### Basic Usagespackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.cloudwatch.EventBus; import com.pulumi.aws.cloudwatch.EventBusArgs; 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 messenger = new EventBus("messenger", EventBusArgs.builder() .name("chat-messages") .build()); } }
### Logging to CloudWatch Logs, S3, and Data Firehose See [Configuring logs for Amazon EventBridge event buses](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus-logs.html) for more details. #### Required Resources * EventBridge Event Bus with `logConfig` configured * Log destinations: * CloudWatch Logs log group * S3 bucket * Data Firehose delivery stream * Resource-based policy or tagging for the service-linked role: * CloudWatch Logs log group - `aws.cloudwatch.LogResourcePolicy` to allow `delivery.logs.amazonaws.com` to put logs into the log group * S3 bucket - `aws.s3.BucketPolicy` to allow `delivery.logs.amazonaws.com` to put logs into the bucket * Data Firehose delivery stream - tagging the delivery stream with `LogDeliveryEnabled = "true"` to allow the service-linked role `AWSServiceRoleForLogDelivery` to deliver logs * CloudWatch Logs Delivery: * `aws.cloudwatch.LogDeliverySource` for each log type (INFO, ERROR, TRACE) * `aws.cloudwatch.LogDeliveryDestination` for the log destination (S3 bucket, CloudWatch Logs log group, or Data Firehose delivery stream) * `aws.cloudwatch.LogDelivery` to link each log type’s delivery source to the delivery destination ### Example Usage The following example demonstrates how to set up logging for an EventBridge event bus to all three destinations: CloudWatch Logs, S3, and Data Firehose.package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.cloudwatch.CloudwatchFunctions; import com.pulumi.aws.cloudwatch.inputs.GetEventSourceArgs; import com.pulumi.aws.cloudwatch.EventBus; import com.pulumi.aws.cloudwatch.EventBusArgs; 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 examplepartner = CloudwatchFunctions.getEventSource(GetEventSourceArgs.builder() .namePrefix("aws.partner/example.com") .build()); var examplepartnerEventBus = new EventBus("examplepartnerEventBus", EventBusArgs.builder() .name(examplepartner.name()) .description("Event bus for example partner events") .eventSourceName(examplepartner.name()) .build()); } }
## Import ### Identity Schema #### Required * `name` (String) Name of the event bus. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import Buses using `name` (which can also be a partner event source name). For example: ```sh $ pulumi import aws:cloudwatch/eventBus:EventBus example example-event-bus ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetCallerIdentityArgs; import com.pulumi.aws.cloudwatch.EventBus; import com.pulumi.aws.cloudwatch.EventBusArgs; import com.pulumi.aws.cloudwatch.inputs.EventBusLogConfigArgs; import com.pulumi.aws.cloudwatch.LogDeliverySource; import com.pulumi.aws.cloudwatch.LogDeliverySourceArgs; import com.pulumi.aws.s3.Bucket; import com.pulumi.aws.s3.BucketArgs; 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.GetPolicyDocumentStatementConditionArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.s3.BucketPolicy; import com.pulumi.aws.s3.BucketPolicyArgs; import com.pulumi.aws.cloudwatch.LogDeliveryDestination; import com.pulumi.aws.cloudwatch.LogDeliveryDestinationArgs; import com.pulumi.aws.cloudwatch.inputs.LogDeliveryDestinationDeliveryDestinationConfigurationArgs; import com.pulumi.aws.cloudwatch.LogDelivery; import com.pulumi.aws.cloudwatch.LogDeliveryArgs; import com.pulumi.aws.cloudwatch.LogGroup; import com.pulumi.aws.cloudwatch.LogGroupArgs; import com.pulumi.aws.cloudwatch.LogResourcePolicy; import com.pulumi.aws.cloudwatch.LogResourcePolicyArgs; import com.pulumi.aws.kinesis.FirehoseDeliveryStream; import com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs; import com.pulumi.resources.CustomResourceOptions; 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 current = AwsFunctions.getCallerIdentity(GetCallerIdentityArgs.builder() .build()); var example = new EventBus("example", EventBusArgs.builder() .logConfig(EventBusLogConfigArgs.builder() .includeDetail("FULL") .level("TRACE") .build()) .name("example-event-bus") .build()); // CloudWatch Log Delivery Sources for INFO, ERROR, and TRACE logs var infoLogs = new LogDeliverySource("infoLogs", LogDeliverySourceArgs.builder() .name(example.name().applyValue(_name -> String.format("EventBusSource-%s-INFO_LOGS", _name))) .logType("INFO_LOGS") .resourceArn(example.arn()) .build()); var errorLogs = new LogDeliverySource("errorLogs", LogDeliverySourceArgs.builder() .name(example.name().applyValue(_name -> String.format("EventBusSource-%s-ERROR_LOGS", _name))) .logType("ERROR_LOGS") .resourceArn(example.arn()) .build()); var traceLogs = new LogDeliverySource("traceLogs", LogDeliverySourceArgs.builder() .name(example.name().applyValue(_name -> String.format("EventBusSource-%s-TRACE_LOGS", _name))) .logType("TRACE_LOGS") .resourceArn(example.arn()) .build()); // Logging to S3 Bucket var exampleBucket = new Bucket("exampleBucket", BucketArgs.builder() .bucket("example-event-bus-logs") .build()); final var bucket = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .conditions( GetPolicyDocumentStatementConditionArgs.builder() .test("StringEquals") .variable("s3:x-amz-acl") .values("bucket-owner-full-control") .build(), GetPolicyDocumentStatementConditionArgs.builder() .test("StringEquals") .variable("aws:SourceAccount") .values(current.accountId()) .build(), GetPolicyDocumentStatementConditionArgs.builder() .test("ArnLike") .variable("aws:SourceArn") .values( infoLogs.arn(), errorLogs.arn(), traceLogs.arn()) .build()) .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("delivery.logs.amazonaws.com") .build()) .effect("Allow") .actions("s3:PutObject") .resources(exampleBucket.arn().applyValue(_arn -> String.format("%s/AWSLogs/%s/EventBusLogs/*", _arn,current.accountId()))) .build()) .build()); var exampleBucketPolicy = new BucketPolicy("exampleBucketPolicy", BucketPolicyArgs.builder() .bucket(exampleBucket.bucket()) .policy(bucket.applyValue(_bucket -> _bucket.json())) .build()); var s3 = new LogDeliveryDestination("s3", LogDeliveryDestinationArgs.builder() .deliveryDestinationConfiguration(LogDeliveryDestinationDeliveryDestinationConfigurationArgs.builder() .destinationResourceArn(exampleBucket.arn()) .build()) .name(example.name().applyValue(_name -> String.format("EventsDeliveryDestination-%s-S3", _name))) .build()); var s3InfoLogs = new LogDelivery("s3InfoLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(s3.arn()) .deliverySourceName(infoLogs.name()) .build()); var s3ErrorLogs = new LogDelivery("s3ErrorLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(s3.arn()) .deliverySourceName(errorLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn(s3InfoLogs) .build()); var s3TraceLogs = new LogDelivery("s3TraceLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(s3.arn()) .deliverySourceName(traceLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn(s3ErrorLogs) .build()); // Logging to CloudWatch Log Group var eventBusLogs = new LogGroup("eventBusLogs", LogGroupArgs.builder() .name(example.name().applyValue(_name -> String.format("/aws/vendedlogs/events/event-bus/%s", _name))) .build()); final var cwlogs = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .conditions( GetPolicyDocumentStatementConditionArgs.builder() .test("StringEquals") .variable("aws:SourceAccount") .values(current.accountId()) .build(), GetPolicyDocumentStatementConditionArgs.builder() .test("ArnLike") .variable("aws:SourceArn") .values( infoLogs.arn(), errorLogs.arn(), traceLogs.arn()) .build()) .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("delivery.logs.amazonaws.com") .build()) .effect("Allow") .actions( "logs:CreateLogStream", "logs:PutLogEvents") .resources(eventBusLogs.arn().applyValue(_arn -> String.format("%s:log-stream:*", _arn))) .build()) .build()); var exampleLogResourcePolicy = new LogResourcePolicy("exampleLogResourcePolicy", LogResourcePolicyArgs.builder() .policyDocument(cwlogs.applyValue(_cwlogs -> _cwlogs.json())) .policyName(example.name().applyValue(_name -> String.format("AWSLogDeliveryWrite-%s", _name))) .build()); var cwlogsLogDeliveryDestination = new LogDeliveryDestination("cwlogsLogDeliveryDestination", LogDeliveryDestinationArgs.builder() .deliveryDestinationConfiguration(LogDeliveryDestinationDeliveryDestinationConfigurationArgs.builder() .destinationResourceArn(eventBusLogs.arn()) .build()) .name(example.name().applyValue(_name -> String.format("EventsDeliveryDestination-%s-CWLogs", _name))) .build()); var cwlogsInfoLogs = new LogDelivery("cwlogsInfoLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(cwlogsLogDeliveryDestination.arn()) .deliverySourceName(infoLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn(s3InfoLogs) .build()); var cwlogsErrorLogs = new LogDelivery("cwlogsErrorLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(cwlogsLogDeliveryDestination.arn()) .deliverySourceName(errorLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn( s3ErrorLogs, cwlogsInfoLogs) .build()); var cwlogsTraceLogs = new LogDelivery("cwlogsTraceLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(cwlogsLogDeliveryDestination.arn()) .deliverySourceName(traceLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn( s3TraceLogs, cwlogsErrorLogs) .build()); // Logging to Data Firehose var cloudfrontLogs = new FirehoseDeliveryStream("cloudfrontLogs", FirehoseDeliveryStreamArgs.builder() .tags(Map.of("LogDeliveryEnabled", "true")) .build()); var firehose = new LogDeliveryDestination("firehose", LogDeliveryDestinationArgs.builder() .deliveryDestinationConfiguration(LogDeliveryDestinationDeliveryDestinationConfigurationArgs.builder() .destinationResourceArn(cloudfrontLogs.arn()) .build()) .name(example.name().applyValue(_name -> String.format("EventsDeliveryDestination-%s-Firehose", _name))) .build()); var firehoseInfoLogs = new LogDelivery("firehoseInfoLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(firehose.arn()) .deliverySourceName(infoLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn(cwlogsInfoLogs) .build()); var firehoseErrorLogs = new LogDelivery("firehoseErrorLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(firehose.arn()) .deliverySourceName(errorLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn( cwlogsErrorLogs, firehoseInfoLogs) .build()); var firehoseTraceLogs = new LogDelivery("firehoseTraceLogs", LogDeliveryArgs.builder() .deliveryDestinationArn(firehose.arn()) .deliverySourceName(traceLogs.name()) .build(), CustomResourceOptions.builder() .dependsOn( cwlogsTraceLogs, firehoseErrorLogs) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description EventBus(java.lang.String name)EventBus(java.lang.String name, EventBusArgs args)EventBus(java.lang.String name, EventBusArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.util.Optional<EventBusDeadLetterConfig>>deadLetterConfig()com.pulumi.core.Output<java.util.Optional<java.lang.String>>description()com.pulumi.core.Output<java.util.Optional<java.lang.String>>eventSourceName()static EventBusget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, EventBusState state, 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.com.pulumi.core.Output<java.util.Optional<java.lang.String>>kmsKeyIdentifier()com.pulumi.core.Output<java.util.Optional<EventBusLogConfig>>logConfig()com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()
-
-
-
Constructor Detail
-
EventBus
public EventBus(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
EventBus
public EventBus(java.lang.String name, @Nullable EventBusArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
EventBus
public EventBus(java.lang.String name, @Nullable EventBusArgs 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
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the event bus.
-
deadLetterConfig
public com.pulumi.core.Output<java.util.Optional<EventBusDeadLetterConfig>> deadLetterConfig()
- Returns:
- Configuration details of the Amazon SQS queue for EventBridge to use as a dead-letter queue (DLQ). This block supports the following arguments:
-
description
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()
- Returns:
- Event bus description.
-
eventSourceName
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> eventSourceName()
- Returns:
- Partner event source that the new event bus will be matched with. Must match `name`.
-
kmsKeyIdentifier
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> kmsKeyIdentifier()
- Returns:
- Identifier of the AWS KMS customer managed key for EventBridge to use, if you choose to use a customer managed key to encrypt events on this event bus. The identifier can be the key ARN, KeyId, key alias, or key alias ARN.
-
logConfig
public com.pulumi.core.Output<java.util.Optional<EventBusLogConfig>> logConfig()
- Returns:
- Block for logging configuration settings for the event bus.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name of the new event bus. The names of custom event buses can't contain the / character. To create a partner event bus, ensure that the `name` matches the `eventSourceName`. The following arguments are optional:
-
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.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
get
public static EventBus get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable EventBusState 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.
-
-