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