从冰川恢复后的SNS通知

时间:2017-02-22 14:02:42

标签: amazon-s3 restore amazon-sns amazon-glacier

我有一个带有存储桶策略的s3存储桶,可在创建x天后将其对象发送到冰川。它通过将对象移动到冰川存储工作正常。当我以后使用aws php sdk 3.x api

去检索这些对象时
$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通知。由于我没有使用保险库,因此在恢复对象后我没有收到任何通知。恢复完成后如何获得sns通知。

1 个答案:

答案 0 :(得分:0)

我们不会因为需要使用head object api

进行轮询而获得恢复完成的sns
 $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);}

如果条件为真,我们可以提出行动