繁体   English   中英

如何从S3存储桶中获取文件,这些文件已从S3存储桶移至Glacier?

[英]How to fetch files from S3 bucket, which are moved from S3 bucket to Glacier?

我将文件存储在AWS S3存储桶中,并且我们设置了选项,可以在特定时间段(例如6个月)之后通过AWS控制台将文件从S3存储桶移动到Glacier。

文件已成功从S3移至Glacier。

现在,我想检索在Glacier上移动的文件。 但是我找不到任何可行的方法来做到这一点。

我已经尝试过参考AWS Glacier的文档,但是没有运气。

注意:我们正在尝试通过PHP SDK或任何其他使用PHP的方法来执行此操作。

根据文档所述:

无法立即访问Amazon Glacier存储类中的对象:您必须先将对象的临时副本还原到其存储桶中,然后才可用。

您需要对已归档的(S3-Glacier)对象启动还原操作,这可能需要几个小时 (通常是三到五个小时)才能还原为临时对象。 如果您希望它们永久存在于S3存储桶中,则可以在还原完成后在S3存储桶中创建一个副本。

要启动还原作业,可以使用:

  • S3管理控制台,请参见此处
  • AWS CLI,请参阅此处
  • 调用S3 REST API- POST Restore Object ,请参见此处
  • 适用于PHP的AWS开发工具包可在此处查看

要确定以编程方式完成还原作业的时间,您可以:

  • 调用S3 REST API- HEAD Object ,请参见此处
  • 适用于PHP的AWS开发工具包可在此处查看

还原作业完成后,您可以在作业中设置的特定期间内在S3存储桶中检索对象。

如果您使用的是PHP SDK,则可以使用

$objects = $s3Client->restoreObject(array(
                'Bucket' => 'Bucket name'
                ,"Key"   => 'File Key which is file bath in S3 bucket'
                //,'RequestPayer' => 'requester',
                ,'RestoreRequest' => [
                    'Days' => 10,
                    'GlacierJobParameters' => [
                        //'Tier' => 'Standard|Bulk|Expedited', // REQUIRED
                        'Tier' => Expedited, // REQUIRED
                    ]
                ],
            ));

这是此的通用模板

$result = $client->restoreObject([
    'Bucket' => '<string>', // REQUIRED
    'Key' => '<string>', // REQUIRED
    'RequestPayer' => 'requester',
    'RestoreRequest' => [
        'Days' => <integer>, // REQUIRED
        'GlacierJobParameters' => [
            'Tier' => 'Standard|Bulk|Expedited', // REQUIRED
        ],
    ],
    'VersionId' => '<string>',
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM