【问题标题】:SNS notification after restore from glacier从冰川恢复后的 SNS 通知
【发布时间】:2017-02-22 14:02:42
【问题描述】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我们不会为恢复完成获取 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);}
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多