Help us understand the problem. What is going on with this article?

Twilioサーバーレス化作業記録 - Token生成サーバーレス化

More than 3 years have passed since last update.

はじめに

Twilioサーバーレス化作業メモです。
今回はCapabilityTokenを取得するためのAPIをAWS API GatewayとLambdaで作成します。

スクリプト生成

適当な場所に作業用フォルダを作成します。
そこにnpmにてtwilioインストール。

$ npm install twilio

index.js作成。

index.js
console.log('Loading function');

exports.handler = function(event, context) {
    var twilio = require("twilio");
    var capability = new twilio.Capability('myAccountSid', 'myAuthToken');
    capability.allowClientOutgoing('myAppSid');
    var token = capability.generate();

    console.log('token =', token);
    context.succeed(token);
};

コマンドラインでzip作成。

$ zip -r twilio.zip index.js node_modules/

AWS Lambda側

「Create a Lambda Function」にて新規作成。
blueprint選択せずskip。

Nameは「TwilioGenerateToken」としました。
Roleは「lambda_basic_execution」を選択。

作成後、「Code」タブ「Upload a .ZIP file」から先ほど作成したzipファイルをアップロードします。
Test実行して結果を確認しておきましょう。

注意:

はじめ、index.jsへのアクセス権限が制限されていたことでスクリプト実行に失敗していました。

EACCES, permission denied '/var/task/index.js

今回はFinderの「情報を見る」「共有とアクセス権」でEveryoneに「読み出しのみ」を設定しました。

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/json
  • Input Path ThroughからMapping Templateへ
#set($inputRoot = $input.path('$'))
$inputRoot

ここは...要再確認です。

Method Response

200を展開

Add Response Model

  • contenttype: application/json
  • Models: Empty

動作テスト

Testから叩いてみます。
Tokenが返却されました!

おわりに

Deployまで確認できませんでした。
サーバーレス化に邁進していきたい。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした