2017-06-05 18 views
0

ユーザーIDに応じて、サブディレクトリのS3に画像が保存されているアバターをユーザーが更新して変更できるようにするiOSアプリを開発しています。例: "/1005/avatar_3dseuori.jpg"s3に画像をアップロードするときのクラウドフロントエラー

は、私は、しかし、私は次のような応答を取得しています、私のS3バケットに保存されているこれらのイメージを配布するためのセットアップCloudFrontのを持っている:画像は私のバケットに存在する

<Code>NoSuchKey</Code> 
<Message>The specified key does not exist.</Message> 

にもかかわらず。 5分くらい待っていたら、私はクラウドフロントの起源を使ってイメージを見ることができます。これは通常の待ち時間ですか?

答えて

2

CloudFrontはS3起点のフロントエンドキャッシュとして機能しています。

CloudFrontから画像を要求すると、キャッシュがチェックされ、キャッシュに存在しない場合(設定されたTTLに基づいて期限切れになっていない場合)、S3原点から画像が要求されますバケツ。

S3にイメージが存在する前にCloudFrontからイメージを要求すると、CloudFrontはNoSuchKey結果をキャッシュします。これは、オブジェクトがまだS3にまだ存在しないためです。

ファイルをS3にアップロードした後、CloudFrontはキャッシュされたNoSuchKey値で応答し続け、設定された有効期間が切れるまで続けます。あなたの場合、それは "5分"かもしれません。その期間の後、S3から画像を再要求しますが、今回は肯定的な結果が得られます。

この問題を回避するには、存在しない画像のCloudFrontへのリクエストを禁止してください。

+0

大きな説明。どうもありがとうございました。 – Dayna

+0

Mattが指摘しているように、CloudFrontがエラーをキャッシュする期間(「エラーキャッシュ最小TTL」を検索)を再設定できますが、TTLを減らすことは、より誤った要求が潜在的に原点に当たる可能性があります。 – jarmod

+0

私はこれが[Amazon CloudFront Latency](https://stackoverflow.com/a/35541525/1695906)の複製であると言います(5分のウィンドウの原因と解決方法を説明します)。しかし、私の[S3 golden dupe hammer ](https://stackoverflow.com/help/badges/6680/amazon-s3)は、私がそれを一方的に行うことを可能にしているだけで、私はちょっとしたことではないという印象を与えたいとは思っていません。私自身の答え。 @MattHouserはあなたに反対しますか? –

関連する問題