1

新しい AWS の質問: 現在、Rails アプリでは、Carrierwaveを介してS3バケットに画像をアップロードできます。物事はうまく機能します...しかし、一部の元のファイルが1つのバケット(アップロードされた写真)にあり、他のファイル(サイトのロゴなど)が別のバケットにあり、他のファイル(javascriptとcss)があるため、少し混乱し始めています(そして面倒です)。 Rails ホストから直接提供されます。

デリバリーの統合と簡素化に役立つ可能性があるCloud Frontを検討していますが、これまでの経験はありません。(カスタム オリジンを使用して) 適切に構成されたら、すべてのアセットをローカル サーバーに戻してから、"単純に" Cloud Front に配信を頼ることができますか? これは、アップロードされたすべての画像 (現在 S3 上) をローカル Rails サーバーに戻すことを意味し、Carrierwave と Fog gem を使用してそれらをアップロードする代わりに、ファイルを処理してローカル ファイルシステムに保存するだけです。これには多くの利点があります。主な利点は、すべてのアセットを含むアプリケーション全体の完全なコピーをホスト上でローカルに保持できることです。

また、アップロードされた後に提供される新しい画像に遅延が予想されることはありますか? アップロードされた画像が Fog 経由で S3 にアップロードされるときに、アップロードされた画像を処理した後にわずかな遅延がある現在何が起こっているかを超えて?

最後に、S3 バケットを有効にしておく理由はありますか? 「未使用」のアセットが CloudFront からパージされることは理解していますが、「未使用」を定義するメトリックが明確ではありません。

これは一般的なユースケースですか?ほとんどの場合、検証または言われたことを探しているだけです。

ありがとう!

4

3 に答える 3

1

クラウドフロントを使用するcarrierwave s3に関しては、正確にこれを行う方法についてブログ記事を書きました. (すでに s3 が動作している場合、クラウドフロント部分を動作させるのは非常に簡単です) http://jeffdickey.info/using-carrierwave-on-heroku-for-image-uploading-w-cloudfront

また、js/css アセット ノートでは、Rails 3.1 アセット パイプラインを使用している場合は、production.rb ファイルに移動し、Rails サーバーを指す CloudFront cdn にアセット ホストを設定するだけです。

これら 2 つの cdn には、content.domain.com と assets.domain.com を使用するのが好きです。

js/css アセットを S3 にアップロードして CloudFront から提供する必要はなく、直接提供するだけです。CloudFront がキャッシュを処理します。

于 2011-11-26T06:03:47.407 に答える
0

2 つの提案:

1) jammitjammit-s3を使用してアセットを管理し、クラウドフロントに配信します。開発中は、アセットはローカル ファイル システムにありますが、デプロイ時にはクラウドフロントにプッシュします。s3 gem は、変更されたファイルなどを確認するのに十分スマートです。これが Rails 3.1 によってどのように影響を受けるかはわかりませんが、3.0 ではうまく機能しています。

2)クラウドフレアを使用します。このサービスは信じられないほどエキサイティングで、セキュリティ上の利点とは別に、静的アセットをキャッシュし、独自の cdn を使用して配信します。驚いたことに、アプリの要件についてはわかりませんが、私たちのほとんどが必要とするほとんどすべてを行う無料のサービスがあります。ぜひチェックしてみてください。

于 2011-09-13T19:25:04.360 に答える
0

アップロードした画像をサーバーに戻す際には、いくつかの注意事項があります。

  • 1 つのバケットのストレージに料金を支払う代わりに、複数のクラウドフロント エッジ ロケーション (現時点で約 20 か所) に対して料金を支払う可能性があります。一方、実際に使用されるファイルとユーザーがいる場所に対してのみ料金が発生するため、違いはファイルの使用方法によって異なります。
  • ファイルが変更された場合、その名前を変更する必要があります。そうしないと、ユーザーに変更が表示されない可能性があります。おそらく、アップロードに一意の名前を付けることで、これを解決している可能性があります。

ファイルがエッジの場所にない場合、Cloudfront は単にサーバーからファイルを取得し、転送して、次にアクセスしたときに備えて保存します。そのため、ファイルがパージされても、Cloudfront は必要に応じてファイルを再度フェッチするだけなので、実際には問題になりません。

他のファイルについては、アセット パイプラインで Rails 3.1 を使用しているため、非常に簡単です。ここにセットアップを文書化しました:

http://blog.ertesvag.no/post/10720082458

于 2011-10-05T06:52:57.093 に答える