JavaScript SDK

List buckets

await s3.listBuckets().promise();

List objects

List objects in root folder

await s3.listObjectsV2({
    Bucket: 'BUCKET',
    Delimeter: '/',
}).promise();

List objects in the folder

await s3.listObjectsV2({
    Bucket: 'BUCKET',
    Delimeter: '/',
    Prefix: 'my-folder'
}).promise();

Get files metadata

const result = await s3.headObject({
    Bucket: 'BUCKET',
    Key: 'folder/file-name.txt',
}).promise();

/*
{
    Metadata: {key: 'value'},
    ContentLength: 123,
    ETag: '...',
    ...
}
*/

Edit objects metadata

Note that you can not change values of these metadatas: file-hash, storage,location. When you set MetadataDirective: 'REPLACE' any existing metadatas will be overridden. So if you want to edit only some of metadatas then include existing metadatas too.

await s3.copyObject({
  Bucket: 'BUCKET',
  Key: 'file.txt',
  CopySource: 'BUCKET/file.txt',
  Metadata: {
    'key': 'value',
    'key2': 'value2'
  },
  MetadataDirective: 'REPLACE'
}).promise()

Make object private or public

await s3.putObjectAcl({
  Bucket: 'BUCKET',
  Key: 'folder/file-name.txt',
  ACL: 'public-read',
}).promise()

await s3.putObjectAcl({
  Bucket: 'BUCKET',
  Key: 'folder/file-name.txt',
  ACL: 'private'
}).promise()

Delete an object

await s3.deleteObject({
  Bucket: 'BUCKET',
  Key: 'folder/file-name.txt',
}).promise();

Last updated