こんにちは。katoです。
今回はALBに新たに追加されたfixed-response機能をご紹介します。
概要
先日、ALBに「redirect」と「fixed-response」という2つの新しい機能が追加されました。
これらの機能は、リダイレクトと固定レスポンスを行うことができるものとなっております。 どちらもALBのリスナールールにて設定可能な機能となっております。
今回はfixed-responseの機能を利用して、ALBから動的コンテンツ(javascript)を配信してみたいと思います。
手順
それではさっそく設定を行っていきましょう。
今回は既存のALBに対して固定レスポンスの設定を追加していきます。
ALBのリスナータブを開き、「ルールの表示/編集」をクリックします。
ルールの追加タブを選択し、「ルールの挿入」をクリックします。
今回は、ルーティングの条件としてホスト名を利用します。 パスルーティングでの動的エラーページの配信なども可能なので利用用途に合わせて適宜変更してください。
なお、今回設定したホスト名は名前解決が可能な様、Route53にて設定しております。
条件の設定が完了したら、アクションの追加から「固定レスポンスを返す」を選択します。
今回はレスポンスコードを「200」、Content-Typeを「text/html」として設定します。
最後にレスポンス本文の欄に配信用コンテンツのコードを入力すれば完了となります。
今回は下記リンクのcanvasJSのDynamic Chartsサンプルコードをそのまま利用してみます。
JavaScript Live / Dynamic Charts & Graphs
設定を保存し、動作を確認してみましょう。
動作確認
リスナールールの条件の箇所で設定したホスト名にアクセスしてみます。
実際にアクセスしてみると。。。
無事コンテンツが表示されました!
まとめ
ALBを利用して動的コンテンツの配信が可能になりました。
AWS上でのWEBサイトのサーバレス化の際には、S3の静的ウェブサイトホスティングが使われることが多く、動的ページを含む場合にはサーバレス化を断念するケースが多々存在しました。ですが、ALBでの動的コンテンツの配信が可能になり、AWS上でのWEBサイトのサーバレス化における選択の幅が大きく広がりました。
便利な機能となっていますが、ALB自体にコストが掛かる点、また、1024文字の文字長制限ということを考えると、全てのコンテンツをELBから配信するといった利用方法は少し難しそうです。
それでも、動的エラーページの作成や、サーバ外部への一部処理の切り出しといった利用方法には向いているのではと感じました。
また、ALBからコンテンツを配信しているので、冗長化やScalingといったことを意識しなくても実現できる点も魅力です。
さまざまな用途に利用できる便利な機能となっておりますので、ご興味のある方は一度お使いになってみては如何でしょうか。