AWS Lambdaでpg_dumpを使用するためのカスタムレイヤーの作成方法

2024/04/02

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をビルドすることです。

  1. Amazon Linux 2 EC2インスタンスを起動します。
  2. インスタンスにSSH接続後、以下のコマンドで必要なツールとライブラリをインストールします。
    sudo yum install -y postgresql-devel gcc make
  3. 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
  4. ビルドが完了すると、pg_dumpバイナリがsrc/bin/pg_dumpディレクトリ内に生成されます。

ステップ2: Lambdaレイヤーの作成

ビルドしたpg_dumpバイナリをLambdaレイヤーとしてパッケージ化します。

  1. ローカルマシンでpg_dump_layerというディレクトリを作成し、binサブディレクトリ内にpg_dumpバイナリを配置します。
    pg_dump_layer/
    └── bin/
       └── pg_dump
  2. 以下のコマンドでpg_dump_layerディレクトリをZIPアーカイブします。
    zip -r pg_dump_layer.zip bin/
  3. AWSマネジメントコンソールにアクセスし、「Lambda」サービスの「レイヤー」セクションで「レイヤーの作成」をクリックします。
  4. レイヤー名を入力し、先ほど作成したZIPアーカイブをアップロードします。
  5. 対象ランタイムを選択し、「レイヤーの作成」をクリックします。

ステップ3: Lambda関数にレイヤーを追加

  1. Lambda関数の「デザイナー」セクションで「レイヤー」を選択し、「レイヤーを追加」をクリックします。
  2. 「カスタムレイヤー」から作成したレイヤーを選択し、最新のバージョンを指定して「追加」をクリックします。

これで、Lambda関数からpg_dumpコマンドを使用する準備が整いました。環境変数PATH/opt/binを追加して、pg_dumpコマンドを実行できるようにしましょう。

まとめ

AWS Lambdaでカスタムレイヤーを使用することで、pg_dumpのような特定のツールをLambda関数内で利用できるようになります。この方法は、Lambdaを使用してPostgreSQLデータベースのバックアップを取得するスクリプトを実行する場合に特に有用です。