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!

次ã®è¨˜äº‹

AWS API Lambda