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

时间:2016-06-23 11:35:28

标签: php amazon-web-services amazon-s3

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

文件已成功从S3移至Glacier。

现在,我想要检索在Glacier上移动的文件。但我找不到任何可行的方法。

我已经尝试过引用AWS Glacier的文档,但没有运气。

注意:我们正尝试通过PHP SDK或任何其他方式使用PHP来实现此目的。

2 个答案:

答案 0 :(得分:2)

根据documentation说:

  

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

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

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

  • S3管理控制台,请参阅here
  • AWS CLI,请参阅here
  • 致电S3 REST API - POST Restore Object,请参阅here
  • 适用于PHP的AWS开发工具包可以在here
  • 中看到

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

  • 致电S3 REST API - HEAD Object,请参阅here
  • 适用于PHP的AWS开发工具包可以在here
  • 中看到

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

答案 1 :(得分:0)

如果您使用的是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>',
]);