【问题标题】:Getting specific version of file from S3 bucket从 S3 存储桶获取特定版本的文件
【发布时间】:2021-12-07 18:18:45
【问题描述】:

我在 S3 存储桶中有一个文件,并且版本控制已打开。使用 aws-cli 是否可以复制此文件的特定版本,而不是最新版本?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-cli


    【解决方案1】:

    是的,您可以这样做,请参阅此示例,您将需要对象的版本 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
    

    【讨论】:

      【解决方案2】:

      是的,使用aws s3api get-object 并指定--version-id

      更多信息在这里http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html

      【讨论】:

        【解决方案3】:

        有一个非常方便的工具,s3-pit-restore,它允许从版本化存储桶中恢复文件的时间点版本或前缀(目录)。查看 Angelo 对这个问题的回答:

        https://serverfault.com/questions/589713/restore-a-versioned-s3-bucket-to-a-particular-point-in-time

        【讨论】:

          【解决方案4】:

          这就是我在 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}`);
              }
            }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多