2017-12-03 7 views
0

は私が読んでAWSラムダ、S3CloudFrontを(CF)についてのビデオを見ていました。ここでは、雲の雲とより一般的なCDNの概念を理解しているかどうかを確認したいと思います。私はCloudFrontがうまくいったのですか? labmdaは、S3、CloudFrontを

目的:私は、CFを介して自分のアプリから画像を提供したいと思います。私はawsラムダ関数を展開するつもりです。私が描いているシナリオでは、私のラムダ関数は単なる端点を持つ単純なフラスコアプリです。画像アップロードを実装するPOSTエンドポイント(ファイルからchecsumを作成し、ファイルチェックサムがすでにs3にあるかどうかを確認する - 保存するかしないかを指定)イメージのサイズ変更は、引数がクエリ文字列で指定されている場合にのみ実行されます。すべての画像が保存されます(オリジナル、サイズ変更、回転など)。 S3はCFの起源です。

デプロイメント:私はPythonを使用しています - zappaをデプロイメントツールとして使用したいと思います。

例題

午前8時: ユーザーオーストラリアから画像をアップロードしています。以前に画像がありませんでしたので、S3に保存されて返されます。

9:00同じユーザーが画像のサムネイルを要求しています。イメージのサイズが変更され、返されます。ここでは、イメージのサイズ変更要求(たとえばhttps://app.org/resize/image1.jpeg?width=80&height=80)がクラウドフロントのオーストラリアのエッジノードにレスポンス(image.jpg 80x80)と共に保存されていると仮定します。

10:00ユーザーは同じクエリ文字列で同じサムネイルを要求しています。ユーザーはオーストラリアのクラウドフロントエッジキャッシュからimage.jpg 80x80を取得します。

私はそれを正しくしましたか?

答えて

2

正確ではありません。最初の文と最後の文の間の目的の段落に記述する内容は、CDNとはまったく関係がないものであり、アプリケーションによって処理される必要があります。 (つまり、既にアップロードされたものを追跡し、同じファイルの後続のアップロードを別々に処理し、最初の要求時にサムネイルサイズのみを生成するなど)

CloudFrontの唯一の責任は、要求されたリソースが最適なエッジ位置、そうでなければそれを提供し、そうでなければ、それが原産地に存在するかどうかをチェックし、もしあればダウンロードしてエッジにコピーして提供し、そうでなければエラーで応答する。

9:00同じユーザーが画像のサムネイルを要求しています。イメージは のサイズ変更され、返されます。

今ここに(私が正しく理解している場合、画像がCFから要求され、その起源は、S3のような静的なストレージです)あなたは問題が要求されたサムネイルが存在しないため、S3は明らかにすることはできません生成する。それが機能するには、起源はあなたのCFからの要求を処理できるアプリケーションサーバでなければなりません。それらを提供するだけでなく、いくつかのロジックを実行し、おそらくCFに奉仕する前に紛失したサムネイルを生成します。

または、アップロードした画像に必要なすべてのバージョンを生成し、すべてS3に保存する必要があります。

+0

OK。私は部分的にあなたの要点を得ましたが、まだいくつかのことは日陰です。 – scagbackbone

+0

aws lambda(aws api gateway経由の私のフラスコアプリ)は次のようにカウントされます: ''オリジナルはあなたのCFからリクエストを処理できるアプリケーションサーバーでなければなりませんか? ' 私はおそらく2つのエンドポイントを持っています。アップロード用と2番目のエンドポイントは、画像がある場合は画像を返す「日陰の」GET、サムネイルが要求された場合はサイズを変更して返します。 – scagbackbone

関連する問題