Edited at
TwilioDay 9

Twilioサーバーレス化作業記録 - RequestURLもサーバーレス化

More than 3 years have passed since last update.


はじめに

こちらのハンズオンに参加させて頂きました。

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のコードで設定したメッセージを喋ってくれた!


おわりに

駆け足でしたが、なんとか動作するところまでいったので共有まで。