API Gateway + LambdaでREST API開発を体験しよう [10分で完成編]
API Gateway + LambdaでREST API開発を体験しよう [10分で完成編]:
今回は、AWSのAPI GatewyとLambdaで、REST APIの作成を行います。
手順に沿って行うだけで、10分もかからずAPIが作成できます。
https://aws.amazon.com/jp/api-gateway/
REST APIをノンコーディングで製造、管理ができるサービス。
ただし、作れるのはAPIの入り口部分までで、APIがリクエストを受けた後の具体的な処理は、別に容易する必要がある。
今回は、処理はLambda関数を使用する。
https://aws.amazon.com/jp/lambda/
様々な言語のコードをデプロイできる実行環境。
コードは、様々なAWSプロダクトで発生したアクションをトリガーに実行する事ができる。
今回は、「API Gatewayへのリクエスト」をトリガーに、コードを実行する。
今回は、GETメソッドのAPIを作成します。
1. Lambdaで、APIの内部処理を担当する関数を作成する。
2. API Gatewayで、REST APIを作成して、Lambda関数を繋げて、APIを完成させる。
まずは、以下にアクセスして、Lambda関数を作成します。
https://aws.amazon.com/jp/lambda/
1. Lambdaを開いたら、[関数の作成] ボタンをクリックします。
2. 「一から作成」を選択します。
⬛名前
・任意の関数名を入力します。
・今回は、「helloFunction」とします。
⬛ランタイム
・関数は様々な言語で作成できますが、今回は「Node.js 8.10」を選択します。
3. 続いて、今回のLambda関数の他のAWSサービスへのアクセス許可を設定します。
と言っても、今回のLambda関数はAPI Gatewayから呼ばれる事はあっても、他のAWSサービスを呼ぶ用事は無いので、とりあえず動作logの書き込み先となる、CloudWatchというサービスにアクセスできるようにします。
⬛ロール
・「1つ以上のテンプレートから新しいロールを作成します。」を選択します。
⬛ロール名
・任意のロール名を入力します。
・今回は、「testRole」とします。
⬛ポリシーテンプレート
・「基本的な Lambda@Edge のアクセス権限(CloudFront トリガーの場合)」を選択します。
・このテンプレートには、CloudWatchへのアクセス権限が含まれているので、今回作成したロールが付与されたサービスは、CloudWatchにログを出力できるようになります。
一通り入力したら、 [関数の作成] ボタンをクリックします。
すると、以下のようなサンプル関数が生成されます。
今回は、このサンプルをそのまま使います。
簡単にサンプルの処理を説明すると、API Gatewayで作成したAPIがリクエストを受けると、Lambda関数が呼ばれて、そのリクエスト情報一式が
まずは、以下にアクセスして、APIを作成します。
https://aws.amazon.com/jp/api-gateway/
1. API Gatewayの設定画面を開きます。
APIのタイプは「REST」で、作成方法は「新しいAPI」がデフォルトで選択されているので、そのままにします。
⬛API名
・任意のAPI名を入力します。
・今回は、「hello API」とします。
入力したら、[APIの作成] ボタンをクリックします。
2. hello APIが作成されるので、まずはエンドポイントを作成します。
[アクション]→[リソースの作成]をクリックします。
リソース作成画面が表示されます。
⬛リソース名
・任意のリソース名を入力します。
・今回は、「test」とします。
⬛API Gateway CORS を有効にする
・チェックを入れると、testリソースの作成と共に、optionメソッドのエンドポイントが作成されます。
・ブラウザからAPIを利用できるように、チェックを入れます。
入力したら、[リソースの作成] ボタンをクリックします。
3. testリソースに、GETメソッドのエンドポイントを作成します。
[アクション]→[メソッドの作成]をクリックします。
「GET」を選択してチェックをクリックします。
4. GETメソッドのエンドポイントがリクエスト受けた時、どのように処理するか設定します。
他のAPIにリクエストを渡したり、モックとして固定値を返したり、色々できますが、今回はLambda関数に処理を渡します。
統合タイプは「Lambda関数」がデフォルトで選択されているので、そのままにします。
⬛Lambda プロキシ統合の使用
・チェックを入れると、このエンドポイントに対するリクエスト情報一式を、Lambdaの
・必ずチェックを入れます。
⬛Lambda関数
・このエンドポイントに対するリクエストがあった時、呼び出すLambda関数を設定します。
・先ほど作成した、「helloFunction」を設定します。
入力したら、[保存] ボタンをクリックします。
すると、以下のように「API GatewayからLambda関数を呼び出す権限を与える」旨のメッセージが表示されるので、[OK] ボタンをクリックします。
これで、hello APIから、helloFunctionを呼び出せるようになりました。
Lambda関数の画面を開いて、以下のようにLambda関数を呼び出すトリガーとして、API Gatewayが設定されている事を確認します。
1. hello APIを使えるようにデプロイします。
[アクション]→[APIのデプロイ]をクリックします。
2. どこにデプロイするか設定します。
⬛デプロイされるステージ
・「[新しいステージ]」を設定します。
⬛ステージ名
・任意のステージ名を入力します。
・今回は、「production」とします。
入力したら、[デプロイ] ボタンをクリックします。
2. productionステージにデプロイされます。
ツリーのGETメソッドのエンドポイントを選択すると、エンドポイントのURLが表示されます。
このように、Node.js + Expressを使えば、簡単にREST APIを作成する事ができます。
今回はLambda関数は単純な文字列を返すだけのサンプルを使いましたが、具体的な処理を実装する事で、実際に使えるAPIを簡単に作る事ができます。
色々試してみてください。
�� はじめに
今回は、AWSのAPI GatewyとLambdaで、REST APIの作成を行います。手順に沿って行うだけで、10分もかからずAPIが作成できます。
�� API Gatewy
https://aws.amazon.com/jp/api-gateway/REST APIをノンコーディングで製造、管理ができるサービス。
ただし、作れるのはAPIの入り口部分までで、APIがリクエストを受けた後の具体的な処理は、別に容易する必要がある。
今回は、処理はLambda関数を使用する。
�� Lambda
https://aws.amazon.com/jp/lambda/様々な言語のコードをデプロイできる実行環境。
コードは、様々なAWSプロダクトで発生したアクションをトリガーに実行する事ができる。
今回は、「API Gatewayへのリクエスト」をトリガーに、コードを実行する。
�� 作業手順
今回は、GETメソッドのAPIを作成します。1. Lambdaで、APIの内部処理を担当する関数を作成する。
2. API Gatewayで、REST APIを作成して、Lambda関数を繋げて、APIを完成させる。
�� Lambda関数の作成
まずは、以下にアクセスして、Lambda関数を作成します。https://aws.amazon.com/jp/lambda/
1. Lambdaを開いたら、[関数の作成] ボタンをクリックします。
2. 「一から作成」を選択します。
⬛名前
・任意の関数名を入力します。
・今回は、「helloFunction」とします。
⬛ランタイム
・関数は様々な言語で作成できますが、今回は「Node.js 8.10」を選択します。
3. 続いて、今回のLambda関数の他のAWSサービスへのアクセス許可を設定します。
と言っても、今回のLambda関数はAPI Gatewayから呼ばれる事はあっても、他のAWSサービスを呼ぶ用事は無いので、とりあえず動作logの書き込み先となる、CloudWatchというサービスにアクセスできるようにします。
⬛ロール
・「1つ以上のテンプレートから新しいロールを作成します。」を選択します。
⬛ロール名
・任意のロール名を入力します。
・今回は、「testRole」とします。
⬛ポリシーテンプレート
・「基本的な Lambda@Edge のアクセス権限(CloudFront トリガーの場合)」を選択します。
・このテンプレートには、CloudWatchへのアクセス権限が含まれているので、今回作成したロールが付与されたサービスは、CloudWatchにログを出力できるようになります。
一通り入力したら、 [関数の作成] ボタンをクリックします。
すると、以下のようなサンプル関数が生成されます。
今回は、このサンプルをそのまま使います。
簡単にサンプルの処理を説明すると、API Gatewayで作成したAPIがリクエストを受けると、Lambda関数が呼ばれて、そのリクエスト情報一式が
event
に渡されます。event
はそのまま使わずに、APIには「Hello from Lambda!
という文字列をレスポンスとして返すように」という指示を、処理結果として返します。
�� API Gatewayで、REST APIを作成
まずは、以下にアクセスして、APIを作成します。https://aws.amazon.com/jp/api-gateway/
1. API Gatewayの設定画面を開きます。
APIのタイプは「REST」で、作成方法は「新しいAPI」がデフォルトで選択されているので、そのままにします。
⬛API名
・任意のAPI名を入力します。
・今回は、「hello API」とします。
入力したら、[APIの作成] ボタンをクリックします。
2. hello APIが作成されるので、まずはエンドポイントを作成します。
[アクション]→[リソースの作成]をクリックします。
リソース作成画面が表示されます。
⬛リソース名
・任意のリソース名を入力します。
・今回は、「test」とします。
⬛API Gateway CORS を有効にする
・チェックを入れると、testリソースの作成と共に、optionメソッドのエンドポイントが作成されます。
・ブラウザからAPIを利用できるように、チェックを入れます。
入力したら、[リソースの作成] ボタンをクリックします。
3. testリソースに、GETメソッドのエンドポイントを作成します。
[アクション]→[メソッドの作成]をクリックします。
「GET」を選択してチェックをクリックします。
4. GETメソッドのエンドポイントがリクエスト受けた時、どのように処理するか設定します。
他のAPIにリクエストを渡したり、モックとして固定値を返したり、色々できますが、今回はLambda関数に処理を渡します。
統合タイプは「Lambda関数」がデフォルトで選択されているので、そのままにします。
⬛Lambda プロキシ統合の使用
・チェックを入れると、このエンドポイントに対するリクエスト情報一式を、Lambdaの
event
に渡します。・必ずチェックを入れます。
⬛Lambda関数
・このエンドポイントに対するリクエストがあった時、呼び出すLambda関数を設定します。
・先ほど作成した、「helloFunction」を設定します。
入力したら、[保存] ボタンをクリックします。
すると、以下のように「API GatewayからLambda関数を呼び出す権限を与える」旨のメッセージが表示されるので、[OK] ボタンをクリックします。
これで、hello APIから、helloFunctionを呼び出せるようになりました。
Lambda関数の画面を開いて、以下のようにLambda関数を呼び出すトリガーとして、API Gatewayが設定されている事を確認します。
�� hello APIのテスト
1. hello APIを使えるようにデプロイします。[アクション]→[APIのデプロイ]をクリックします。
2. どこにデプロイするか設定します。
⬛デプロイされるステージ
・「[新しいステージ]」を設定します。
⬛ステージ名
・任意のステージ名を入力します。
・今回は、「production」とします。
入力したら、[デプロイ] ボタンをクリックします。
2. productionステージにデプロイされます。
ツリーのGETメソッドのエンドポイントを選択すると、エンドポイントのURLが表示されます。
このように、Node.js + Expressを使えば、簡単にREST APIを作成する事ができます。
�� まとめ
今回はLambda関数は単純な文字列を返すだけのサンプルを使いましたが、具体的な処理を実装する事で、実際に使えるAPIを簡単に作る事ができます。色々試してみてください。
コメント
コメントを投稿