从冰川恢复后的SNS通知

问题描述 投票:1回答:2

我有一个带有存储桶策略的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通知。

amazon-s3 restore amazon-sns amazon-glacier
2个回答
0
投票

我们不会因为需要使用头对象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);}

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


0
投票

S3事件通知现在支持s3:ObjectRestore:已完成。请参阅AWS documentation中的详细信息。您可以将SNS配置为在完成冰川恢复时向您发送通知。

© www.soinside.com 2019 - 2024. All rights reserved.