📝

Lambda で使用する Boto3 のバージョンを固定してみた

に公開

AWS Lambdaで使用するBoto3のバージョンをレイヤーを使って最新にしてみた | DevelopersIO
ほぼ上記ブログ通りです。

手順

以下のコマンドで Boto3 の指定のバージョンをインストールします。
コマンド実行環境は CloudShell です。

$ mkdir python
$ pip3 install boto3==1.34.138 -t ./python
$ zip -r ./python.zip .

CloudShell から python.zip をダウンロードして Lambda レイヤーに登録します。
今回はコンソールから zip ファイルをアップロードしました。

Python 3.11 の Lambda 関数を作成し、レイヤーに作成済みのレイヤー ARN を指定しました。

以下のコードを実行して Boto3 のバージョンを確認します。

import boto3

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

実行結果は以下の通り、バージョン指定してインストールした Boto3 のバージョンが表示されました。

1.34.138

補足

Boto3 のバージョンごとの変更履歴は GitHub リポジトリの CHANGELOG.rst に記載されています。
boto3/CHANGELOG.rst at develop · boto/boto3 · GitHub

常に最新バージョンを使用していることで Lambda のコードに変更を加えていなくてもエラーが発生するケースもあります。
Lambda関数が突然動かなくなった話 - サーバーワークスエンジニアブログ

しかしながら、バージョンを固定してしまうと Lambda 基盤のアップデートが行われず、少なからずセキュリティリスク等を持つ状態になってしまうため、恒久的にはランタイムバージョンの更新は自動で行われるようにするのが好ましいです。

バージョンを固定すると上記のデメリットもあるため、運用については要件に合わせて検討してください。

まとめ

今回は Lambda で使用する Boto3 のバージョンを固定してみました。
どなたかの参考になれば幸いです。

参考資料

Discussion