API Gateway + LambdaでAPI Keyの値を取得する
やりたいこと
API GatewayをAPI Keyで認証かけた時に、認証されたAPI Keyの値をLambda側で扱いたい。
Lambdaにくる値のイメージ
API Gateway Proxyで実装するとこんな値がきます。
{
"httpMethod": "DELETE",
"headers": {
"Accept": "*/*",
"CloudFront-Forwarded-Proto": "https",
"CloudFront-Is-Desktop-Viewer": "true",
"CloudFront-Is-Mobile-Viewer": "false",
"CloudFront-Is-SmartTV-Viewer": "false",
"CloudFront-Is-Tablet-Viewer": "false",
"CloudFront-Viewer-Country": "JP",
"x-api-key": "XXXXXX",
},
問題点
x-api-key
に表記揺れが発生するケースがあります。
X-API-KEY=XXX
だとheaders.X-API-KEY: XXX
。
X-API-key=XXX
だとheaders.X-API-key: XXX
。
対応
とりあえずheadersのキーに対してArray.findをかけて、比較する際に大文字 or 小文字に寄せることに。
import { APIGatewayProxyEvent } from 'aws-lambda'
const getAPIKey = (event: APIGatewayProxyEvent): string => {
const key = Object.keys(event.headers).find(header => {
return header.toLocaleLowerCase() === "x-api-key"
})
return event.headers[key] || ''
}
Author And Source
この問題について(API Gateway + LambdaでAPI Keyの値を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/motchi0214/items/4feb1eda676509fb830f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .