📢 Registration + agenda now live
Explore the latest Grafana Cloud and AI solutions, learn tips & tricks from demos and hands-on workshops, and get actionable advice to advance your observability strategy. Register now and get 50% off - limited tickets available (while they last!).
Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
A Promise that fulfills with an
S3UploadedObject containing metadata about the completed multipart upload, including ETag and optional checksums.
Example
JavaScript
JavaScript
import crypto from'k6/crypto';import exec from'k6/execution';import{
AWSConfig,
S3Client,}from'https://jslib.k6.io/aws/0.14.0/s3.js';const awsConfig =newAWSConfig({region: __ENV.AWS_REGION,accessKeyId: __ENV.AWS_ACCESS_KEY_ID,secretAccessKey: __ENV.AWS_SECRET_ACCESS_KEY,sessionToken: __ENV.AWS_SESSION_TOKEN,});const s3 =newS3Client(awsConfig);const testBucketName ='test-jslib-aws';const testFileKey ='multipart.txt';exportdefaultasyncfunction(){// List the buckets the AWS authentication configuration// gives us access to.const buckets =await s3.listBuckets();// If our test bucket does not exist, abort the execution.if(buckets.filter((b)=> b.name === testBucketName).length ==0){
exec.test.abort();}// Produce random bytes to upload of size ~12MB, that// we will upload in two 6MB parts. This is done as the// minimum part size supported by S3 is 5MB.const bigFile = crypto.randomBytes(12*1024*1024);// Initialize a multipart uploadconst multipartUpload =await s3.createMultipartUpload(testBucketName, testFileKey);// Upload the first partconst firstPartData = bigFile.slice(0,6*1024*1024);const firstPart =await s3.uploadPart(
testBucketName,
testFileKey,
multipartUpload.uploadId,1,
firstPartData
);// Upload the second partconst secondPartData = bigFile.slice(6*1024*1024,12*1024*1024);const secondPart =await s3.uploadPart(
testBucketName,
testFileKey,
multipartUpload.uploadId,2,
secondPartData
);// Complete the multipart uploadconst uploadResult =await s3.completeMultipartUpload(
testBucketName,
testFileKey,
multipartUpload.uploadId,[firstPart, secondPart]);// Access the upload metadata
console.log('Multipart upload completed! ETag:', uploadResult.eTag);if(uploadResult.size){
console.log('Total object size:', uploadResult.size);}// For multipart uploads, the checksum type will typically be "COMPOSITE"if(uploadResult.checksumType){
console.log('Checksum type:', uploadResult.checksumType);}// Let's redownload it verify it's correct, and delete itconst obj =await s3.getObject(testBucketName, testFileKey);await s3.deleteObject(testBucketName, testFileKey);}
A k6 script that will upload a multipart upload to an S3 bucket