2017-02-22 157 views
0

我有一個s3桶與桶策略,創建x天后將其對象發送到冰川。它致力於通過移動物體冰川storage.When罰款我去取回這些對象後使用AWS PHP SDK 3.x的API從冰川恢復後的SNS通知

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

通常情況下,可能需要3-5個小時,以恢復對象。所以我需要得到一個sns通知。因爲我沒有使用Vault,所以在恢復對象後我沒有收到任何通知。如何在恢復完成後獲得sns通知。

回答

0

針對該恢復完成,我們不會得到SNS,我們需要用頭對象API

$result = $s3Client->headObject(array(
     'Bucket' => $sourceBucket, 
     'Key' => "{$archiveKey}/{$sourceKeyname}", 
    )); 

輪詢和比較頭部對象的請求導致

if (isset($res['ongoing-request']) && (strcmp($res['ongoing-request'], '"false"') == 0) && ($result['StorageClass'] == 'GLACIER')) { 
     $this->log('Survey data id ' . $surveyData['survey_data_id'] . ' in restored state', LogLevel::INFO);} 

,如果條件爲真我們可以提高行動