I would like to know how to copy the object from s3 to s3 using node.js With the aws s3 command, It could be executed as follows.
s3 cp --recursive s3://xx/yy s3://zz/aa
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#copyObject-property
I refer to above link,But I don't know how to do it using node.js
any Idea?
To copy an object between buckets, you must make sure that the correct permissions are configured. To copy an object between buckets in the same AWS account, you can set permissions using IAM policies.
You then create an IAM policy in your destination account that allows a user to perform PutObject and GetObject actions on the source S3 bucket. Finally, you run copy and sync commands to transfer data from the source S3 bucket to the destination S3 bucket. Accounts own the objects that they upload to S3 buckets.
If you just want to copy one object copyObject API.
var params = {
Bucket: "destinationbucket",
CopySource: "/sourcebucket/sourceKeyName",
Key: "targetKeyName"
};
s3.copyObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
If you want to perform recursively for all objects in a bucket, then
List all the object keys in a bucket using the listObjectsV2 API.
If versioning is enabled in the source-bucket and you want to copy a specific version of the key, Invoke the listObjectVersions API as well and get the Version-Id
for each S3 Key.
NOTE: If versioning is not enabled, then you can ignore STEP-2.
Call copyObject
for each S3 Key and the Version-Id
obtained in Step-1 and Step-2 respectively. Version-id
is optional.
If you want to really move (so not just copy, but in addition remove the source file)
const moveAndDeleteFile = async (file,inputfolder,targetfolder) => {
const s3 = new AWS.S3();
const copyparams = {
Bucket : bucketname,
CopySource : bucketname + "/" + inputfolder + "/" + file,
Key : targetfolder + "/" + file
};
await s3.copyObject(copyparams).promise();
const deleteparams = {
Bucket : bucketname,
Key : inputfolder + "/" + file
};
await s3.deleteObject(deleteparams).promise();
....
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With