MENU

AWS Lambda Layers に特定のリポジトリからライブラリをアップロードする

AWS Lambda Layers を利用することで、Lambda 関数の依存関係を外部化し、関数のデプロイパッケージをシンプルに保つことができます。本記事では、特定の Git リポジトリから取得したライブラリを AWS Lambda Layers にアップロードする手順を解説します。

目次

前提条件

以下のツールがインストールされていることを確認してください。

  • Python 3.x
  • pip
  • AWS CLI
  • zip コマンド

Lambda Layer 用のディレクトリ構造を作成

Lambda Layer 用に、ライブラリをインストールするディレクトリを作成します。Lambda Layers は、このディレクトリ内にライブラリを配置することで、Lambda 関数がそれらを参照できるようにします。

mkdir python

python ディレクトリが Layer にアップロードされる場所です。この中にライブラリをインストールしていきます。

Git リポジトリからライブラリをインストール

次に、pip を使って特定の Git リポジトリからライブラリを python ディレクトリ内にインストールします。例えば、特定のコミットハッシュやブランチを指定してライブラリを取得したい場合、以下のようなコマンドを使います。

pip install git+https://<リポジトリのURL>@<コミットハッシュまたはブランチ名> -t python/

<リポジトリのURL> は対象ライブラリの Git リポジトリ URL を指定し、<コミットハッシュまたはブランチ名> には特定のバージョンやブランチを指定します。

不要なファイルを削除(オプション)

インストールしたライブラリには、不要なファイル(例:ドキュメントやテストファイル)が含まれることがあります。Lambda Layers のサイズを抑えるために、以下のコマンドで不要なファイルを削除します。

find python/ -name "*.dist-info" -exec rm -r {} +
find python/ -name "*.egg-info" -exec rm -r {} +

Layer の ZIP ファイルを作成

次に、python ディレクトリを ZIP ファイルに圧縮します。この ZIP ファイルが、AWS Lambda にアップロードされる Layer の内容になります。

zip -r layer.zip python

これで Layer の準備が整いました。

AWS Lambda Layer にアップロード

AWS CLI を使って、作成した ZIP ファイルを AWS Lambda Layer にアップロードします。以下のコマンドを実行します。

aws lambda publish-layer-version \
    --layer-name <Layer名> \
    --description "Lambda Layer for custom libraries" \
    --zip-file fileb://layer.zip \
    --compatible-runtimes python3.x \
    --region <リージョン名>
  • <Layer名> には Layer の名前を指定します。
  • <リージョン名> には AWS のリージョンを指定します(例:ap-northeast-1 など)。

このコマンドを実行すると、Layer の ARN(Amazon リソースネーム)が返されます。この ARN を後で Lambda 関数に設定します。

Lambda 関数に Layer を追加

Layer を作成した後、それを Lambda 関数で使用できるようにします。以下はSAMのtemplate.yaml での例です。

Globals:
  Function:
    CodeUri: src
    Runtime: python3.x
    Timeout: 30
    MemorySize: 256
    Layers:
      - arn:aws:lambda:<リージョン名>:<アカウントID>:layer:<Layer名>:<バージョン番号>
    Environment:
      Variables:
        TABLE_NAME: "example_table"

<リージョン名>, <アカウントID>, <Layer名>, <バージョン番号> は、AWS CLI で Layer を作成した際に取得した情報を入力してください。

デプロイして動作確認

Layer を Lambda 関数に追加したら、通常通りに関数をビルドしてデプロイします。

sam build
sam deploy

デプロイ後、関数が正しく Layer を参照して動作しているか確認します。

まとめ

AWS Lambda Layers を使用することで、Lambda 関数に依存関係を簡単に管理し、ライブラリの一元管理や再利用が可能になります。特定の Git リポジトリからライブラリを取得して Layer にアップロードすることで、より柔軟な開発環境を構築できるようになります。

目次