0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的アドカレAdvent Calendar 2024

Day 11

Lambdaのエイリアスを使用した加重ルーティングの実装

Posted at

はじめに

AWS Lambdaではバージョンごとにエイリアスを設定することができます。本記事では、エイリアスを使用して、同じLambda関数の異なるバージョン間でトラフィックを加重ルーティングする方法を実装していきます。

ゴール

Lambdaのバージョニングとエイリアスを利用した加重ルーティングの実施

加重ルーティングとは?

トラフィックを指定した割合で分割する事

作るもの

  • Lambda
    • Python 3.12
  • API Gateway

Lambdaの作成

Lambdaのバージョンを2つ(バージョン1, 2)作成していきます。

  • バージョン1の作成

Lambdaのバージョン1が実行された事が分かるよう内容にしてデプロイします。

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': 'これは Lambda バージョン 1 です。'
    }

デプロイ後にバージョンを作成します。
バージョンタブに移動し、新しいバージョンを発行 をクリック。

image.png

image.png

  • エイリアスの設定

バージョンのエイリアスを作成します。
エイリアスタブに移動し、エイリアスを発行 をクリック。

image.png

エイリアスの名前とバージョンを選択して保存をクリック。

image.png

  • バージョン2の作成

バージョン1の作成と同様に2を作成します。
作成出来たらデプロイ後に新しいバージョンを発行します。

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': 'これは Lambda バージョン 2 です。'
    }

加重ルーティングの設定

エイリアスタブから test エイリアスを選択します。

image.png

全体の20%のトラフィックはバージョン2に行くように振り分けます。

image.png

API Gatewayとの連携

以下の設定でAPI GatewayとLambdaを連携します。

  • 統合タイプ:Lambda(エイリアスをつけたバージョンのLambdaを選択)
  • メソッド:Get

リクエストを送ってみる

Postmanから10回ほどリクエストを送って試してみます。
確率的には10回中8件はバージョン1、2件はバージョン2で処理されます。

実行結果

10回中7回はバージョン1、3回はバージョン2で処理されました。想定結果から大きく外れず、それぞれのLambdaバージョンが動いてることを確認できました。

7回

{
    "statusCode": 200,
    "body": "これは Lambda バージョン 1 です。"
}

3回

{
    "statusCode": 200,
    "body": "これは Lambda バージョン 2 です。"
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?