スキップしてコンテンツを表示

Amazon S3 で発生する 404 NoSuchKey エラーのトラブルシューティング方法を教えてください。

所要時間1分
0

ユーザーが Amazon Simple Storage Service (Amazon S3) バケットにアクセスすると、404 NoSuchKey エラーが発生します。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

リクエストされたオブジェクトがバケットにない場合、Amazon S3 から 404 エラーが返される場合があります。ユーザーがオブジェクトに対して GET または HEAD リクエストを行う前に、そのオブジェクトが S3 ディレクトリまたは汎用バケットで使用可能であることを確認してください。

注: この記事で説明するソリューションは、Amazon S3 ディレクトリバケットと汎用バケットにのみ適用されます。

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

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

注: awsexamplebucket を自分のバケットの名前に置き換え、object.jpg をオブジェクトの名前に置き換えてください。

Amazon S3 では、すべてのアプリケーションで強力な書き込み後読み取りの一貫性を実現しています。オブジェクトの書き込み、上書き、削除の後、読み取り要求はすぐにオブジェクトの最新バージョンを受け取ります。Amazon S3 では、強力なリスト操作の一貫性も実現しています。書き込み後、バケット内のオブジェクトを一覧表示できます。Amazon S3 における一貫性の詳細については、「Amazon 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 エンコード文字がないかどうかを確認します。たとえば、末尾にキャリッジリターンが付いたオブジェクト名 test は、Amazon S3 コンソールでは test%0A と表示されます。オブジェクト名に特殊文字が含まれているかどうかを確認するには、パラメータ --output json を指定して list-objects-v2 コマンドを実行します。JSON 出力では、戻り値 (\r) などの文字が可視化されます。オブジェクト名に可視化されない特殊文字が含まれている場合は、その文字をオブジェクト名から削除します。オブジェクトに再度アクセスしてみてください。

  • (オプション) サーバーアクセスログを有効にすることで、"404 NoSuchKey" エラーの原因となる場合がある問題の有無について、リクエストレコードをさらに詳細に確認できます。

注: 汎用バケットにオブジェクトがなく、リクエスト元に s3:ListBucket アクセス許可がない場合、リクエスト元には "403 Access Denied" エラーが返されます。"403 Access Denied" エラーが表示された場合は、見つからないオブジェクトに関連する問題を解決してください。

関連情報

Amazon S3 でのアクセス拒否 (403 Forbidden) エラーのトラブルシューティング

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ