()
| 30 | ) |
| 31 | |
| 32 | func main() { |
| 33 | // Note: YOUR-ACCESSKEYID, YOUR-SECRETACCESSKEY and my-bucketname are |
| 34 | // dummy values, please replace them with original values. |
| 35 | |
| 36 | // Requests are always secure (HTTPS) by default. Set secure=false to enable insecure (HTTP) access. |
| 37 | // This boolean value is the last argument for New(). |
| 38 | |
| 39 | // New returns an Amazon S3 compatible client object. API compatibility (v2 or v4) is automatically |
| 40 | // determined based on the Endpoint value. |
| 41 | s3Client, err := minio.New("s3.amazonaws.com", &minio.Options{ |
| 42 | Creds: credentials.NewStaticV4("YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", ""), |
| 43 | Secure: true, |
| 44 | }) |
| 45 | if err != nil { |
| 46 | log.Fatalln(err) |
| 47 | } |
| 48 | |
| 49 | // s3Client.TraceOn(os.Stderr) |
| 50 | |
| 51 | // ARN represents a notification channel that needs to be created in your S3 provider |
| 52 | // (e.g. http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) |
| 53 | |
| 54 | // An example of an ARN: |
| 55 | // arn:aws:sns:us-east-1:804064459714:UploadPhoto |
| 56 | // ^ ^ ^ ^ ^ |
| 57 | // Provider __| | | | | |
| 58 | // | Region Account ID |_ Notification Name |
| 59 | // Service _| |
| 60 | // |
| 61 | // You should replace YOUR-PROVIDER, YOUR-SERVICE, YOUR-REGION, YOUR-ACCOUNT-ID and YOUR-RESOURCE |
| 62 | // with actual values that you receive from the S3 provider |
| 63 | |
| 64 | // Here you create a new Topic notification |
| 65 | topicArn := notification.NewArn("YOUR-PROVIDER", "YOUR-SERVICE", "YOUR-REGION", "YOUR-ACCOUNT-ID", "YOUR-RESOURCE") |
| 66 | topicConfig := notification.NewConfig(topicArn) |
| 67 | topicConfig.AddEvents(notification.ObjectCreatedAll, notification.ObjectRemovedAll) |
| 68 | topicConfig.AddFilterPrefix("photos/") |
| 69 | topicConfig.AddFilterSuffix(".jpg") |
| 70 | |
| 71 | // Create a new Queue notification |
| 72 | queueArn := notification.NewArn("YOUR-PROVIDER", "YOUR-SERVICE", "YOUR-REGION", "YOUR-ACCOUNT-ID", "YOUR-RESOURCE") |
| 73 | queueConfig := notification.NewConfig(queueArn) |
| 74 | queueConfig.AddEvents(notification.ObjectRemovedAll) |
| 75 | |
| 76 | // Create a new Lambda (CloudFunction) |
| 77 | lambdaArn := notification.NewArn("YOUR-PROVIDER", "YOUR-SERVICE", "YOUR-REGION", "YOUR-ACCOUNT-ID", "YOUR-RESOURCE") |
| 78 | lambdaConfig := notification.NewConfig(lambdaArn) |
| 79 | lambdaConfig.AddEvents(notification.ObjectRemovedAll) |
| 80 | lambdaConfig.AddFilterSuffix(".swp") |
| 81 | |
| 82 | // Now, set all previously created notification configs |
| 83 | config := notification.Configuration{} |
| 84 | config.AddTopic(topicConfig) |
| 85 | config.AddQueue(queueConfig) |
| 86 | config.AddLambda(lambdaConfig) |
| 87 | |
| 88 | err = s3Client.SetBucketNotification(context.Background(), "YOUR-BUCKET", config) |
| 89 | if err != nil { |
nothing calls this directly
no test coverage detected