Class BucketNotification


  • public class BucketNotification
    extends com.pulumi.resources.CustomResource
    Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). > **NOTE:** The S3 [`PutBucketNotificationConfiguration`](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html) API is atomic — it replaces the bucket's entire notification configuration on every call. Only one `aws.s3.BucketNotification` resource can manage a bucket; declaring more than one causes a perpetual diff, and applying this resource will overwrite any notifications already on the bucket. To configure multiple destinations on the same bucket, declare them all as nested blocks within a single resource (see Trigger multiple Lambda functions below). To let independent teams or Pulumi configurations subscribe to the same bucket without stepping on each other, prefer the Emit events to EventBridge pattern below. To bring existing notifications under management without losing them, see the `aws.s3.BucketNotification` data source. > This resource cannot be used with S3 directory buckets. ## Example Usage ### Add notification configuration to SNS Topic
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     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.sns.Topic;
     import com.pulumi.aws.sns.TopicArgs;
     import com.pulumi.aws.s3.BucketNotification;
     import com.pulumi.aws.s3.BucketNotificationArgs;
     import com.pulumi.aws.s3.inputs.BucketNotificationTopicArgs;
     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 bucket = new Bucket("bucket", BucketArgs.builder()
                 .bucket("your-bucket-name")
                 .build());
     
             final var topic = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                         .test("ArnLike")
                         .variable("aws:SourceArn")
                         .values(bucket.arn())
                         .build())
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("s3.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("SNS:Publish")
                     .resources("arn:aws:sns:*:*:s3-event-notification-topic")
                     .build())
                 .build());
     
             var topicTopic = new Topic("topicTopic", TopicArgs.builder()
                 .name("s3-event-notification-topic")
                 .policy(topic.applyValue(_topic -> _topic.json()))
                 .build());
     
             var bucketNotification = new BucketNotification("bucketNotification", BucketNotificationArgs.builder()
                 .topics(BucketNotificationTopicArgs.builder()
                     .topicArn(topicTopic.arn())
                     .events("s3:ObjectCreated:*")
                     .filterSuffix(".log")
                     .build())
                 .bucket(bucket.id())
                 .build());
     
         }
     }
     
     
    ### Add notification configuration to SQS Queue
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     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.sqs.Queue;
     import com.pulumi.aws.sqs.QueueArgs;
     import com.pulumi.aws.s3.BucketNotification;
     import com.pulumi.aws.s3.BucketNotificationArgs;
     import com.pulumi.aws.s3.inputs.BucketNotificationQueueArgs;
     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 bucket = new Bucket("bucket", BucketArgs.builder()
                 .bucket("your-bucket-name")
                 .build());
     
             final var queue = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                         .test("ArnEquals")
                         .variable("aws:SourceArn")
                         .values(bucket.arn())
                         .build())
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("*")
                         .identifiers("*")
                         .build())
                     .effect("Allow")
                     .actions("sqs:SendMessage")
                     .resources("arn:aws:sqs:*:*:s3-event-notification-queue")
                     .build())
                 .build());
     
             var queueQueue = new Queue("queueQueue", QueueArgs.builder()
                 .name("s3-event-notification-queue")
                 .policy(queue.applyValue(_queue -> _queue.json()))
                 .build());
     
             var bucketNotification = new BucketNotification("bucketNotification", BucketNotificationArgs.builder()
                 .queues(BucketNotificationQueueArgs.builder()
                     .queueArn(queueQueue.arn())
                     .events("s3:ObjectCreated:*")
                     .filterSuffix(".log")
                     .build())
                 .bucket(bucket.id())
                 .build());
     
         }
     }
     
     
    ### Add notification configuration to Lambda Function
     
     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.lambda.Function;
     import com.pulumi.aws.lambda.FunctionArgs;
     import com.pulumi.aws.s3.Bucket;
     import com.pulumi.aws.s3.BucketArgs;
     import com.pulumi.aws.lambda.Permission;
     import com.pulumi.aws.lambda.PermissionArgs;
     import com.pulumi.aws.s3.BucketNotification;
     import com.pulumi.aws.s3.BucketNotificationArgs;
     import com.pulumi.aws.s3.inputs.BucketNotificationLambdaFunctionArgs;
     import com.pulumi.asset.FileArchive;
     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 assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("lambda.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var iamForLambda = new Role("iamForLambda", RoleArgs.builder()
                 .name("iam_for_lambda")
                 .assumeRolePolicy(assumeRole.json())
                 .build());
     
             var func = new Function("func", FunctionArgs.builder()
                 .code(new FileArchive("your-function.zip"))
                 .name("example_lambda_name")
                 .role(iamForLambda.arn())
                 .handler("exports.example")
                 .runtime("nodejs24.x")
                 .build());
     
             var bucket = new Bucket("bucket", BucketArgs.builder()
                 .bucket("your-bucket-name")
                 .build());
     
             var allowBucket = new Permission("allowBucket", PermissionArgs.builder()
                 .statementId("AllowExecutionFromS3Bucket")
                 .action("lambda:InvokeFunction")
                 .function(func.arn())
                 .principal("s3.amazonaws.com")
                 .sourceArn(bucket.arn())
                 .build());
     
             var bucketNotification = new BucketNotification("bucketNotification", BucketNotificationArgs.builder()
                 .lambdaFunctions(BucketNotificationLambdaFunctionArgs.builder()
                     .lambdaFunctionArn(func.arn())
                     .events("s3:ObjectCreated:*")
                     .filterPrefix("AWSLogs/")
                     .filterSuffix(".log")
                     .build())
                 .bucket(bucket.id())
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(allowBucket)
                     .build());
     
         }
     }
     
     
    ### Trigger multiple Lambda functions
     
     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.lambda.Function;
     import com.pulumi.aws.lambda.FunctionArgs;
     import com.pulumi.aws.s3.Bucket;
     import com.pulumi.aws.s3.BucketArgs;
     import com.pulumi.aws.lambda.Permission;
     import com.pulumi.aws.lambda.PermissionArgs;
     import com.pulumi.aws.s3.BucketNotification;
     import com.pulumi.aws.s3.BucketNotificationArgs;
     import com.pulumi.aws.s3.inputs.BucketNotificationLambdaFunctionArgs;
     import com.pulumi.asset.FileArchive;
     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 assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("lambda.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var iamForLambda = new Role("iamForLambda", RoleArgs.builder()
                 .name("iam_for_lambda")
                 .assumeRolePolicy(assumeRole.json())
                 .build());
     
             var func1 = new Function("func1", FunctionArgs.builder()
                 .code(new FileArchive("your-function1.zip"))
                 .name("example_lambda_name1")
                 .role(iamForLambda.arn())
                 .handler("exports.example")
                 .runtime("nodejs24.x")
                 .build());
     
             var bucket = new Bucket("bucket", BucketArgs.builder()
                 .bucket("your-bucket-name")
                 .build());
     
             var allowBucket1 = new Permission("allowBucket1", PermissionArgs.builder()
                 .statementId("AllowExecutionFromS3Bucket1")
                 .action("lambda:InvokeFunction")
                 .function(func1.arn())
                 .principal("s3.amazonaws.com")
                 .sourceArn(bucket.arn())
                 .build());
     
             var func2 = new Function("func2", FunctionArgs.builder()
                 .code(new FileArchive("your-function2.zip"))
                 .name("example_lambda_name2")
                 .role(iamForLambda.arn())
                 .handler("exports.example")
                 .build());
     
             var allowBucket2 = new Permission("allowBucket2", PermissionArgs.builder()
                 .statementId("AllowExecutionFromS3Bucket2")
                 .action("lambda:InvokeFunction")
                 .function(func2.arn())
                 .principal("s3.amazonaws.com")
                 .sourceArn(bucket.arn())
                 .build());
     
             var bucketNotification = new BucketNotification("bucketNotification", BucketNotificationArgs.builder()
                 .lambdaFunctions(            
                     BucketNotificationLambdaFunctionArgs.builder()
                         .lambdaFunctionArn(func1.arn())
                         .events("s3:ObjectCreated:*")
                         .filterPrefix("AWSLogs/")
                         .filterSuffix(".log")
                         .build(),
                     BucketNotificationLambdaFunctionArgs.builder()
                         .lambdaFunctionArn(func2.arn())
                         .events("s3:ObjectCreated:*")
                         .filterPrefix("OtherLogs/")
                         .filterSuffix(".log")
                         .build())
                 .bucket(bucket.id())
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(                
                         allowBucket1,
                         allowBucket2)
                     .build());
     
         }
     }
     
     
    ### Add multiple notification configurations to SQS Queue
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     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.sqs.Queue;
     import com.pulumi.aws.sqs.QueueArgs;
     import com.pulumi.aws.s3.BucketNotification;
     import com.pulumi.aws.s3.BucketNotificationArgs;
     import com.pulumi.aws.s3.inputs.BucketNotificationQueueArgs;
     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 bucket = new Bucket("bucket", BucketArgs.builder()
                 .bucket("your-bucket-name")
                 .build());
     
             final var queue = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                         .test("ArnEquals")
                         .variable("aws:SourceArn")
                         .values(bucket.arn())
                         .build())
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("*")
                         .identifiers("*")
                         .build())
                     .effect("Allow")
                     .actions("sqs:SendMessage")
                     .resources("arn:aws:sqs:*:*:s3-event-notification-queue")
                     .build())
                 .build());
     
             var queueQueue = new Queue("queueQueue", QueueArgs.builder()
                 .name("s3-event-notification-queue")
                 .policy(queue.applyValue(_queue -> _queue.json()))
                 .build());
     
             var bucketNotification = new BucketNotification("bucketNotification", BucketNotificationArgs.builder()
                 .queues(            
                     BucketNotificationQueueArgs.builder()
                         .id("image-upload-event")
                         .queueArn(queueQueue.arn())
                         .events("s3:ObjectCreated:*")
                         .filterPrefix("images/")
                         .build(),
                     BucketNotificationQueueArgs.builder()
                         .id("video-upload-event")
                         .queueArn(queueQueue.arn())
                         .events("s3:ObjectCreated:*")
                         .filterPrefix("videos/")
                         .build())
                 .bucket(bucket.id())
                 .build());
     
         }
     }
     
     
    For JSON syntax, use an array instead of defining the `queue` key twice. ### Emit events to EventBridge For a bucket shared by multiple independent consumers — different teams, different Pulumi configurations, different applications — EventBridge is the recommended pattern. Each consumer subscribes to the bucket through its own `aws.cloudwatch.EventRule`, so they cannot overwrite one another the way notification configurations would.
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.s3.Bucket;
     import com.pulumi.aws.s3.BucketArgs;
     import com.pulumi.aws.s3.BucketNotification;
     import com.pulumi.aws.s3.BucketNotificationArgs;
     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 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 shared = new Bucket("shared", BucketArgs.builder()
                 .bucket("shared-bucket")
                 .build());
     
             var sharedBucketNotification = new BucketNotification("sharedBucketNotification", BucketNotificationArgs.builder()
                 .bucket(shared.id())
                 .eventbridge(true)
                 .build());
     
             // Team A: process new uploads under uploads/
             var teamA = new EventRule("teamA", EventRuleArgs.builder()
                 .name("team-a-uploads")
                 .eventPattern(shared.bucket().applyValue(_bucket -> serializeJson(
                     jsonObject(
                         jsonProperty("source", jsonArray("aws.s3")),
                         jsonProperty("detail-type", jsonArray("Object Created")),
                         jsonProperty("detail", jsonObject(
                             jsonProperty("bucket", jsonObject(
                                 jsonProperty("name", jsonArray(_bucket))
                             )),
                             jsonProperty("object", jsonObject(
                                 jsonProperty("key", jsonArray(jsonObject(
                                     jsonProperty("prefix", "uploads/")
                                 )))
                             ))
                         ))
                     ))))
                 .build());
     
             var teamAEventTarget = new EventTarget("teamAEventTarget", EventTargetArgs.builder()
                 .rule(teamA.name())
                 .arn(teamAProcessor.arn())
                 .build());
     
             // Team B: archive deletions under archive/, declared in a separate
             // Pulumi configuration that knows nothing about Team A.
             var teamB = new EventRule("teamB", EventRuleArgs.builder()
                 .name("team-b-deletions")
                 .eventPattern(shared.bucket().applyValue(_bucket -> serializeJson(
                     jsonObject(
                         jsonProperty("source", jsonArray("aws.s3")),
                         jsonProperty("detail-type", jsonArray("Object Deleted")),
                         jsonProperty("detail", jsonObject(
                             jsonProperty("bucket", jsonObject(
                                 jsonProperty("name", jsonArray(_bucket))
                             )),
                             jsonProperty("object", jsonObject(
                                 jsonProperty("key", jsonArray(jsonObject(
                                     jsonProperty("prefix", "archive/")
                                 )))
                             ))
                         ))
                     ))))
                 .build());
     
             var teamBEventTarget = new EventTarget("teamBEventTarget", EventTargetArgs.builder()
                 .rule(teamB.name())
                 .arn(teamBArchive.arn())
                 .build());
     
         }
     }
     
     
    For sharing a bucket between Pulumi configurations when EventBridge is not an option, use the `aws.s3.BucketNotification` data source to read existing notifications and re-emit them in your own resource. ## Import ### Identity Schema #### Required * `bucket` (String) Name of the bucket. #### Optional * `accountId` (String) Account ID where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import S3 bucket notification using the `bucket`. For example: ```sh $ pulumi import aws:s3/bucketNotification:BucketNotification bucket_notification bucket-name ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.lang.String> bucket()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> eventbridge()  
      static BucketNotification get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, BucketNotificationState 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.util.List<BucketNotificationLambdaFunction>>> lambdaFunctions()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<BucketNotificationQueue>>> queues()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<BucketNotificationTopic>>> topics()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BucketNotification

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

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

        public BucketNotification​(java.lang.String name,
                                  BucketNotificationArgs 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

      • bucket

        public com.pulumi.core.Output<java.lang.String> bucket()
        Returns:
        Name of the bucket for notification configuration. The following arguments are optional:
      • eventbridge

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> eventbridge()
        Returns:
        Whether to enable Amazon EventBridge notifications. Defaults to `false`.
      • lambdaFunctions

        public com.pulumi.core.Output<java.util.Optional<java.util.List<BucketNotificationLambdaFunction>>> lambdaFunctions()
        Returns:
        Notification configuration to a Lambda Function. See below.
      • queues

        public com.pulumi.core.Output<java.util.Optional<java.util.List<BucketNotificationQueue>>> queues()
        Returns:
        Notification configuration to SQS Queue. See below.
      • 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.
      • topics

        public com.pulumi.core.Output<java.util.Optional<java.util.List<BucketNotificationTopic>>> topics()
        Returns:
        Notification configuration to SNS Topic. See below.
      • get

        public static BucketNotification get​(java.lang.String name,
                                             com.pulumi.core.Output<java.lang.String> id,
                                             @Nullable
                                             BucketNotificationState 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.