awsのlambda + api gatewayで、ブラウザからhello,worldしてみた。

awsのlambda + api gatewayで、ブラウザからhello,worldしてみた。

サーバレスであるawsでは、linuxサーバを立てなくも、Webプログラミング(関数)が実行できる。それがlambdaというサービス。
プログラミング言語は、デフォがnode.jsでpythonも多いみたい。残念がらphpは無い。

作業その1、lambda関数の作成
1, awsコンソールからlambdaサービスに行って、右上の「関数の作成」ボタンを押す。
2, 関数名は適当に「demo」とかにしておく。
ランタイムがプログラミング言語の選択。デフォだとNode.jsになっているので、そのまま
右下の「関数の作成」ボタンを押す。

3, 作成したdemo関数の管理画面になる。最初からhello,wolrdプログラムが組まれている。

作業その2、api gatewayの作成(lambda関数は、直接ブラウザからアクセス出来ないので、api gateway経由でアクセスする)
1, awsコンソールからapi gatewayサービスに行って、右上の「APIの作成」ボタンを押す。
2, なんか4種類くらい出てくるけど、REST APIの構築ボタンを押す
3, API名だけ必須なので、適当に「demo」と入力して、それ以外はデフォルトのまま、右下の「APIの作成」ボタンを押す。
4, api設定画面になったので、アクションボタンから「メソッドの作成」をクリック。GETを選択して、右脇にあるチェックマークをクリック
5, GETメソッドの管理画面になるので、「Lambda プロキシ統合の使用」をチェック(Context-Type: text/htmlが使えるようになる)
さっき作ったlambda関数を入力する(demoって名前を自分で入力する。サジェスト機能あり)。あとはデフォのまま
「API Gateway に、Lambda 関数を呼び出す権限を与えようとしています」と警告が出るけど、OKボタンを押す
6, api設定画面に戻ってくるので、アクションボタンから「APIのデプロイ」をクリックして、APIを外部へ公開する。
デプロイされるステージは[新しいステージ]を選んでから、必須のステージ名は適当にdemoとか入力して、デプロイボタンを押す
7, 公開されたapiのURLが表示されるので、ブラウザで見てみる。
URL の呼び出し: https://xxxxxxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/demo

8, 以下のようにjson形式で表示されていればOK! lambda関数の文字列を変更&保存すれば、表示も変わるはず。
{“statusCode”:200,”body”:”\”Hello from Lambda!\””}

作業その3、json形式じゃなくてhtmlでブラウザ表示してみる。
1, lambda関数の内容を以下のように変更する

{“statusCode”:200,”headers”:{“Content-Type”:”text/html”},”body”:”hello,world”}
みたいにjson形式のままなら、「Lambda プロキシ統合の使用」をチェックが入っていない。場所は
api設定画面の統合リクエストをクリックすれば、チェックボックスが見えるはず。