AWS Lambdaで使用するBoto3のバージョンをレイヤーを使って最新にしてみた

2023.11.28

タイトルの通りなのですがAWS Lambdaにデフォルトで入っているBoto3ではなく最新バージョンのBoto3を使用したかったのでやってみました。

やること

ざっくりやることは以下のことです。

  1. デフォルトで入っているBoto3のバージョン確認
  2. レイヤー作成
  3. レイヤー作成後のBoto3のバージョン確認

デフォルトで入っているBoto3のバージョン確認

まずはデフォルトで入っているBoto3のバージョンを確認します。
今回使用するPythonのバージョンはPython 3.11を使用しました。
以下のドキュメントにはboto3-1.27.1が入っていると記載されています。
Lambda ランタイム

Pythonのコードからも確認が可能です。

import boto3

def lambda_handler(event, context):
    print(boto3.__version__)

上記のコードをテスト実行するとCloudWatch Logsから「1.27.1」という値が確認できます。

レイヤー作成

2023/11/28 (火) 時点では1.33.1が最新バージョンでした。
https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

レイヤー作成の環境はCloudShellを使用しました。
CloudShellはマネジメントコンソールの右上のシェルのアイコンをクリックすると開くことが出来ます。

開いたら以下のコマンドを実行します。

mkdir python
pip3 install boto3 -t ./python
zip -r ./python.zip .
aws lambda publish-layer-version --layer-name python-layer --zip-file fileb://python.zip --compatible-runtimes python3.11
aws lambda update-function-configuration --function-name Lambda関数名 --layers arn:aws:lambda:ap-northeast-1:AWSアカウントID:layer:python-layer:1

上記のコマンドを実行すると対象のLambda関数に以下の画像のようにレイヤーが設定されていることを確認することが出来ます。

バージョン確認

レイヤーの作成が完了したらデフォルトで入っているBoto3のバージョン確認時に使用した以下のコードを使用してバージョンを確認します。

import boto3

def lambda_handler(event, context):
    print(boto3.__version__)

テスト実行を行うとCloudWatch Logsで最新バージョンが使用されていることが確認できます。

さいごに

最新のBoto3のAPIを使用したい場合はレイヤーを追加することで使用することが可能です。