有没有一种方法可以获取带有AWS-SDK的已删除的S3对象的先前版本



我有一个启用版本控制的S3存储桶,配置为将通知事件发送到lambda。当S3:ObjectReperved:*接收到事件时,我需要从该存储桶中处理已删除的对象。

该事件包含已删除对象的版本ID。

是否有一种方法可以发现已删除对象的以前版本的版本ID并使用AWS-SDK获取该版本?

或者,是否可以使用AWS-SDK获取已删除的对象?

(我正在使用JavaScript AWS-SDK(

可以通过三步过程来完成:

  1. 获取具有ListObjectversions版本的列表
  2. 从列表中获取想要的版本
  3. 获取特定对象,将deStryId作为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;
    }
}

通过@andreswebs提到的解决方案获取以下错误img

UnhandledPromiseRejectionWarning: MethodNotAllowed: The specified method is not allowed against this resource.

相关内容

  • 没有找到相关文章

最新更新