2016-11-17 10 views
0

私のウェブアプリケーションでは、CPU集約的なものを処理するためにEC2の別のインスタンスが必要です。イメージのサイズ変更、メール送信....Amazon SQSについて説明してください(一般的に待ち行列に入れてください)

AWS Elastic Beanstalkインスタンスを作成すると、「Web」環境か「ワーカー」環境かを選択するように求められます。私が理解しているように、私はそのような仕事を処理するのは労働者の環境です。

ここではSQSの役割は何ですか?私はそれが "メッセージ"とこの種のものを送ることについてしか読んでいないが、私のイメージはどのように "メッセージ"でリサイズされるのだろうか?

ワーカーインスタンスに固有のコードを作成し、イメージのサイズ変更を処理し、SQSを使用してイメージを処理する必要がありますか?次に、SQSはWebインスタンスからワーカーインスタンスにイメージを渡すことができますか?私は完全にメインコンセプトを逃している。

答えて

0

キューイングサービス(Amazon SQSなど)を使用して、後で取得するためのメッセージを格納します。 TODOリストのように考えると、アイテムをキューに追加した後、キューからアイテムを取得してそのアイテムに対してアクションを実行します。

たとえば、ユーザーが画像をウェブサイトにアップロードし、その画像からサムネイルを生成するとします。あなたのウェブサイトはイメージをAmazon S3に保存し、メッセージをSQSキューにプッシュします。このメッセージには、S3のイメージへの参照とユーザーの詳細が含まれます。

次に、エラスティックBeanstalkワーカーは、キューからメッセージを要求してイメージを処理します。それは、S3からイメージを取得し、サイズを変更し、S3のバケットに格納し、そしておそらくジョブが終了したと電子メールで通知します。その後、作業者が終了し、Elastic Beanstalkが新しい作業者をトリガーしてキューから次のメッセージを読み込み、再度実行します。

Elastic Beanstalk worker

だから、はい - あなたはワーカーコードを作成します。 Elastic Beanstalkは、SQSメッセージで作業者をトリガします。 SQS自体は何も起動しません。メッセージを取得してワーカーを実行するのは実際はElastic Beanstalkです。

参照:Elastic Beanstalk worker environments

+0

ありがとう、これはすべてを明確にします。したがって、実際には、作業者は、キューに入れられた作業を実行するために、アプリケーションの新しい別のインスタンスを起動します。それは、URLのヒットによってトリガーされます。したがって、コード側で行うことはすべて、キューを処理するルートとコードを定義することです。それですか? –

関連する問題