前提
- AWS-CLIがインストールされてて、
aws
コマンドにパスが通ってること前提です。
- あらかじめ
aws configure
コマンド等でPCにAWSの認証情報が設定してあり、レスポンスはjsonで受け取れるものとします。
- アップロード対象のLayerのソースコードはあらかじめzip圧縮しておき、コマンドライン引数でスクリプトにzipファイルパスを渡すものとします。(実際に私がやった時はスクリプト内でzipにしましたが、長くなるので省きました。)
やりかた
Layerのアップロードは、AWS-CLIの lambda publish-layer-version
コマンドで行います。
関数にLayerを設定するのは、AWS-CLIの lambda update-function-configuration
コマンドで行います。
update-function-configuration
コマンドで関数にLayerを設定するには、バージョン番号を含むLayer ARNが必要です。これは、publish-layer-version
のレスポンスに含まれている LayerVersionArn
から取得できます。
注意点ですが、update-function-configuration
コマンドでLayerを設定するときは、設定したい全てのLayerをオプション --layers
で指定する必要があるようです。既存のレイヤーに追加する、みたいなのはできません。
なので以下に紹介しているスクリプトを実行すると、スクリプト内でアップロードしたLayer以外は対象の関数から剥がれてしまいます。複数のLayerを使う場合は工夫が必要だと思います。
スクリプト
ここではNode.jsで実装したので、コマンド実行は execSync
で行いました。
上記スクリプト publish-layer.js
は、以下のように node
コマンドで実行します。引数としてzipファイルパスを指定します。
うまくいった場合、コンソールに以下のように表示されます。