Lambda レイヤーにライブラリを追加する ( Terraform 編)

概要

Lambda から Terraform コマンドを利用できるようにするため、Lambda レイヤーに Terraform を追加します。

Lambda レイヤーに Terraform を追加する手順

最終的なデプロイパッケージ( zip ファイルアーカイブ)のフォルダ構成
Copied!
.
└── bin
    └── terraform

作業用ディレクトリとレイヤーパスの作成

Copied!
mkdir -p ~/terraform_layer/bin

Terraform のダウンロード

bin ディレクトリに Terraform のバイナリーファイルを追加します。

Copied!
cd ~/terraform_layer/bin

# wget もしくは curl いづれかのコマンドで Terraform のバイナリーファイルをダウンロードします。
# Lamda レイヤーを使用する Lambda 関数の アーキテクチャが x86_64 の場合は以下の URL からダウンロードします。
wget https://releases.hashicorp.com/terraform/1.1.2/terraform_1.1.2_linux_amd64.zip
curl -O https://releases.hashicorp.com/terraform/1.1.2/terraform_1.1.2_linux_amd64.zip

# Lamda レイヤーを使用する Lambda 関数の アーキテクチャが arm64 の場合は以下の URL からダウンロードします。
wget https://releases.hashicorp.com/terraform/1.1.2/terraform_1.1.2_linux_arm64.zip
curl -O https://releases.hashicorp.com/terraform/1.1.2/terraform_1.1.2_linux_arm64.zip

# ファイルを解凍します。
unzip terraform_1.1.2_linux_amd64.zip

# 実行権限を付与しておきます。
chmod 755 terraform

デプロイパッケージ化( zip ファイルアーカイブ)

Copied!
cd ~/terraform_layer
zip -r9 terraform_layer.zip bin

Lambda レイヤーの作成

デプロイパッケージを使用した Lambda レイヤーの作成手順はこちらにまとめてあります。

動作確認

作成した Lambda レイヤーを使用する Lambda 関数を作成し、テスト実行してみます。
使用するカスタムランタイムはなんでもいいですが、本記事ではカスタムランタイムである Amazon Linux 2 を使用します。
特にエラーが発生せず、実行結果のログに terraform のバージョンが表示されていれば成功です。

Copied!
function handler () {
    EVENT_DATA=$1
    terraform --version
    RESPONSE="{\"statusCode\": 200, \"body\": \"Hello from Lambda!\"}"
    echo $RESPONSE
}