lambda-s3-mv
v1.1.0
Published
This nodejs module will move files to another S3 location.
Downloads
9
Maintainers
Readme
lambda-s3-mv
npm install lambda-s3-mv --save
Introduction
This nodejs module will move S3 files to another S3 location.
Description
The AWS S3 sdk doesn't come out with a built-in move files operation. This module will handle that for you using the available built-in operations, such copyObject (and deleteObjects if "createCopy" set to false).
This module can move single S3 file, or can move all the files in the specified S3 sourcePath parameter.
/*
* This nodejs module will move files to another S3 location. It has also an option to just copy the files.
* @param {options} - parameters, as follows
{
sourceBucket: 's3-source-bucket-name',
sourcePath: 's3-source-prefix-path',
sourceFiles: ['source-file1.txt', 'source-file2.txt'],
targetBucket: 's3-target-bucket-name',
targetPath: 's3-target-prefix-path',
targetFiles: ['source-file1-moved.txt', 'source-file2-moved.txt'],
createCopy: false
}
* @return {object} - a JSON object containing the details of the files that has been moved or copied.
{
s3Bucket: 's3-target-bucket-name',
s3Objects: [
'/s3-target-prefix-path/source-file1.txt',
'/s3-target-prefix-path/source-file2.txt'
]
}
*/
| Options | Required | Description | | --------|---------|-------| | sourceBucket | REQUIRED | the bucket name containing the source files | sourcePath | REQUIRED | the s3 prefix path containing the source files | sourceFiles | OPTIONAL | If not specified, by default it will include all files in the $sourcePath | targetBucket | OPTIONAL | If not specified, by default the $sourceBucket will be used as the $targetBucket | targetPath | REQUIRED | the s3 prefix path to store the target files | targetFiles | OPTIONAL | the modified name of the files after moved. This should match the number of files in $sourceFiles, else it will fallback to the name in $sourceFiles. If not specified, by default it will use the name of the files in $sourceFiles. | createCopy | OPTIONAL | If not specified, by default it is set to false
Usage
Move ALL files in the specified S3 sourcePath into the same S3 bucket.
const s3mv = require('lambda-s3-mv'); const result = await s3mv.move({ sourceBucket: 's3-source-bucket-name', sourcePath: 's3-source-prefix-path', targetPath: 's3-target-prefix-path' }); console.log(result);
Move ALL files in the specified S3 sourcePath into different S3 bucket.
const s3mv = require('lambda-s3-mv'); const result = await s3mv.move({ sourceBucket: 's3-source-bucket-name', sourcePath: 's3-source-prefix-path', targetBucket: 's3-target-bucket-name', targetPath: 's3-target-prefix-path' }); console.log(result);
Move specified list of files in the specified S3 sourcePath into the same S3 bucket.
const s3mv = require('lambda-s3-mv'); const result = await s3mv.move({ sourceBucket: 's3-source-bucket-name', sourcePath: 's3-source-prefix-path', sourceFiles: ['source-file1.txt', 'source-file2.txt'], targetPath: 's3-target-prefix-path' }); console.log(result);
Move specified list of files in the specified S3 sourcePath into the same S3 bucket, and rename files after moved.
const s3mv = require('lambda-s3-mv'); const result = await s3mv.move({ sourceBucket: 's3-source-bucket-name', sourcePath: 's3-source-prefix-path', sourceFiles: ['source-file1.txt', 'source-file2.txt'], targetPath: 's3-target-prefix-path', targetFiles: ['source-file1-moved.txt', 'source-file2-moved.txt'] }); console.log(result);
Copy ALL files in the specified S3 sourcePath into the same S3 bucket. "createCopy" set to true.
const s3mv = require('lambda-s3-mv'); const result = await s3mv.move({ sourceBucket: 's3-source-bucket-name', sourcePath: 's3-source-prefix-path', sourceFiles: ['source-file1.txt', 'source-file2.txt'], targetPath: 's3-target-prefix-path', createCopy: true }); console.log(result);
Important
Please make sure the lambda has read and write access to specifed source S3 Bucket.
Sample Lambda using the lambda-s3-mv, with Cloudformation, can be found here.
Test
npm run test