ALB+Lambda構成手順概要

LambdaはALBにhttpヘッダーを返すだけなので、用途としては、一時的に503メンテナンス画面を出したい場合、30xリダイレクトをしたい場合(httpリダイレクト)など、ALBを既に使っていれば簡単に設定出来る方なので知っておくと良いかもしれません。

スポンサーリンク

VPC関係構築

通常のVPC構築手順ですが、ALBは複数のAvailability Zoneを指定してデプロイする必要がある為、サブネットも複数準備しておきます。

VPC関係として羅列しておくと以下の設定になります。

  • VPC
  • サブネット
  • セキュリティグループ
  • ルートテーブル

ALB構築手順

マルチAZで作成したサブネット2つを指定してALBを構築します。ターゲットにはLambdaを選択しますが、まだ出来ていないのでターゲットはLambda作成後になります。

Lambda構築手順

Lambdaを構築します。

注意点として、Lambdaはhttpヘッダーを返す処理として記載します。

例えば、httpステータスが503のメンテナンス画面や、何か簡単な処理をして200でhtmlを返すなどです。

30xリダイレクトも可能ですが、httpヘッダーを返すだけなので、httpリダイレクトが走るという点です。サーバ内でのリダイレクトではなくChromeとかで視認出来るリダイレクトと言えばわかりやすいかもしれません。

がっつりLambdaを使用して、通常のwebサーバのように構築するという用途には向いておりません。

サンプルコードになるかもです。(用途はタイトルにある通り、Lambdaに渡ってきたヘッダーを確認する為)

ALB+LambdaでLambdaに渡ってきているヘッダーを確認する方法 Python版
ALB+LambdaでLambdaに渡ってきているヘッダーを確認する方法 のPython版です。 def lambda_handle...

ALBターゲット

ALBのターゲットに構築したLambdaを指定します。何か条件があればルールとして記載可能です。

例えば、特定のサブディレクトリの場合だけメンテナンス画面を返したい場合などは、ルールに /hoge として、Lambdaに転送とするだけです。

まとめ

以上です。簡単な処理が一時的に必要になってきた場合などに重宝出来るかと思います。

ちなみに、CloudFrontを導入済であれば、CloudFront+Lambda(Lambda@Edge)構成が出来ますし、そちらの方が速いと思われます。