AWSのAPI GatewayとLambdaを軽く触ってみたお話

タイトルの通り。

先日のLT大会でサーバーレスの話を聞いて、ちょっとやってみようかなーと思ったわけで。
Lambdaの話は聞いたことあったけど、API Gatewayと組み合わせることでお手軽にRest APIができる!という話を知って、じゃあやってみようという感じですね。
今考えているサービスに組み込めば、ランニングコストの大幅な削減にもなるしね。
あと、何より面白そうだったのが決め手(・∀・)

【用意するもの】
AWSのアカウント(無料枠でおk)

【手順】
1.IAMロールを作る。
この時、LambdaのフルアクセスとAPI GATEWAYのフルアクセスをつけておく。

2.Lambda関数の作成。

とりあえずLambdaが実行されて、疎通の確認ができればいいので内容は簡単に。
[Create a Lambda function]から、新しいFunctionを作成。
内容はシンプルにこんな感じ。

console.log("Loading Event")

exports.handler = (event, context, callback) => {
    // TODO implement
    context.done(null, "Hello! This is Lambda Function");
};

そして、Lambdaの設定とかは↓

161127-0003

さっき作成したRoleを設定して、あとはMemoryのサイズとかは適当に。
とりあえずテストなので最小サイズでいいかなと。
これでLambdaの作成はOK

3.API Gatewayの作成

API Gatewayにアクセスして、[APIの作成]から新しく作ります。
名前と説明を適当に入力して、まずはリソースを作っていきます。

161127-0006-1

[アクション]-[リソースの作成]から、今回は「call」という名前で作成。
その後、GETメソッドを追加して、メソッドの内容を↓のように設定。

161127-0007-1

この時、リージョンは呼び出すLambda関数のやつと一緒にしないとダメみたい。
保存したら、こんな感じの画面になるかな。

161127-0008

あとは、ステージを作るとAPIのアクセスURLが表示される。
そこにアクセスして、”Hello! This is Lambda Function”が表示されればOK!
(ちゃんとhttp://XXXX/call/にアクセスすること)

とりあえず、これでAPI GatewayとLambdaの組み合わせは動かせたっぽい。
あとはS3にファイルを置いて読み込ませるなり、DynamoDBと組み合わせたり、諸々の使い方ができますな。

***こっからメモ***
Lambdaはリクエスト数と実行時間で料金が発生するよ。
API Gatewayはデータ送出で料金が発生するよ。

AWS, WEB

Posted by massyuu