« 【AWS発表】AWS Management Console が Auto Scaling をサポート | メイン | 【AWS発表】 Amazon DynamoDBでグローバルセカンダリーインデックスを利用可能に »

【AWS発表】 AWS Elastic Beanstalkでバックグラウンドタスクの処理が可能に

私の同僚、Abhishek SinghがAWS Elastic Beanstalkの非常に重要な新機能を紹介するゲストポストを送ってくれました。

-- Jeff;


Elastic BeanstalkでWorker Tier Environmentを起動できるようになりました。

これらのEnvironmentは、任意のスケールのアプリケーションのバックグラウンドタスクを処理するために最適化されています。Worker tierは既存のweb tierを補完するもので、レポート生成、データベースのクリーンアップ、Eメール通知といった時間のかかる作業に最適です。

例えば、アプリケーションから確認メールを送信するために、単にタスクをキューに入れ、メールを後で送るようにし、その間に、アプリケーションコードがすぐに残りのウェブページをレンダリングする処理を行えます。

workerは単なるもう一つのHTTPリクエストハンドラーで、BeanstalkはAmazon Simple Queue Service (SQS)を使ってバッファリングされたメッセージを呼び出します。Elastic Beanstalkはそれが提供されていない場合、キューの作成および管理の面倒を見ます。キューに入れたメッセージは、ローカルホスト上で設定されたURLにHTTP POSTを介して転送されます。workerのコードはPHP、Python、Ruby、Java、Node.jsといったLinux環境でElastic Beanstalkによりサポートされる言語を使って開発することができます。

worker tierはシングルインスタンスまたは、負荷分散され、負荷に応じてオートスケールするものを作成することができます。worker tierを使うことで、作業を行う実際のコードを書くことだけに集中できます。新しいAPIを学ぶ必要もありませんし、何かサービスを管理する必要もありません。さらに詳しい情報については、Environment Tiersの新しいドキュメントをご覧ください。

ユースケース - 確認メールの送信
想像してみてください。あなたはスタートアップで、世の中を変えるようなアイデアもしくは製品を持っており、顧客の興味を調査したいとします。

あなたは潜在顧客がメールアドレスを登録でき、アップデートを受け取れるような、シンプルなウェブアプリケーションを作成します。 ほとんどのビジネスと同様に、顧客がメールアドレスを提供した後、登録が成功したことを知らせるために顧客に対して確認メールを送信することにしました。メールアドレスを検証し、確認メールを生成および送信するために、Elastic Beanstalkのworker tierを使うことによって、フロントエンドのアプリケーションをノンブロッキングにすることができますので、顧客により応答性の高いユーザーエクスペリエンスを提供することができます。

ポストの残りの部分では、非同期にメールを送信するために、worker tierを作成し、サンプルPython workerアプリケーションをデプロイします。 フロントエンドアプリケーションを持っていない場合、PythonベースのフロントエンドアプリケーションをAWS Application Management Blogからダウンロードすることができます。

Amazon Simple Email Service (SES)を使います。次のように検証された送信者のメールアドレスを追加することから始めます。:

  1. SES Management Consoleにログインし、左のナビゲーションバーからEmail Addressesを選択します。
  2. Verify a New Email Addressをクリックします。
  3. メールを送信するために使いたいメールアドレスを入力し、Verify This Email Addressをクリックします。そうすると、提供されたメールアドレス宛に、メールアドレスを検証するためのリンクが含まれたメールが送信されます。メールアドレスの検証が終わると、そのアドレスを“SOURCE_EMAIL_ADDRESS”として使用することができるようになります。

次に、サンプル worker tier アプリケーションをダウンロードし、カスタマイズします。:

  1. worker tier のサンプルアプリケーションのソースバンドルをダウンロードし、デスクトップ上のフォルダにファイルを展開します。
  2. フォルダを参照し、default_config.pyファイル内の“SOURCE_EMAIL_ADDRESS = 'nobody@amazon.com’”の行を検証されたメールアドレスに編集し、ファイルを保存します。
  3. フォルダ内の全てのファイルを選択し、zipアーカイブに追加します。Elastic Beanstalkにアップロードするためのソースバンドルの作成についてのさらに詳しい情報については、Creating an Application Source Bundleをご覧ください。

次に、worker role用の IAM Roleを作成する必要があります。手順は以下のとおりです。:

  1. IAM Management Consoleにログインし、左のナビゲーションバーからRolesを選択します。
  2. 新しいroleを作成するために、Create New Roleボタンをクリックします。
  3. “Role Name”にWorkerTierRoleと入力します。
  4. AWS Service Rolesを選択し、Amazon EC2を選択します。
  5. Custom Policyを選択し、Selectをクリックします。
  6. Policy NameにWorkerTierRoleと入力し、Policy Documentとして、次のスニペットを貼り付け、Continueをクリックします。
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action":   [ "ses:SendEmail" ],
          "Resource": [ "*" ]
        },
        {
          "Effect": "Allow",
          "Action":   [ "sqs:*" ],
          "Resource": [ "*" ]
        },
        {
          "Effect": "Allow",
          "Action":   [ "cloudwatch:PutMetricData" ],
          "Resource": [ "*" ]
        }
      ]
    }
    
  7. Create Roleをクリックし、roleを作成します。

これでworker tierをホストするElastic Beanstalk アプリケーションを作成する準備が整いました。次の手順を実行します。:

  1. AWS Elastic Beanstalk Web Consoleにログインし、Create New Applicationをクリックします。
  2. アプリケーション名と説明を入力し、Createをクリックします。
  3. “Environment tier”のドロップダウンリストからはWorkerを、“Predefined configuration”はPythonを、“Environment type”はSingle instanceを選択し、Continueをクリックします。
  4. Upload your ownを選択し、先ほど作成したソースバンドルを参照します。
  5. Enviromentの名前と説明を入力し、Continueをクリックします。
  6. “Additional Resources”ページでは、全てのオプションは選択せずそのままにしておき、Continueをクリックします。
  7. “Configuration Details”ページでは、“Instance profile”のドロップダウンリストから先ほど作成したWorkerTierRoleを選択し、Continueをクリックします。
  8. “Worker Details”ページでは、“HTTP path”を“/customer-registered”に修正し、Continueをクリックします。
  9. 今までの設定を確認したら、Createをクリックします。

environmentが作成され、ステータスが“Green”になったら、View Queueをクリックし、SQS Management Consoleを起動します。:

それから、Queue Actionsをクリックし、Send a Messageを選択します。

次のフォーマットでメッセージを入力し、Send Messageをクリックして確認メールを送信します。:

{
  "name" : "John Smith",
  "email" : "john@example.com"
}

この新機能は本日より利用可能で、今すぐお試しいただけます。

-- Abhishek Singh、シニアプロダクトマネージャー

 


この記事はAWSシニアエバンジェリスト Jeff BarrのAmazon Web Services Blogの記事、 Background Task Handling for AWS Elastic Beanstalkを 堀内康弘 (Facebook, Twitter)が翻訳したものです。

コメント

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c534853ef019b03016a18970c

【AWS発表】 AWS Elastic Beanstalkでバックグラウンドタスクの処理が可能にを参照しているブログ:

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31