AWS API Gateway

API Gatewayとは

WEBリクエストを各マイクロサービス(API)へルーティングするAWSサービス
APIの作成、配布、保守、監視(トラフィック管理、モニタリング)、保護(アクセスコントロール)

APIとは

機能の一部を外部に公開したアプリケーション
WEBリクエストを受け取ってWEBレスポンスだけを返す

例
郵便番号を受け取って、住所を返す。
どういうロジックで郵便番号を住所に変換しているか等は利用者からは分からない

API種類

REST
一回のリクエスト(GET/POST/PUT/DELETE)とレスポンスだけで処理が完結する通信規格

HTTP
RESTful API
RESTful = RESTリクエスト(GET/POST/PUT/DELETE)を用いたHTTPリクエスト〜HTTPレスポンス通信

Websocket
チャット等の双方向のリアルタイム通信に利用する通信規格

API管理

作成

AWS Lambda、EC2、もしくはAWS外でパブリックとして公開されているアプリケーションをAPIとして作成

↓アクション>メソッドの追加>「GET/POST/PUT/DELETE」を選択>✓を押す
↓AWS Lambdaで作成済みの関数名を指定

デプロイ

アクション>APIのデプロイ>デプロイ

ステージをdev、prod等に分ける事で環境毎にapiを複数定義できる

テスト

オーソライザー

Cognito

作成

Token取得

$ aws cognito-idp admin-initiate-auth --cli-input-json file://id.json

※id.json
{
 "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
 "AuthParameters": {
  "USERNAME": "yone",
  "PASSWORD": "#!yone1234"
 },
 "ClientId": "603be96m3g2rc2kets733bbo59",
 "UserPoolId": "ap-northeast-1_6GtZLUusU"
}

※レスポンス
{
 "ChallengeParameters": {},
 "AuthenticationResult": {
  "AccessToken": "XXXXXXXXXXXXXXXX",
  "ExpiresIn": 3600,
  "TokenType": "Bearer",
  "RefreshToken": "XXXXXXXXXXXXXXXX",
  "IdToken": "XXXXXXXXXXXXXXXX"
 }
}

テスト

取得したIdTokenを入力

※レスポンス
{
 "aud": "XXXXXXXXXXXXXXXXXXXX",
 "auth_time": "1617767733",
 "cognito:username": "yone",
 "email": "yone@office-yone.com",
 "event_id": "XXXXXXXXXXXXXXXXXXXX",
 "exp": "Wed Apr 07 04:55:33 UTC 2021",
 "iat": "Wed Apr 07 03:55:33 UTC 2021",
 "iss": "XXXXXXXXXXXXXXXXXXXX",
 "sub": "XXXXXXXXXXXXXXXXXXXX",
 "token_use": "id"
}

設定

メソッドにオーソライザーを設定

メソッドリクエスト > 認可 > 作成したオーソライザーを指定

実行

リクエストヘッダーにAuthorizationを設定
値は取得したIdToken

Follow me!

前の記事

MySQL システム変数

次の記事

AWS API Lambda