从 S3 存储桶中获取特定版本的文件
Getting specific version of file from S3 bucket
我在启用了版本控制的 S3 存储桶中有一个文件。使用 aws-cli 是否可以复制此文件的特定版本,而不是最新版本?
是,使用aws s3api get-object
并指定--version-id
这里有更多信息http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html
是的,您可以看到这个例子,您将需要对象的版本 ID。
aws s3api get-object --bucket mybucket --key file1.txt --version-id Mj1.PcWG8e.C._7LhvFU131pXJ98abIl foo.txt
您还可以使用此命令列出版本以获取版本 ID。
aws s3api list-object-versions --bucket mybucket
有一个非常方便的工具 s3-pit-restore,它允许从版本化存储桶中恢复文件或前缀(目录)的时间点版本。参见Angelo对这个问题的回复:
https://serverfault.com/questions/589713/restore-a-versioned-s3-bucket-to-a-particular-point-in-time
这就是我在 s3 中为特定 versionId 获取对象的方式:
async function getObject() {
try {
const params = {
Bucket: this.imageBucket,
Key: `YOUR_PATH_TO_OBJECT?versionId=u_HtqVAVylAG2fk0tXOGoC6CdT4EtOV2`,
};
const data = await s3.getObject(params).promise();
return data.Body.toString('utf-8');
} catch (e) {
throw new Error(`Could not retrieve file from S3: ${e.message}`);
}
}
我在启用了版本控制的 S3 存储桶中有一个文件。使用 aws-cli 是否可以复制此文件的特定版本,而不是最新版本?
是,使用aws s3api get-object
并指定--version-id
这里有更多信息http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html
是的,您可以看到这个例子,您将需要对象的版本 ID。
aws s3api get-object --bucket mybucket --key file1.txt --version-id Mj1.PcWG8e.C._7LhvFU131pXJ98abIl foo.txt
您还可以使用此命令列出版本以获取版本 ID。
aws s3api list-object-versions --bucket mybucket
有一个非常方便的工具 s3-pit-restore,它允许从版本化存储桶中恢复文件或前缀(目录)的时间点版本。参见Angelo对这个问题的回复:
https://serverfault.com/questions/589713/restore-a-versioned-s3-bucket-to-a-particular-point-in-time
这就是我在 s3 中为特定 versionId 获取对象的方式:
async function getObject() {
try {
const params = {
Bucket: this.imageBucket,
Key: `YOUR_PATH_TO_OBJECT?versionId=u_HtqVAVylAG2fk0tXOGoC6CdT4EtOV2`,
};
const data = await s3.getObject(params).promise();
return data.Body.toString('utf-8');
} catch (e) {
throw new Error(`Could not retrieve file from S3: ${e.message}`);
}
}