Martinysystem Works blog

とある出来立てほやほやITベンチャーCTOの徒然草

Lambdaに外部モジュールを組み込む方法

うわあああ!
また更新が滞ってやがるwwwww

ネタがなかったというのもありますが
ここのところ勉強だ資料作成やなんだかんだでドタバタしておりまして
更新できずにいました。

すみません。

さて、先日Alexa Hands-Onに参加した結果
Alexaのスキルを作る事にハマっておりまして
時間があれば黙々と作っているわけです。

そんななか、Lambdaを触り始めたわけですが
外部モジュールを読み込ませるにはどうすれば良いかでハマってしまいましたので
いろんなサイトを参考にしつつ、纏めてみました。

※参考サイト

https://dev.classmethod.jp/cloud/aws/1st-javascript-1st-lambda/

https://hacknote.jp/archives/12124/

前提OS:MacOS

1.Homebrewのインストール

$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.node.jsのインストール

$brew install node

3.インストールするモジュールの格納領域を作成し、カレントディレクトリを移動する

$mkdir lambdaExtModules
$cd lambdaExtModules

4.モジュールをローカルにインストール

$npm install moment-timezone
$npm install alexa-sdk
$npm install aws-sdk

5.コーディングしたスクリプトとモジュールをZip化

$zip -r myfunc.zip alexa_enter_room.js node_modules

ディレクトリ構造は以下の通り
lambdaExtModules
├alexa_enter_room.js
└node_modules

6.zipファイルを作成しているLambda 関数にアップロード
f:id:martinysystem:20180203173021p:plain

これで、外部モジュールを取り込んだ関数として登録でき
問題なく実行することができるようになりました。

設計図にないモジュールも組み込んだりしたい場合は
是非お試しあれ♪