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”
}
}
テスト
※レスポンス
{
”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