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

  • 4
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

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

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

おわりに

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

この投稿は Twilio Advent Calendar 20159日目の記事です。