Amazon s3 从冰川恢复后的SNS通知

Amazon s3 从冰川恢复后的SNS通知,amazon-s3,restore,amazon-sns,amazon-glacier,Amazon S3,Restore,Amazon Sns,Amazon Glacier,我有一个s3 bucket,它有一个bucket策略,可以在创建x天后将它们的对象发送到glacier。通过将对象移动到glacier存储,它工作得很好 $result = $client->restoreObject([ 'Bucket' => '<string>', // REQUIRED 'Key' => '<string>', // REQUIRED 'RequestPayer' => 'requester', 'RestoreReques

我有一个s3 bucket,它有一个bucket策略,可以在创建x天后将它们的对象发送到glacier。通过将对象移动到glacier存储,它工作得很好

$result = $client->restoreObject([
'Bucket' => '<string>', // REQUIRED
'Key' => '<string>', // REQUIRED
'RequestPayer' => 'requester',
'RestoreRequest' => [
    'Days' => <integer>, // REQUIRED
    'GlacierJobParameters' => [
        'Tier' => 'Standard|Bulk|Expedited', // REQUIRED
    ],
],
'VersionId' => '<string>', ])
$result=$client->restoreObject([
'Bucket'=>'',//必需
'键'=>'',//必需
“请求付款人”=>“请求者”,
“恢复请求”=>[
“天”=>,//必需
“GlacierJobParameters”=>[
'Tier'=>'标准|批量|加急',//必需
],
],
'VersionId'=>'',])

通常,恢复对象可能需要3-5个小时。所以我需要得到一个sns的通知。由于我不使用vault,因此在还原对象后,我不会收到任何通知。如何在恢复完成后获取sns通知。

对于需要使用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);}

如果条件为true,我们可以引发操作

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