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

时间:2019-02-19 15:25:11

标签: node.js amazon-web-services amazon-s3

我想使用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!');
            });
        }
    });

1 个答案:

答案 0 :(得分:4)

AWS Lambda似乎不适合此处的工作。如果副本花费的时间超过了Lambda的最大运行时间,该怎么办?您可以编写一些内容以获取所有对象的列表,然后为每个对象触发一次Lambda函数,但这似乎有些过分。

如何运行一次plugins { `java-library` `maven-publish` } tasks.register<Jar>("sourcesJar") { from(sourceSets["main"].allJava) classifier = "sources" } tasks.register<Jar>("javadocJar") { from(tasks["javadoc"]) classifier = "javadoc" } command以将一个存储桶的内容同步到另一个存储桶,然后使用AWS S3跨区域复制配置存储桶以自动复制添加的任何新对象将来有钱吗?