有没有办法使用aws-sdk获取已删除的s3对象的先前版本?

andreswebs

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

该事件包含已删除对象的versionId。

有没有办法发现被删除对象的前一个版本的versionId并使用aws-sdk获取该版本?

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

(我正在使用JavaScript aws-sdk)

andreswebs

可以通过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;
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法使用OpenScad拉伸对象

有没有办法从AWS S3进行“ npm安装”?

有没有办法加快在 AWS S3 上上传文件?

有没有办法在 Github Actions 中运行 Boto3 (AWS SDK) 命令?

有没有办法删除已搁置的内容?

有没有办法获取liblapack.a的版本?

有没有办法列出可用/已配置的AWS CLI配置文件?

有没有办法更改已创建资源的 aws 资源属性?

有没有办法从Method []中删除对象

有没有办法从SQLAlchemy对象获取引擎?

有没有办法在运行时获取使用中的Guava版本?

有没有办法在 pytest 中获取某个测试使用的所有设备名称?

有没有办法使用装饰器“@property”获取类的所有功能?

有没有办法使用pycodestyle获取所有pep8违规的列表?

有没有办法使用 AppleScript 获取有关视频的信息?

有没有办法在带有 Python3 的 Window 上使用 ROS?

有没有办法使用javascript动态添加或删除对象

在使用Shiny的R中,有没有办法使用checkboxGroupInput的先前状态?

有没有办法卸载已加载的模型?

有没有办法停止已启动的功能?

Bundler:有没有办法设置版本?

有没有办法检查文件的版本?

有没有办法自动安装android sdk?

有没有办法删除重复的标签?

有没有办法删除历史JShell?

有没有办法删除 + @ ?迹象

有没有办法删除JShell中的导入?

有没有办法删除小兵?

有没有办法动态删除arraylist的条目