• home
  • AWS Lambdaで Slackのslashコマンドを作る(1)

AWS Lambdaで Slackのslashコマンドを作る(1)

伏見です。
表題の通りやっていきたいと思います。

(1)セットアップ

まずはおもむろにサーバーレスフレームワークのセットアップをします。
2016年9月現在、Serverless Frameworkは1.0@Beta3くらいまで出てますが、
サクッとAWSのlambdaとAPI Gatewayを使う限り、regeonやprofileなどを対話形式で選んでくれるバージョン0.5.6の方が
今の所使いやすいのでこっちを使います。
0.5系のdocumentはこちら 

入れます。

[shell]
npm install -g serverless
[/shell]

プロジェクト立てます。

[shell]
serverless project create
[/shell]

対話形式でいろいろ聞いてくるので、聞かれるままに言語やAWSのプロファイルの設定をします。
あ、aws-cliは入っているものとします。

次に、lambdaのファンクションやAPI gatewayのエンドポイントをサクッと立てます。
ここでは、command01と云う名前にしてみます。

[shell]
serverless function create functions/command01
[/shell]

また対話形式で、言語や作るものを聞かれます。
ここではnodejs4.3を選んでおきます。
[shell]
Serverless: Please, select a runtime for this new Function
> nodejs4.3
python2.7
nodejs (v0.10, soon to be deprecated)
[/shell]

設定を終えると、functions/command01以下にlambdaファンクションの本体となる handler.jsや、API gateway、lambdaの設定を司るs-function.jsonなどができています。
ファンクションを作ったディレクトリに移動して、npmの設定を行います。
これは、lambdaにdeployする時に、node_modulesが独立しているためです。

[shell]
cd functions/command01
npm init
[/shell]

ちなみにwebpackを使う方はファンクションごとのこの設定、いりません。babelやtypescriptを使ったり、jsonやimageをバンドルして扱いやすくしたい…あるいは複数のfunctionごとにコードを共有したい…という方もこっちですね。
0.5系向けならwebpack plugin  がとにかく簡単でオススメです。
サクッとやるだけならいらないです。

(2)まずは繋いでみる

とりあえずデプロイします。

lambda。
[shell]
serverless function deploy
[/shell]

api-gateway。
[shell]
serverless endpoint deploy
[/shell]

endpoint deploy後に表示されたURLにブラウザで確認します。

ほげ

表示されました。
これでとりあえずのひな形ができました。

実際の機能作成は次の記事で。