こんにちは!RHEMS技研のニシダです!
以前、GASを使って
3分で API を作って世の中にデプロイするライブコーディング〜今日から君もスピードスターエンジニア〜
という記事が公開されていました。(GASについてはこちらのQiita記事がオススメです)
今回はAWSを使って、同じく3分でAPIを作っていきます。
はじめに
あくまでAPI(getのみ)を作って公開するまで、です。
APIGatewayとLambdaをつないだだけです、ここからDynamoDBとつないだり、APIGatewayにHTTPメソッドを足していくと本格的なAPIが作れるようになります
動画
AWSで3分で簡単なAPIサーバを立てる動画
— にし☁ (@cidr_nishida) 2018年8月11日
あとはDynamoDBと繋げば簡単にCRUDを満たすAPIサーバを立てられます
ハッカソンとか、スピード勝負のときに使えるやつです
今Qiitaで記事にしますhttps://t.co/GeyW7osRXa
(YouTubeの動画って埋め込むことできないんですね・・・)
説明
1 (開始~26秒)
まずはLambda関数を作っていきます。
関数名や、ロール名はわかりやすく、今回はDynamoDBを使わない(使うとコード量的に3分じゃ終わらない)のでロールにアタッチするポリシーは初期のままです。Dyanmoを使うならAWSLambdaDynamoDBExecutionRoleとか与えておきましょう。
2 (26秒~1分55秒)
APIGatewayの設定をしていきます。ここで発行されたエンドポイントに対してHTTPリクエストを送信していきます。
作成画面のLambda関数には先程作った関数の関数名を記入します。この時点で関数の作成が成功していれば予測候補にでてきます。
今回はGETメソッドでクエリ文字としてパラメータを渡しています。クエリ文字をLambdaでも扱えるように設定をしています。
メソッドリクエスト→URLクエリ文字パラメータ→名前を入力して作成→必須にチェック
統合リクエスト→マッピングテンプレート→Content-Typeにマッピングテンプレートを追加、application/json
→テンプレートの作成に以下を入力
{
"id":"$input.params('id')"
}
状況に応じてidの所を変更しましょう。
また、動画では忘れて最後にやっていますが、この時点でアクションからAPIをデプロイして構いません。
3 (1分55秒~2分24秒)
Lambda関数にコードを書いていきます。最初の方で一度IAMを開いていますが、今回は何も設定をしません。もし、このLambda関数内でDynamoDBを使いたければ、先程のポリシーを該当するロールにアタッチしていきましょう。
Lambda関数のeventに、APIGatewayのマッピングテンプレート通りのjsonが渡るので、event.id
とすることで、今回の値を取得できます。以下が実際のLambda関数です。
exports.handler = (event, context, callback) => {
callback(null, event.id);
};
4 (2分24秒~2分41秒)
先程しわすれた、APIのデプロイとエンドポイントの確認を行っています。
以上で、3分でAPIをAWS上で立てる手順でした。
もし要望が多ければ、この後考えられる、「DynamoDBでデータの書き込みや更新、削除、取得などを行うAPIの立て方」を書きます、が、コードの量やロード時間など含めて3分では終わりそうにないので、3分ハッキングとしてはこれで完結いたします。
ですので、もし次回があれば10分ハッキングとかって名前になってるんじゃないでしょうか。
特に理由があったわけでもないんですが、大急ぎで書いていたので動画内でも落ち着きのないマウスやタイプミスが目立ってます。。
あと記事内でもおかしな言い回しや誤字があるかもしれません。