有没有办法用 aws-sdk 获取已删除的 s3 对象的先前版本?
Is there a way to get the previous version of a deleted s3 object with aws-sdk?
我有一个启用了版本控制的 S3 存储桶,配置为向 Lambda 发送通知事件。当收到 s3:ObjectRemoved:* 事件时,我需要处理从那个桶中删除的对象。
该事件包含已删除对象的 versionId。
有没有办法发现已删除对象的前一个版本的 versionId 并使用 aws-sdk 获取该版本?
或者,有没有办法使用 aws-sdk 获取已删除的对象?
(我正在使用 JavaScript aws-sdk)
可以通过 3 个步骤完成:
- 使用 listObjectVersions 获取版本列表
- 从列表中获取想要的版本
- 获取具体对象,
在 getObject
中将 VersionId 作为参数传递
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;
}
}
我有一个启用了版本控制的 S3 存储桶,配置为向 Lambda 发送通知事件。当收到 s3:ObjectRemoved:* 事件时,我需要处理从那个桶中删除的对象。
该事件包含已删除对象的 versionId。
有没有办法发现已删除对象的前一个版本的 versionId 并使用 aws-sdk 获取该版本?
或者,有没有办法使用 aws-sdk 获取已删除的对象?
(我正在使用 JavaScript aws-sdk)
可以通过 3 个步骤完成:
- 使用 listObjectVersions 获取版本列表
- 从列表中获取想要的版本
- 获取具体对象, 在 getObject 中将 VersionId 作为参数传递
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;
}
}