Скопируйте содержимое корзины S3 в другую корзину |Узел JS - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу скопировать все содержимое корзины S3 в другую корзину S3 (в той же учетной записи) с помощью AWS Lambda ( NodeJs ).

Сейчас я делаю следующее:составить список содержимого исходного блока, а затем скопировать его в целевой контейнер.

Есть ли лучший способ скопировать все содержимое? Короче говоря, я хочу дубликатведро.

Мой код в 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 голосов
/ 19 февраля 2019

AWS Lambda не кажется подходящим инструментом для работы здесь.Что если копия занимает больше времени, чем максимальное время выполнения лямбды?Вы можете написать что-нибудь, чтобы получить список всех объектов, а затем запустить лямбда-функцию один раз для каждого объекта, но это выглядит как перебор.

Как насчет выполнения одноразовой команды aws s3 sync для синхронизации содержимого одного сегмента с другим, а затем настроить сегменты с межрегиональной репликацией AWS S3 для автоматического копирования любых новых объектов, которые будут добавлены в сегмент в будущем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...