Amazon S3 バケット間のオブジェクトレプリケーションが失敗したときに通知を受け取ることはできますか?
最終更新日: 2019 年 12 月 20 日
ある Amazon Simple Storage Service (Amazon S3) バケットから別のバケットにレプリケーションを設定しました。レプリケーションに失敗した場合、レプリケートに失敗したオブジェクトの一覧を取得するにはどうすればよいですか?
簡単な説明
S3 レプリケーション時間制御 (S3 RTC) を有効にして、レプリケーションに失敗した対象オブジェクトや、レプリケートに 15 分以上かかる対象オブジェクトの通知を設定できます。さらに、次のいずれかの方法でレプリケーションに失敗したオブジェクトの一覧を取得できます。
- Amazon S3 インベントリレポートを確認する
- HeadObject API 呼び出しを実行する
解決方法
Amazon S3 インベントリレポート
Amazon S3 インベントリレポートには、オブジェクトとそのメタデータが、毎日または毎週、一覧表示されます。オブジェクトのレプリケーションステータスは、PENDING、COMPLETED、FAILED、REPLICA のいずれかです。
レプリケーションに失敗したオブジェクトを検索するには、最近のレポートをレプリケーションステータスが FAILED のオブジェクトでフィルタリングします。その後、レプリケート先バケットへのオブジェクトの手動コピーを開始できます。または、ソースバケットにオブジェクトを再アップロードすると、レプリケーションがトリガーされます。
Amazon Athena を使用して、インベントリレポートにレプリケーションステータスのクエリを実行することもできます。
HeadObject API 呼び出し
レプリケーション用に設定されたレプリケート元バケットのオブジェクトの一覧がある場合は、それらのオブジェクトに対して HeadObject API 呼び出しを実行できます。HeadObject は、オブジェクトの PENDING、COMPLETED、または FAILED レプリケーションステータスを返します。HeadObject API 呼び出しへの応答では、レプリケーションステータスは x-amz-replication-status 要素にあります。
注意: HeadObject を実行するには、リクエストしているオブジェクトへの読み取りアクセス権が必要です。HEAD リクエストには GET リクエストと同じオプションがありますが、GET を実行しません。
レプリケーションステータスによる FAILED のオブジェクトをHeadObject が返したのち、レプリケート先バケットへのオブジェクトの手動コピーを開始できます。または、ソースバケットにオブジェクトを再アップロードすると、レプリケーションがトリガーされます。
重要: オブジェクトをレプリケート先バケットに手動でコピーした場合、Amazon S3 インベントリレポートと HeadObject API 呼び出しは、レプリケート元バケットのオブジェクトに対して FAILED レプリケーションステータスを引き続き返します。オブジェクトのレプリケーションステータスを変更するには、レプリケート元バケットにオブジェクトを再アップロードする必要があります。これにより、レプリケーションがトリガーされます。新しいレプリケーションが成功すると、オブジェクトのレプリケーションステータスが COMPLETED に変わります。オブジェクトをレプリケート先バケットに手動でコピーする必要がある場合は、手動コピーの日付をメモしておきます。次に、レプリケーションステータスが FAILED であるオブジェクトを最終更新日までにフィルタリングして、レプリケート先バケットにコピーされているオブジェクトまたはコピーされていないオブジェクトを特定できるようにします。