Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions,
see Getting Started with Amazon Web Services in China
(PDF).
Use PutBucketNotificationConfiguration
with an Amazon SDK or CLI
The following code examples show how to use PutBucketNotificationConfiguration
.
Action examples are code excerpts from larger programs and must be run in context. You can see this action in
context in the following code examples:
- .NET
-
- Amazon SDK for .NET
-
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Amazon.S3;
using Amazon.S3.Model;
/// <summary>
/// This example shows how to enable notifications for an Amazon Simple
/// Storage Service (Amazon S3) bucket.
/// </summary>
public class EnableNotifications
{
public static async Task Main()
{
const string bucketName = "amzn-s3-demo-bucket1";
const string snsTopic = "arn:aws:sns:us-east-2:0123456789ab:bucket-notify";
const string sqsQueue = "arn:aws:sqs:us-east-2:0123456789ab:Example_Queue";
IAmazonS3 client = new AmazonS3Client(Amazon.RegionEndpoint.USEast2);
await EnableNotificationAsync(client, bucketName, snsTopic, sqsQueue);
}
/// <summary>
/// This method makes the call to the PutBucketNotificationAsync method.
/// </summary>
/// <param name="client">An initialized Amazon S3 client used to call
/// the PutBucketNotificationAsync method.</param>
/// <param name="bucketName">The name of the bucket for which
/// notifications will be turned on.</param>
/// <param name="snsTopic">The ARN for the Amazon Simple Notification
/// Service (Amazon SNS) topic associated with the S3 bucket.</param>
/// <param name="sqsQueue">The ARN of the Amazon Simple Queue Service
/// (Amazon SQS) queue to which notifications will be pushed.</param>
public static async Task EnableNotificationAsync(
IAmazonS3 client,
string bucketName,
string snsTopic,
string sqsQueue)
{
try
{
// The bucket for which we are setting up notifications.
var request = new PutBucketNotificationRequest()
{
BucketName = bucketName,
};
// Defines the topic to use when sending a notification.
var topicConfig = new TopicConfiguration()
{
Events = new List<EventType> { EventType.ObjectCreatedCopy },
Topic = snsTopic,
};
request.TopicConfigurations = new List<TopicConfiguration>
{
topicConfig,
};
request.QueueConfigurations = new List<QueueConfiguration>
{
new QueueConfiguration()
{
Events = new List<EventType> { EventType.ObjectCreatedPut },
Queue = sqsQueue,
},
};
// Now apply the notification settings to the bucket.
PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
}
catch (AmazonS3Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
- CLI
-
- Amazon CLI
-
To enable the specified notifications to a bucket
The following put-bucket-notification-configuration
example applies a notification configuration to a bucket named amzn-s3-demo-bucket
. The file notification.json
is a JSON document in the current folder that specifies an SNS topic and an event type to monitor.
aws s3api put-bucket-notification-configuration \
--bucket amzn-s3-demo-bucket
\
--notification-configuration file://notification.json
Contents of notification.json
:
{
"TopicConfigurations": [
{
"TopicArn": "arn:aws:sns:us-west-2:123456789012:s3-notification-topic",
"Events": [
"s3:ObjectCreated:*"
]
}
]
}
The SNS topic must have an IAM policy attached to it that allows Amazon S3 to publish to it.
{
"Version": "2008-10-17",
"Id": "example-ID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": [
"SNS:Publish"
],
"Resource": "arn:aws:sns:us-west-2:123456789012::s3-notification-topic",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
}
}
}
]
}
For a complete list of Amazon SDK developer guides and code examples, see
Developing with Amazon S3 using the Amazon SDKs.
This topic also includes information about getting started and details about previous SDK versions.