最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

将S3存储桶的内容复制到另一个存储桶中节点JS

IT培训 admin 3浏览 0评论

将S3存储桶的内容复制到另一个存储桶中节点JS

我想使用AWS Lambda(NodeJs)将S3存储桶的所有内容复制到另一个S3存储桶(在同一帐户中)。

现在,我所做的是列出源存储桶的内容,然后将它们复制到目标存储桶中。

有没有更好的方法来复制所有内容?简而言之,我想要一个重复的桶。

我在NodeJs中的代码是:

    s3.listObjects(sourceBucketParams, function(err, data) {

        if (err) {
          console.log("Error while copying files: ", err);
        }

        if (data === null || data === undefined) {
            callback(null, 'All done!');
        }

        if (data.Contents.length) {
            async.each(data.Contents, function(file, cb) {

                var params = {
                    CopySource: sourceBucket + '/' + file.Key,
                    Bucket: destBucketName,
                    Key: file.Key,
                    ACL: 'public-read'
                };
                s3.copyObject(params, function(copyErr, copyData){
                       if (copyErr) {
                            console.log("Error: " + copyErr);
                         }
                     }
                 );
                 callback(null, 'All done!');
            });
        }
    });
回答如下:

AWS Lambda似乎不适合这里的工作。如果副本的时间超过最大Lambda运行时间,该怎么办?你可以编写一些东西来获取所有对象的列表,然后为每个对象触发一次Lambda函数,但这看起来有点过分。

如何运行一次性aws s3 sync command以将一个存储桶的内容同步到另一个存储桶,然后使用AWS S3跨区域复制配置存储桶以自动复制将来添加到存储桶的所有新对象?

将S3存储桶的内容复制到另一个存储桶中节点JS

我想使用AWS Lambda(NodeJs)将S3存储桶的所有内容复制到另一个S3存储桶(在同一帐户中)。

现在,我所做的是列出源存储桶的内容,然后将它们复制到目标存储桶中。

有没有更好的方法来复制所有内容?简而言之,我想要一个重复的桶。

我在NodeJs中的代码是:

    s3.listObjects(sourceBucketParams, function(err, data) {

        if (err) {
          console.log("Error while copying files: ", err);
        }

        if (data === null || data === undefined) {
            callback(null, 'All done!');
        }

        if (data.Contents.length) {
            async.each(data.Contents, function(file, cb) {

                var params = {
                    CopySource: sourceBucket + '/' + file.Key,
                    Bucket: destBucketName,
                    Key: file.Key,
                    ACL: 'public-read'
                };
                s3.copyObject(params, function(copyErr, copyData){
                       if (copyErr) {
                            console.log("Error: " + copyErr);
                         }
                     }
                 );
                 callback(null, 'All done!');
            });
        }
    });
回答如下:

AWS Lambda似乎不适合这里的工作。如果副本的时间超过最大Lambda运行时间,该怎么办?你可以编写一些东西来获取所有对象的列表,然后为每个对象触发一次Lambda函数,但这看起来有点过分。

如何运行一次性aws s3 sync command以将一个存储桶的内容同步到另一个存储桶,然后使用AWS S3跨区域复制配置存储桶以自动复制将来添加到存储桶的所有新对象?

发布评论

评论列表 (0)

  1. 暂无评论