0
Help us understand the problem. What are the problem?

posted at

API Gatewayを試してみた

背景・目的

  • LambdaからDynamoDBを操作するで作成したLambdaをWebリクエストをもとに実行したい。
  • 今回は、API Gatewayを使って実行する。
  • 本ページでは、まずAPI Gatewayのチュートリアルを対象とし、実際に接続する方法は次回以降に試す。

概要

API Gatewayとは

  • REST、HTTP、WebSocketなどのAPIを作成、公開、維持、モニタリング、セキュア化するためのサービス
  • 最大で数十万個の同時 API コールの受け入れ処理に伴うすべてのタスクを取り扱う

特徴

  • ステートフル (WebSocket) およびステートレス (HTTP と REST) API のサポート。
  • 強力で認証メカニズム
    • IAMポリシー
    • Lambdaオーソライザー関数
    • Cognitoユーザプール
  • API発行するための開発者ポータル
  • 変更を安全に進めるためのCanaryリリースのデプロイ
  • APIの使用状況と、APIの変更に関するCloudTrailログ記録とモニタリング
  • CloudWatchのログ記録
    • アクセスログ
    • 実行ログ
  • CloudFormation対応
  • AWS WAFとの統合
  • X-Rayとの統合

実践

ドキュメントを参考に、実際に作成し動かしてみる。

ステップ 1: Lambda 関数を作成する

  • 既に作成したLambda関数を使用する。レスポンスの形式はLambada関数レスポンス2.0であれば、メッセージだけ返せばAPI Gatewayで解釈するらしい。(詳細は、こちらを参照)
  • カスタマイズする場合は、以下のように修正する必要がある。
{
    "cookies" : ["cookie1", "cookie2"],
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headername": "headervalue", ... },
    "body": "Hello from Lambda!"
}    
  • 今回は、bodyに詰めるメッセージだけ変更する。
 return '{"message","finish!"}'

ステップ 2: HTTP API を作成する

  • REST APIではなくHTTP APIで試す。

1.API Gatewayコンソールで「HTTP API」の構築をクリック。
image.png

2.APIの作成では、以下を入力し「次へ」をクリック。

  • 統合をLambda
  • AWSリージョンをap-northeast-1
  • Lambda関数をexternal_request_func
  • バージョンを2.0
  • API名をexternal_request_api
    image.png

3.ルートを設定では、以下を設定し「次へ」をクリック。

  • メソッドをGET
  • リソースパス、統合ターゲットは、先程、入力したAPI名とLambda関数を指定
    image.png

4.ステージを定義では、デフォルトのまま「次へ」をクリック。
image.png

5.確認して作成画面で「作成」をクリック。

  1. ブラウザでアクセスし、確認する。
  • 以下が表示された。(見づらいがブラウザに表示された内容)
    image.png

7.DDBも確認する。
実行した直後のデータが入っていることを確認できた。
image.png

考察

  • 今回は、HTTP APIを使用したが、次回はREST APIを試す。

参考

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?