我想知道如何使用node.js使用aws s3命令将对象从s3复制到s3,可以按以下方式执行。
s3 cp --recursive s3://xx/yy s3://zz/aa
Run Code Online (Sandbox Code Playgroud)
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#copyObject-property
我指的是上面的链接,但我不知道如何使用node.js
任何的想法?
Tob*_*obi 12
如果你想真正移动(所以不仅仅是复制,还要删除源文件)
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();
....
}
Run Code Online (Sandbox Code Playgroud)
请注意,encodeURI
如果文件名具有特殊字符,则需要
await S3.copyObject({
Bucket: bucketName,
CopySource: encodeURI(`/${sourceBucketName}/${filename}`),
Key: filename,
}).promise()
Run Code Online (Sandbox Code Playgroud)
小智 8
s3.copyObject({
Bucket,
CopySource: `/${Bucket}/${Key}?versionId=${versionId}`,
Key,
}).promise()
Run Code Online (Sandbox Code Playgroud)
如果你确实通过了,versionId
这就是它的样子。
我花了比我愿意承认的更长的时间来弄清楚。
如果只想复制一个对象,则为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
});
Run Code Online (Sandbox Code Playgroud)
如果要对存储桶中的所有对象进行递归执行,则
使用listObjectsV2 API 列出存储桶中的所有对象键。
如果在源存储桶中启用了版本控制,并且您要复制密钥的特定版本,则也要调用listObjectVersions API并获取Version-Id
每个S3密钥的。
NOTE: If versioning is not enabled, then you can ignore STEP-2.
分别copyObject
要求每个S3密钥和Version-Id
在步骤1和步骤2中获得的。Version-id
是可选的。
归档时间: |
|
查看次数: |
5756 次 |
最近记录: |