Amazon S3バケットから画像をダウンロードするためにgetObjectリクエストを使用するAndroidアプリでAmazonS3Clientを使用しています。
現在、私はこの例外を受け取っています:
com.amazonaws.services.s3.model.AmazonS3Exception:
The specified key does not exist.
(Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey;
S3バケット内の指定されたキーを持つオブジェクトを見ることができますが。
まあ、このエラーは実際にはかなり簡単です。ファイルがS3バケット内に存在しないことを意味します。いくつかのことが間違っている可能性があります。
間違ったファイルを参照しようとしている可能性があります。取得しようとしたパスを再確認してください。
ファイルがアップロードされたときはいつでも、失敗したに違いありません。 S3Syncプロセスのログをチェックして、関連する出力を見つけることができるかどうかを確認します
私にとって、オブジェクトは間違いなく存在し、正しくアップロードされましたが、そのs3 urlはまだ同じエラーを投げました:
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
その理由は、ファイル名に#
記号が含まれていたためであり、特定の文字または記号もこのエラーの原因であると思います。
この文字を削除して新しいs3 URLを生成すると、問題が解決しました。
これは、s3のeventual整合性モデルが原因でファイルパスが正しい場合でも発生する可能性があることに注意してください。基本的に、オブジェクトが書き込まれた後に読み取ることができるようになるには、ある程度の遅延が発生する可能性があります。詳細については このドキュメント をご覧ください。
私の場合、Webサイトのファイルを含むフォルダー全体をコンテナーにアップロードしたため、エラーが表示されていました。
フォルダーの外にあるすべてのファイルをコンテナーに移動することで解決しました。
問題の理由は間違っているか、バケット/キー名のタイプミスです。指定するバケットまたはキー名が存在するかどうかを確認してください。