AWS Lambdaでpg_dumpを使用するためのカスタムレイヤーの作成方法
AWS Lambdaは多くの場面でサーバーレスアプリケーションの開発を容易にしますが、デフォルトの実行環境にはPostgreSQLのpg_dump
のような特定のツールが含まれていません。pg_dump
はPostgreSQLデータベースのバックアップを取得するために広く使用されるツールです。この記事では、AWS Lambdaでpg_dump
を使用できるようにするためのカスタムレイヤーを作成する手順を説明します。
前提条件
- AWSアカウントが必要です。
- AWS CLIがローカルマシンにインストールされている必要があります。
- 基本的なコマンドライン操作に慣れていることが望ましいです。
ステップ1: pg_dump
バイナリの準備
Lambda実行環境と互換性のあるpg_dump
バイナリを準備する必要があります。最も簡単な方法は、Amazon Linux上でpg_dump
をビルドすることです。
- Amazon Linux 2 EC2インスタンスを起動します。
- インスタンスにSSH接続後、以下のコマンドで必要なツールとライブラリをインストールします。
sudo yum install -y postgresql-devel gcc make
- PostgreSQLのソースコードをダウンロードして
pg_dump
をビルドします。
wget https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz tar -xzf postgresql-12.3.tar.gz cd postgresql-12.3/ ./configure --without-readline --without-zlib cd src/bin/pg_dump make
- ビルドが完了すると、
pg_dump
バイナリがsrc/bin/pg_dump
ディレクトリ内に生成されます。
ステップ2: Lambdaレイヤーの作成
ビルドしたpg_dump
バイナリをLambdaレイヤーとしてパッケージ化します。
- ローカルマシンで
pg_dump_layer
というディレクトリを作成し、bin
サブディレクトリ内にpg_dump
バイナリを配置します。
pg_dump_layer/ └── bin/ └── pg_dump
- 以下のコマンドで
pg_dump_layer
ディレクトリをZIPアーカイブします。
zip -r pg_dump_layer.zip bin/
- AWSマネジメントコンソールにアクセスし、「Lambda」サービスの「レイヤー」セクションで「レイヤーの作成」をクリックします。
- レイヤー名を入力し、先ほど作成したZIPアーカイブをアップロードします。
- 対象ランタイムを選択し、「レイヤーの作成」をクリックします。
ステップ3: Lambda関数にレイヤーを追加
- Lambda関数の「デザイナー」セクションで「レイヤー」を選択し、「レイヤーを追加」をクリックします。
- 「カスタムレイヤー」から作成したレイヤーを選択し、最新のバージョンを指定して「追加」をクリックします。
これで、Lambda関数からpg_dump
コマンドを使用する準備が整いました。環境変数PATH
に/opt/bin
を追加して、pg_dump
コマンドを実行できるようにしましょう。
まとめ
AWS Lambdaでカスタムレイヤーを使用することで、pg_dump
のような特定のツールをLambda関数内で利用できるようになります。この方法は、Lambdaを使用してPostgreSQLデータベースのバックアップを取得するスクリプトを実行する場合に特に有用です。