如何使用node.js将对象从s3复制到s3
我想知道如何使用node.js将对象从s3复制到s3 使用AWSS3命令,它可以按如下方式执行如何使用node.js将对象从s3复制到s3,node.js,amazon-s3,Node.js,Amazon S3,我想知道如何使用node.js将对象从s3复制到s3 使用AWSS3命令,它可以按如下方式执行 s3 cp --recursive s3://xx/yy s3://zz/aa 我参考了上面的链接,但我不知道如何使用node.js来实现 有什么想法吗?如果您只想复制一个对象API 如果希望对bucket中的所有对象递归执行,那么 使用API列出bucket中的所有对象键 如果在源bucket中启用了版本控制,并且您希望复制密钥的特定版本,那么也可以调用API并获取每个S3密钥的版本Id 注意
s3 cp --recursive s3://xx/yy s3://zz/aa
我参考了上面的链接,但我不知道如何使用node.js来实现
有什么想法吗?如果您只想复制一个对象API 如果希望对bucket中的所有对象递归执行,那么
版本Id
注意:如果未启用版本控制,则可以忽略步骤2。
copyObject
<代码>版本id是可选的
s3.copyObject({
水桶
CopySource:`/${Bucket}/${Key}?versionId=${versionId}`,
钥匙
}).承诺
如果您确实传递了一个versionId
,它就是这个样子
我花了比我愿意承认的时间更长的时间来计算。请注意,如果文件名有特殊字符,则需要
encodeURI
await S3.copyObject({
Bucket: bucketName,
CopySource: encodeURI(`/${sourceBucketName}/${filename}`),
Key: filename,
}).promise()
如果您真的想移动(因此不仅要复制,还要删除源文件)
这可能会有所帮助-只是缺少copySource也必须包含bucket的内容。谢谢这是真实而重要的!我只是跌进了这个陷阱。我想最好的做法是总是
encodeURI
CopySource。否则,它可能会随时击中你。德国umlaut足以向我猛击网络错误:标题内容[“x-amz-copy-source”]
中的无效字符。
await S3.copyObject({
Bucket: bucketName,
CopySource: encodeURI(`/${sourceBucketName}/${filename}`),
Key: filename,
}).promise()
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();
....
}