Amazon S3 からの HTTP 404 エラー「NoSuchKey」をトラブルシューティングする方法を教えてください。

最終更新日: 2021 年 1 月 5 日

ユーザーが Amazon Simple Storage Service (Amazon S3) バケットのオブジェクトにアクセスしようとしています。しかし、Amazon S3 が「HTTP 404 NoSuchKey」というエラーを返します。このエラーのトラブルシューティングを行う方法を教えてください。

解決方法

Amazon S3 は、リクエストされたオブジェクトがそのバケットにない場合、一般的に HTTP 404 エラーを返します。ユーザーがオブジェクトに対して GET または HEAD リクエストを行う前に、確実に S3 バケット内にオブジェクトが作成されて利用可能となるようにしてください。

オブジェクトがバケットで使用可能かどうかを確認するには、Amazon S3 コンソールからバケットの内容を確認します。あるいは、AWS コマンドラインインターフェイス (AWS CLI) を使用して、head-object コマンドを実行します。

aws s3api head-object --bucket awsexamplebucket --key object.jpg

重要: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

Amazon S3 は、書き込み後の読み取りで強力な整合性をすべてのアプリケーションに提供することにご注意ください。新しいオブジェクトの書き込みが成功した後、または既存のオブジェクトが上書きまたは削除された後、後続の読み取りリクエストはすぐにオブジェクトの最新バージョンを受け取ります。S3 はまた、非常に一貫したリスト操作が行えるようにしています。書き込み後、バケット内のオブジェクトをリストできます。S3 の整合性の詳細については、「整合性」を参照してください。

リクエストされたオブジェクトが S3 バケットでしばらく使用でき、404 NoSuchKey エラーが再度表示される場合は、以下を確認してください。

  • リクエストがオブジェクト名の大文字を含むオブジェクト名と正確に一致しているか確認します。S3 オブジェクトリクエストでは、大文字と小文字が区別されます。例えば、オブジェクト名が myimage.jpg で、Myimage.jpg をリクエストしている場合、リクエスターは 404 NoSuchKey エラーを受け取ります。
  • リクエストされたパスが、オブジェクトへのパスと一致することを確認します。それ以外の場合は、リクエスターは 404 NoSuchKey エラーを受け取ります。
  • オブジェクトへのパスに空白が含まれている場合は、リクエストがパスを認識するための正しい構文を使用していることを確認してください。例えば、AWS CLI を使用して Windows マシンにオブジェクトをダウンロードする場合は、オブジェクトパスの前後に引用符を使用する必要があります。オブジェクトのパスは次のようになります: aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3T000000.vbk"
  • オブジェクト名に、キャリッジリターン (\r) や改行 (\n) など、見づらい特殊文字または URL エンコード文字がないか確認してください。例えば、最後にキャリッジリターンがあるオブジェクト名のテストは、Amazon S3 コンソールで test%0A と表示されます。オブジェクト名に特殊文字がないか確認するには、list-objects-v2 コマンドを パラメーター --output json を指定して実行します。JSON 出力では、戻り値 (\r) のような文字が表示されます。オブジェクト名に常に表示されない特殊文字が含まれている場合は、オブジェクト名からその文字を削除してください。次に、もう一度オブジェクトにアクセスしてみてください。
  • あるいは、サーバーアクセスログを有効にし、404 NoSuchKey エラーの原因となっている可能性のある問題についてリクエストレコードをさらに詳しく確認します。

注: オブジェクトがバケットに存在せず、リクエスターに s3:ListBucket アクセス権がない場合、リクエスターは 403 Access Denied エラーを受け取ります。403 Access Denied が表示された場合は、見つからないオブジェクトに関連する問題を解決します。


この記事はお役に立ちましたか?


さらにサポートが必要な場合