(新機能)Lambda LayerでAlexa SDK V2を使ってみたら、超便利だった  #reinvent

1 はじめに

今回のAWS re:Invent2018で発表となった、Lambda Layerは、モジュールを予め用意しておくことで、関数ごとにパッケージ化する必要がなくなります。

ということで、最近、ちょっと面倒だと感じていたAlexa SDK V2をLayerで使用してみました。

2 ASK-SDK V2

Alexa SDK V1は、テンプレートも用意され、モジュールは予めLambdaで利用可能なため、改めてZIPで送る必要はありませんでした、しかし、V2は、現時点では、まだ自前で送る必要があります。

以下は、Alexa-SDK V2を使用した、簡単なサンプルです。

テンプレートの、Amazon Alexa Start Sessionでテストを回してみると、モジュールが見つからないということでエラーとなります。

3 Layer用のZIP作成

ドキュメントを確認すると、各言語ごと、フォルダ構成が決められているようです。


Including Library Dependencies in a Layer

Node.JS用に、ASK-SDK V2を含むZIPを作成しました。

$ mkdir nodejs
$ cd nodejs
$ yarn add ask-sdk
$ cd ..
$ zip -r nodejs.zip nodejs

出来上がったzipファイルは、5.5Mbyte程度でした。

$ ls -al *.zip
-rw-r--r--  1 sin  staff  5437182 12  2 02:30 nodejs.zip

10 MB より大きいファイルの場合は、Amazon S3 を使用したアップロードを検討してください。 と書かれていたので、このまま、Lambdaのコンソールからアップロードしました。

公開に成功すると、バージョンが採番されています。

4 使ってみる

Layerを使用するには、Layersで、対象のレイヤーを追加するだけです。

Layerを追加しただけで、先のほどのテストは、問題なく実行(モジュールが認識)できていました。

5 最後に

これで、Alexa-SDKのV2を使用する場合も、モジュールのアップロードは必要なくなりました。

モジュールの梱包が必要無いとなると、恐らく、オンラインエディタだけで充分作業が可能になるでしょう。色々な意味で、超便利です。

6 参考リンク


Including Library Dependencies in a Layer
新機能 – AWS Lambda :あらゆるプログラム言語への対応と一般的なコンポーネントの共有
[検証]LambdaのLayer機能を早速試してみた #reinvent
【速報】【アップデート】Lambdaが複数のファンクションで共有するコードを持てるようになりました(Lambda Layer) #reinvent