はじめに
こちらのハンズオンに参加させて頂きました。
Twilio API 勉強会 Vol.28 - サーバーレスアーキテクチャで Twilioを安全に運用しよう! ハンズオンメモ
とても参考になりました!
honkimiさんありがとうございます!
(この投稿内容もハンズオンメモをベースにしております)
概要
ハンズオンではフォールバックURL(=失敗時)のサーバーレス化を行いました。
セッション内で言及されていましたが正常に動作させる場合でも
サーバーレス化と相性が良いですよ、とのこと。
TwilioもLamdbaもまだ初心者ですが、試してみました!
AWS Lambda 側
AWS Lambda Functionの作成
AWS にログインし、AWS Lambdaを選択
初期画面にて「Create a Lambda Function」
blueprint で twilio-blueprint を選択
- Name: TwilioRequset
- Role: lambda_basic_execution (ハンズオン内で作成済)
他はデフォルト値のままとしました。
Next → Next → Create Function
AWS Lambda Functionの設定
Add API Endpoint 選択し、作成
Amazon API Gatewayの設定
prodを新しいタブで開く
ページ上の右タブResourcesへ
Method Request
Method Execution の AuthenticationをNONE
Integration Request
- Mapping Templates を選択
- Content-Type を application/json
Input Path ThroughからMapping template へ変更。AWS lambdaに送ったパラメータを全て取得できるようにする
{
"param": {
#foreach( $key in $input.params().querystring.keySet() )
"$key": "$input.params().querystring.get($key)"#if( $foreach.hasNext ),#end
#end
}
}
Integration Response
200を展開
Mapping Templates
- Content-Type: application/xml
- Input Path ThroughからMapping Templateへ
#set($inputRoot = $input.path('$'))
$inputRoot
- ここなのですが、Output passthroughでいくかと思ったら上手くいかず、こちらの記述にして動作しましたとてもあやしい...要再確認です。
Method Response
200を展開
Add Response Model
- contenttype: application/xml
- Models: Empty
Deploy API
Deploy API で prod でデプロイ
Stagesにて左ナビでTwilioRequestのGETへ行って、そのURLをコピー
Twilio 側
Twilio のRequestURLにURLをセット
その電話番号へ電話をかける
Lambdaのコードで設定したメッセージを喋ってくれた!
おわりに
駆け足でしたが、なんとか動作するところまでいったので共有まで。