Есть ли способ получить предыдущую версию удаленного объекта s3 с помощью aws-sdk? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть корзина S3 с включенным контролем версий, настроенная на отправку уведомлений о событиях в Lambda. Мне нужно обработать удаленные объекты из этой корзины, когда получено событие s3: ObjectRemoved: *.

Событие содержит идентификатор версии удаленного объекта.

Есть ли способ обнаружить идентификатор версии непосредственно предыдущей версии удаленного объекта и извлечь эту версию с помощью aws-sdk?

Или, альтернативно, есть ли способ получить удаленный объект с помощью aws-sdk?

(я использую JavaScript aws-sdk)

1 Ответ

0 голосов
/ 08 мая 2019

Это можно сделать в 3 этапа:

  1. Получить список версий с listObjectVersions
  2. Получить нужную версию из списка
  3. Получить конкретный объект, Передача VersionId в качестве аргумента в getObject
const AWS = require('aws-sdk');
const s3 = new AWS.S3();

async function getDeletedObject (event, context) {

    let params = {
        Bucket: 'my-bucket',
        Prefix: 'my-file'
    };


    try {
        const previousVersion =  await s3.listObjectVersions(params)
            .promise()
            .then(result => {
                const versions = result.Versions;
                // get previous versionId
                return versions[0].VersionId;
             });

         params = {
              Bucket: 'my-bucket',
              Key: 'my-file',
              VersionId: previousVersion
         };

         const deletedObject = await s3.getObject(params)
             .promise()
             .then(response => response.Body.toString('utf8'));

         return deletedObject;
    }

    catch (error) {
        console.log(error);
        return;
    }

}

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