2016-06-23 166 views
2

我正在將文件存儲在AWS S3存儲桶中,並且已經設置了在特定時間段(例如6個月)之後通過AWS控制檯將文件從S3存儲桶移到冰川的選項。如何從S3存儲桶中提取從S3存儲桶移動到Glacier的文件?

文件正在成功從S3移動到冰川。

現在,我想要檢索在Glacier上移動的文件。但是我找不到任何工作方法。

我已經嘗試過參考AWS Glacier的文檔,但沒有運氣。

注意:我們正在嘗試通過PHP SDK或使用PHP的任何其他方式來執行此操作。

回答

2

documentation說:在亞馬遜冰川存儲類

對象是不會立即發生:你必須首先將對象的臨時副本還原到其剷鬥可用之前它。

你需要啓動你的存檔(S3-冰川)對象的恢復操作,這可能需要幾個小時(通常3-5小時)要恢復作爲臨時對象。如果您希望它們在S3存儲桶中永久存在,則可以在恢復完成後在S3存儲桶中創建一個副本。

要啓動恢復作業,您可以使用:

  • S3管理控制檯,見here
  • AWS CLI,請參見here
  • 調用S3 REST API - POST Restore Object,請參閱here
  • 適用於PHP的AWS SDK可在here中查看。

要確定何時恢復作業完成編程,您可以:

  • 呼叫S3 REST API - HEAD Object,見here
  • 適用於PHP的AWS SDK可在here中查看。

恢復作業完成後,您可以在作業中設置的某個時間段內檢索S3存儲桶中的對象。

+1

我討厭downvote一個寫得很好的答案一般的模板,但有太多的不正確陳述在這裏。 Glacier API,cli,DescribeJob和SNS主題以及與Glacier服務的直接交互 - 在連接到S3管理控制檯之後,這些都不適用於Glacier存儲類中的S3對象。 S3不會將對象存儲在「您的」冰河帳戶中。它將它們存儲在它自己的一箇中,無法訪問您。 –

+0

嗨@邁克爾,感謝您注意到這個答案。我混合了S3冰川課和冰川本身。正確的答案應該在http://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html。很快就會解決答案。再次感謝。 –

+0

已更新。 –

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>', 
]);