Amazon S3 Component
Manage files within an Amazon (AWS) S3 bucket
Component key: aws-s3Description
Amazon S3 is a file storage solution from Amazon Web Services. The Amazon S3 component allows you to create, read, update, move, list or delete objects (files) within an Amazon S3 bucket.
API Documentation: Amazon S3 API Reference
A common integration pattern involves listing files in a file store, and performing a series of actions on the array of files that are returned. See our looping over files quickstart for information about how to create a loop over an array of files.
Listening for file changes
You can leverage Amazon Simple Notification Service (SNS) to listen for file changes in S3. Our GitHub examples repo contains an example integration that illustrates how to listen for file changes in S3 and perform an action when a file is added or updated - you can import and try it out for yourself.
The example integration contains three flows:
- Create and configure SNS topic runs when an instance is deployed and will create an SNS topic and configure it to listen for new files added to S3. It instructs SNS to notify the Receive SNS Notifications flow when a new file is added to an S3 bucket that a user selected as part of the configuration wizard.
- Receive SNS Notifications will receive the SNS notification and extract the S3 bucket and key from the message. It will fetch the file that was added. From there, you can process or send that file to another system.
- Remove SNS Topic will remove the SNS topic that was created in the first flow when an instance is deleted.
Streaming large files to S3
Amazon S3 offers a feature called multipart upload that allows you to upload large files in parts. This component supports multipart uploads in two ways:
File Streaming: This is useful if you are looping over a paginated API and would like to stream the response to S3 as a CSV (or similar) file. This option is useful when you have a large number of records to process and you want to avoid loading all of them into memory at once (which can cause an out-of-memory error). When you use the Upload Stream actions, the component will automatically handle the multipart upload for you. Within your integration you would:
- Run a Upload Stream - Create Stream action to create a new file stream.
- Loop over the records you want to write to the file.
- For each record, run a Upload Stream - Write Data action to write the record to the file stream.
- Run a Upload Stream - Close Stream action to close the file stream and upload the file to S3.
Multipart Upload: This is useful if you have a file that is already split into parts and you want to upload the parts to S3 and then join them together. Within your integration you would:
- Run a Create Multipart Upload action to start a new multipart upload.
- Run a Generate Presigned URL for Multipart Uploads action to generate a presigned URL for each part.
- Run an HTTP component Post action to post each part to the presigned URL.
- Run a Complete Multipart Upload to complete the multipart upload.
This option requires that you manually handle the multipart upload process and abide by the restrictions that Amazon S3 imposes on multipart uploads (like each part being at least 5MB in size, with the exception of the last part).
Connections
AWS API Key and Secret
An AWS IAM access key pair is required to interact with Amazon S3. Make sure that the key pair you generate in AWS has proper permissions to the S3 resources you want to access. Read more about S3 IAM actions in the AWS docs.
To create an IAM access key pair:
- Sign in to the AWS Console and navigate to Identity and Access Management (IAM)
- Under the Access Keys section select Create access key
- Once created copy the Access Key and Secret access key and enter them into the connection configuration of your integration.
AWS Role ARN
To enable the IAM role authentication begin by logging into the AWS Console and navigate to Identity and Access Management (IAM).
To create an ARN user and generate credentials:
- Navigate to Users and select Create User.
- Provide a User name and check the box providing them user access to the AWS Managment Console if needed.
- Once completed with the User creation, copy the ARN provided in the summary for a later step.
- To obtain the ARN for an existing User, click on the designated username from the Users page and the ARN will be provided in the summary section.
- From the summary section, select Create access key
- Select Third-party service as the access key type and select next.
- Set a description and select create access key.
- Copy the Access Key and Secret access key and enter those into the connection configuration of your integration along with the ARN.
To create and assign a user a role:
- Navigate to Roles and select Create Role.
- Select Custom Trust Policy for the Trusted entity types
- Copy the following statement into the statement console. Making sure to replace the ARN with the user's actual ARN from the previous section
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "ARN"
},
"Action": "sts:AssumeRole"
}
]
}
- When adding permissions provide the AmazonS3FullAccess permission
- Complete remaining steps and select Create Role
Triggers
Webhook
Trigger to handle SNS subscription for S3 event notifications | key: snsS3NotificationWebhook
To trigger an S3 webhook, first you need to set up event notifications by using a SNS topic subscription to receive notifications when something changes on an S3 bucket.
You can accomplish this by creating an integration flow using the next components in the same order:
Create Topic For S3 Event Notification
Use this component to create a new topic. This topic will act as a communication channel for receiving event notifications from the S3 bucket.
Update Topic Policy For S3 Event Notification
Use this component to modify the access policy of the previously created topic to grant permission to the S3 bucket to publish messages to the topic. This policy adjustment allows the S3 bucket to send event notifications to a topic.
Subscribe to Topic
Use this component to subscribe to the previously created topic. You should create another flow and include the S3 Webhook (snsS3NotificationWebhook
) get the flow URL and set it as the subscription's endpoint. This endpoint represents the Prismatic webhook that will be triggered when events occur in the S3 bucket. Note: S3 Webhook (snsS3NotificationWebhook
) takes care of confirming the subscription.
Bucket SNS Event Trigger Configuration
Use this component to configure the S3 bucket to generate event notifications when objects within it change. Specify the desired events such as object creation, deletion, or modification that should trigger the event.
With these steps, you have established a flow where changes to objects in the S3 bucket will trigger event notifications. These notifications are published to the created topic, which then delivers them to the subscribed Prismatic trigger endpoint. As a result, the Prismatic webhook URL is called, allowing you to process the events or perform custom actions in response to the changes in the S3 bucket.
{
"payload": {
"headers": {
"Accept-Encoding": "gzip,deflate",
"Content-Type": "text/plain; charset=UTF-8",
"Host": "hooks.prismatic.io",
"User-Agent": "Amazon Simple Notification Service Agent",
"X-Amz-Cf-Id": "YniH-T5wsgLIDAZGQqoyBHaDGn7wn-6HLrba6tXoQPeWzF4kKBU12345",
"x-amz-sns-message-id": "bf30dd82-9ea0-5810-8856-80a8f5b12345",
"x-amz-sns-message-type": "Notification",
"x-amz-sns-subscription-arn": "arn:aws:sns:us-east-2:360110312345:TopicName:885a69c3-c9e8-4e60-95e0-eef25d212345",
"x-amz-sns-topic-arn": "arn:aws:sns:us-east-2:360110312345:TopicName",
"X-Amzn-Trace-Id": "Root=1-64b068d6-637723ca3d4d079c07112345"
},
"queryParameters": null,
"rawBody": "<data (1790 bytes)>",
"body": {
"data": {
"Type": "Notification",
"MessageId": "bf30dd82-9ea0-5810-8856-80a8f5b12345",
"TopicArn": "arn:aws:sns:us-east-2:360110312345:TopicName",
"Subject": "Amazon S3 Notification",
"Message": "{\"Records\":[{\"eventVersion\":\"2.1\",\"eventSource\":\"aws:s3\",\"awsRegion\":\"us-east-2\",\"eventTime\":\"2023-07-13T21:12:53.055Z\",\"eventName\":\"ObjectCreated:Put\",\"userIdentity\":{\"principalId\":\"AHAMUB6P64E3X\"},\"requestParameters\":{\"sourceIPAddress\":\"189.3.2.1\"},\"responseElements\":{\"x-amz-request-id\":\"F4SB1AW5GXE12345\",\"x-amz-id-2\":\"ushICMH5Uag/mHKtTGsdxqV3NqMCKvLQyZgw7qNrfKU/FeTaJhKmAO6Z+pG0DITDcmmIcXHB25nmOnxnsVxByqK8qVpFVrcvy+u0Swy12345\"},\"s3\":{\"s3SchemaVersion\":\"1.0\",\"configurationId\":\"EventName\",\"bucket\":{\"name\":\"bucketName\",\"ownerIdentity\":{\"principalId\":\"12345\"},\"arn\":\"arn:aws:s3:::bucketName\"},\"object\":{\"key\":\"test.docx\",\"size\":12551,\"eTag\":\"c8a35e0c8dc9b8a2b622339fa5b12345\",\"sequencer\":\"0064B068D4E19CDEAD\"}}}]}",
"Timestamp": "2023-07-13T21:12:54.505Z",
"SignatureVersion": "1",
"Signature": "ZlPxmNxGxhG05drIsJONhJw8bA8kW4XJ3zB5KjIfr7cMJX8iDkcyhI3T8ptn8Klc0InlwCkdmuV3HSWBL/RkwY47za5rFOXuHxuwKwCu4sbTiEfOnznoRnfYaq/hORp3Si4IIVpU2F7CVHfNOseiU1Ml+kktdHzf2rPBsD8iaWh7R9edtv9P0dZ5jrPV4dXDaIaqf5t/4FgCvYCoxcTqgaIfcL6EYtGmxSsTC3fc47OAjpTaj9mEeQ/c23P6pOYGchDwbE/Yl/Slioy9lk93pahRoUzukpbj8z5cJm9iGlT++v6O2ztwO/x12345",
"SigningCertURL": "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-12345.pem",
"UnsubscribeURL": "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:360110312345:TopicName:885a69c3-c9e8-4e60-95e0-eef212345"
}
},
"pathFragment": "",
"webhookUrls": {
"Flow 1": "https://hooks.prismatic.io/trigger/<WEBHOOK_ID>"
},
"webhookApiKeys": {
"Flow 1": [
"sample-api-key"
],
"SNS S3": [
"sample-api-key"
]
},
"invokeUrl": "https://hooks.prismatic.io/trigger/<WEBHOOK_ID>",
"executionId": "SW5zdGFuY2VFeGVjdXRpb25SZXN1bHQ6N2Y3NmJkNjctZjFkNS00YTU5LTliODEtN2JiZGJlNGM12345",
"customer": {
"id": "testCustomerId",
"name": "Test Customer",
"externalId": "testCustomerExternalId"
},
"instance": {
"id": "testInstanceId",
"name": "Test Instance"
},
"user": {
"id": "testUserId",
"email": "testUserEmail@example.com",
"name": "Test User",
"externalId": "testUserExternalId"
}
}
}
Data Sources
Select AWS Region
Select an AWS region | key: selectRegion | type: picklist
Select Bucket
Choose a bucket from a list | key: selectBucket | type: picklist
Actions
Abort Multipart Upload
Abort a multipart upload | key: abortMultipartUpload
{
"data": {
"$metadata": {
"httpStatusCode": 204,
"requestId": "DZ1ZJB3H2JB1234",
"extendedRequestId": "0D9BDVoAGoHqu3dIW4WHmaO4kkiWecrbf0yLRMe/JmUfX7N/12345=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Bucket SNS Event Trigger Configuration
Add events to send notifications to SNS Topic | key: bucketEventTriggerConfiguration
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "73B4K590MABCMWV",
"extendedRequestId": "AHYlhdFxyrlbc3otaMb/gcjlmDEY+UT3xt7Vz6ZQ8F4B1234GZQSGN7D6yDV7mEC+U/1xU0pKc=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Complete Multipart Upload
Complete a multipart upload | key: completeMultipartUpload
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "GD4Y1XMZ6MFV1234",
"extendedRequestId": "Ego8CAUdYnt2THhZmBLnbfmTPY0HR8zA9rEMkSg+OB0t/uldGkuBlI6UF9X+123456=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"ServerSideEncryption": "AES256",
"Bucket": "bucket-name",
"ETag": "\"d96cf49f8c439501eb19c4728712345-1\"",
"Key": "image.jpg",
"Location": "https://bucketname.s3.us-east-2.amazonaws.com/image.jpg"
}
}
Copy Object
Copy an object in S3 from one location to another | key: copyObject
{
"data": {
"CopyObjectResult": {
"ETag": "Example",
"LastModified": "2020-01-01T00:00:00.000Z"
}
}
}
Create Multipart Upload
Create a multipart upload | key: createMultipartUpload
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "J4Q9AY99DPMR1234",
"extendedRequestId": "P59zKeH2C4Jz3VAC1I+12345Gty4d4gyl9JYQmc4udM6bCB6w/MEg8AKKWUuBH1x0EU2dufwkw=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"ServerSideEncryption": "AES256",
"Bucket": "bucket-name",
"Key": "file.txt",
"UploadId": "9DWJzLdFIcK05G2Yq.TNhJbCU57dDZyIRlO_tHcdFgYqWQgtu6XdASs7h.DJlcWk2M9vmEx72gXcS8q5SBu_12345ccg-"
}
}
Create SNS Topic For S3 Event Notification
Create an Amazon SNS Topic to be used with S3 Event Notifications | key: createTopic
{
"data": {
"TopicArn": "arn:aws:Example Topic Arn"
}
}
Delete Bucket
Deletes the S3 bucket. All objects in the bucket must be deleted before the bucket itself can be deleted | key: deleteBucket
{
"data": {
"$metadata": {
"httpStatusCode": 204,
"requestId": "CBD415E7",
"extendedRequestId": "WXvHrStedS7jFJZVw0Pt1LH3K3Nn99XFGuyELkK7UQANs3IOHs9GsR=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Delete Object
Delete an Object within an S3 Bucket | key: deleteObject
{
"data": {
"DeleteMarker": true,
"VersionId": "3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo",
"RequestCharged": "requester"
}
}
Delete Objects
Delete multiple objects from a bucket | key: deleteObjects
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "FAQAVT",
"extendedRequestId": "T/nk6UtPuVs11K6ji59C8phr==",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"Deleted": [
{
"Key": "file.csv"
},
{
"Key": "audio.mp3"
}
]
}
}
Generate Presigned URL
Generate a presigned URL that can be used to upload or download an object in S3 | key: generatePresignedUrl
{
"data": "https://my-bucket.s3.us-east-2.amazonaws.com/my-file.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256..."
}
Generate Presigned URL for Multipart Uploads
Generate presigned URL's that can be used to upload or download an object in S3 | key: generatePresignedForMultiparUploads
{
"data": [
{
"url": "https://my-bucket.s3.us-east-2.amazonaws.com/my-file.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256...",
"partNumber": 1
}
]
}
Get Bucket Location
Get the location (AWS region) of a bucket by name | key: getBucketLocation
{
"data": "us-east-1"
}
Get Bucket Notification Configuration
Returns the notification configuration of a bucket | key: getBucketNotificationConfiguration
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "2KMYXFM4GHPES",
"extendedRequestId": "dLu9EloFaZ2UeACk5l4IovjfHXHTkM7kFLdThrbIJIjn05dgO7bdU3TUJ7/8DzZvcQ==",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"LambdaFunctionConfigurations": [
{
"Id": "Lambda",
"LambdaFunctionArn": "arn:aws:lambda:us-east-2:1234:function:Function",
"Events": [
"s3:ObjectRemoved:*"
]
}
],
"QueueConfigurations": [
{
"Id": "Queue",
"QueueArn": "arn:aws:sqs:us-east-2:1234:Queue",
"Events": [
"s3:ObjectCreated:*"
]
}
],
"TopicConfigurations": [
{
"Id": "Topic",
"TopicArn": "arn:aws:sns:us-east-2:1234:Topic",
"Events": [
"s3:ObjectRestore:*"
]
}
]
}
}
Get Current Account
Get the current AWS account | key: getCurrentAccount
{
"data": {
"$metadata": {},
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/Alice",
"UserId": "ABCDEFGHIJKLMNOP:ABCDEFGHIJKLMNOP"
}
}
Get Object
Get the contents of an object | key: getObject
{
"data": {
"type": "Buffer",
"data": [
69,
120,
97,
109,
112,
108,
101,
32,
70,
105,
108,
101,
32,
67,
111,
110,
116,
101,
110,
116,
115
]
},
"contentType": "application/octet"
}
Get Object Attributes
Retrieves all the metadata from an object without returning the object itself | key: getObjectAttributes
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "0AJN29JBC3D5BNB6",
"extendedRequestId": "sVW4/xKq7DkMI8kgvbJUNWbzzZ9H6GKqyVocDm3uE4y7dZ6GmZcFrIC9MPGDjSNXMMn8CtLO8Vy0SxOcNOwl2A==",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"LastModified": "2024-03-08T22:20:41.000Z",
"VersionId": "0Ec_RdbYOEQ1Un2HllBJbGG758RS3UuZ",
"ObjectSize": 515400
}
}
Get Object Lock Configuration
Gets the Object Lock configuration for a bucket | key: getObjectLockConfiguration
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "J58R459KF4NH",
"extendedRequestId": "YLfHsBUyeXU06tYjF7ZLX7f7JhBL1FFZhA/UZKUr4WNTy0OHDOjYN=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"ObjectLockConfiguration": {
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "GOVERNANCE",
"Years": 2
}
}
}
}
}
Get Object Retention
Retrieves an object's retention settings | key: getObjectRetention
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "88W3KJSMC9E",
"extendedRequestId": "aJ3Rpb+v2F6Fqy47J6fWoPPCqe+LC8UX8vo5x3KK/YhN/=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"Retention": {
"Mode": "COMPLIANCE",
"RetainUntilDate": "2024-08-25T20:00:00.000Z"
}
}
}
Head Bucket
Determine if a bucket exists and if you have permission to access it | key: headBucket
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "A6R8PTRGRVGVB123",
"extendedRequestId": "O1lqC0pMNa1+juScFrJbqgtJDQgkqvkcWDvLPfmcZBQNbxe+Bl4JE0WeIuswg/123456==",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Head Object
Retrieve metadata from an object without returning the object itself | key: headObject
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "2GNCNQ9QYJF91H2H3",
"extendedRequestId": "20td2yhMFyFEFYm7Wh+P+qr8DDva152du5KA+JFU7ZRuHWLFZZxdLCOVfnMF41K2BYQ/12345=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"AcceptRanges": "bytes",
"LastModified": "2021-08-25T20:00:00.000Z",
"ContentLength": 65338,
"ETag": "\"266b7131485849fcefe583dcce654321\"",
"ContentType": "image/jpeg",
"ServerSideEncryption": "AES256",
"Metadata": {}
}
}
List Buckets
List all buckets in an AWS account | key: listBuckets
{
"data": [
{
"Name": "bucket-1",
"CreationDate": "2024-03-08T23:30:22.000Z"
}
]
}
List Multipart Uploads
Lists in-progress multipart uploads in a bucket | key: listMultipartUploads
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "MSB2RAFETTBCQ123",
"extendedRequestId": "Ax6cjVx4lugZGOI+yo3dApqbvrtLD3U",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"Bucket": "some-bucket",
"IsTruncated": false,
"KeyMarker": "",
"MaxUploads": 1000,
"NextKeyMarker": "file.txt",
"NextUploadIdMarker": "itQ2Dw8eMZ01dGiwRIj2dwDqpx",
"UploadIdMarker": "",
"Uploads": [
{
"UploadId": "hbZQmDNtym9xtdh8XwgT7Ys..FkRWJfV0MUgmNWg",
"Key": "new_file.txt",
"Initiated": "2024-01-25T16:06:31.000Z",
"StorageClass": "STANDARD",
"Owner": {
"ID": "0edc4b00d"
},
"Initiator": {
"ID": "0edc4b00d"
}
}
]
}
}
List Objects
List Objects in a Bucket | key: listObjects
{
"data": [
"Example Item 1",
"Example Item 2",
"Example Item 3"
]
}
List Parts
List parts of a multipart upload | key: listParts
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "3Z9CNHKT01WVE123",
"extendedRequestId": "AYcUJyiexeUBBf5Uynsj4m1PojM18tHSxlyKMWzjM+123456=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"Bucket": "bucket-name",
"Initiator": {
"ID": "0edc4b00d1bfae1ebe33617c5cfe04e17b6f1fb9c5c2c55796123456"
},
"IsTruncated": false,
"Key": "image.jpg",
"MaxParts": 1000,
"NextPartNumberMarker": "1",
"Owner": {
"ID": "0edc4b00d1bfae1ebe33617c5cfe04e17b6f1fb9c5c2c55796123456"
},
"PartNumberMarker": "0",
"Parts": [
{
"PartNumber": 1,
"LastModified": "2024-03-11T23:47:51.000Z",
"ETag": "\"266b7131485849fcefe583dcce071234\"",
"Size": 65338
}
],
"StorageClass": "STANDARD",
"UploadId": "iHtFwRT6d6IAPwGTlT6tO1iBApulQGCA2sG7yn_BzUKItrnLrWykCbDheQBJrb1MUGHgGfihOY07XfnCeU2CWCZM0kD6VbyC46MJ4123456-"
}
}
Put Bucket Notification Configuration
Replace an existing bucket notification configuration with a new one | key: putBucketNotificationConfiguration
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "3G6FNXP71KGVQ",
"extendedRequestId": "epeRYyT9tl3QOMTMck4AG+NqmGa5fRKv5nME7gRl8KMxfnCAKWZzKbWVKp4ED7RaZIGvVcS=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Put Object
Write an object to S3 | key: putObject
File Contents can be a reference to a binary file from a previous step.
For example, if you have an HTTP Get action that pulls down a .png image, you can reference its step name to write the .png to S3.
Or, File Contents can be simple text, like 'Hello World'
.
{
"data": {
"ETag": "Example Tag",
"VersionId": "Example Version Id"
}
}
Put Object Lock Configuration
Places an Object Lock configuration on the specified bucket | key: putObjectLockConfiguration
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "HRTN",
"extendedRequestId": "n2j6gnXOgOKm+PomoHrLsbOhatc7LMw1Su",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Put Object Retention
Places an Object Retention configuration on an object | key: putObjectRetention
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "9GKTJZDRMJCGMNY6",
"extendedRequestId": "NKjiPDGEYKYtH7sHPWKSVpy9y9NtjbXzeJ7whq75y62jiH9JLuZOpMLCBiYyc+/hOlnOTCaTpWo=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Subscribe to SNS Topic
Subscribe to an Amazon SNS Topic for S3 Event Notifications | key: subscribeToTopic
{
"data": {
"SubscriptionArn": "arn:aws:sns:us-east-2:123456789012:MyExampleTopic:00000000-00000000-00000000-00000000"
}
}
Unsubscribe from a SNS Topic
Unsubscribe from an Amazon SNS Topic for S3 Event Notifications | key: unsubscribeFromTopic
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "059f8a07-f312-5e3b-9b7c-d46e66ee8a58",
"extendedRequestId": null,
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Update SNS Topic Policy For S3 Event Notification
Update an Amazon SNS Topic Policy to grant S3 permission to publish | key: updateTopicPolicy
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "b81eb768-e79a-52a1-9be8-e90175212345",
"extendedRequestId": null,
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
}
}
}
Upload Part
Upload a chunk of a multipart file upload | key: uploadPart
{
"data": {
"$metadata": {
"httpStatusCode": 200,
"requestId": "3Z9FSV3QYRYCK123",
"extendedRequestId": "nhNCxtYGnVN+nxfdPaCPgAc23cJw2rphbIU1Z5ZUEmUDXIvF+Ra3eUXv2MNdOoWTIKXEym12345=",
"cfId": null,
"attempts": 1,
"totalRetryDelay": 0
},
"ServerSideEncryption": "AES256",
"ETag": "\"266b7131485849fcefe583dcce071234\"",
"part": {
"ETag": "\"266b7131485849fcefe583dcce071234\"",
"PartNumber": 1
}
}
}
Upload Stream - Close Stream
Close an upload stream | key: closeUploadStream
Upload Stream - Create Stream
Create an upload stream to S3 | key: createUploadStream
{
"data": "711B632B-C025-4E26-9E34-525822E3C0ED"
}
Upload Stream - Write Data
Write to an upload stream | key: writeUploadStream