Tech Hotoke Blog

IT観音とは私のことです。

#Lambdaレイヤー導入メモ #Ruby #AWS

これは何?

Lambdaのレイヤーを使用したので、操作手順などの備忘録

前提

Tips

  • Lambdaレイヤーはどんなときに使う?
  • デプロイパッケージのサイズを小さくするため。関数の依存関係を関数から切り離せるので。

  • コア関数ロジックを依存関係から分離するため。

  • 複数の関数間で依存関係を共有するため。今回の目的はこれに該当する。

  • Lambda コンソールのコードエディターを使用するため。

依存関係を分離するのは、今のところ楽にはなってもしんどくなることはほとんどなかったので積極的に切り分けていきたい。

  • 依存関係管理のためのレイヤーの使用を示す空のサンプルアプリケーションを用意してくれている。優しい。

github.com

  • 関数にレイヤーを追加すると、Lambda はレイヤーのコンテンツをその実行環境の /optディレクトリに読み込みます。例えば、アップロードするフォルダのディレクトリ構造がruby/3.2/* だったら、環境変数GEM_PATH /opt/ruby/3.2.0 を設定する必要があります。

  • レイヤーには、1 つまたは複数のレイヤーバージョンを含めることができる。

  • 既存のレイヤーバージョンの権限はいつでも変更することができる。

  • ただし、コードを更新したり、その他の構成を変更したりするには、新しいバージョンのレイヤーを作成する必要があります。

  • レイヤーのアップロードにはS3からもアップロードできる。

レイヤーを作成し設定する

  • ローカル環境でGemfileを作成し、bundle install を実行する(bundle install --path vendor/bundle でvendorディレクトリの配下に作成した)
  • bundle install の成果物をzipする(zip -r ../ruby_layer.zip .)
  • zip ファイルをアップロードする(手動)
  • Lambda関数にレイヤーの設定を行う(レイヤーはバージョン管理されるので、バージョンが更新されている場合はバージョンの指定を忘れずに。ここの更新忘れでハマりそう。。。)
  • 環境変数GEM_PATHを設定する(zipファイルのディレクトリ名もちゃんと確認すること)