API Gateway + Lambda (NestJS)でカスタムドメインのAPI マッピングを使う時の注意点
AWSのAPI Gatewayには任意のパスを設定するAPIマッピング機能があります。 Example FROM: https://yourdomain.example.com/v3 TO: https://xxxx.e […]
広告ここから
広告ここまで
AWSのAPI Gatewayには任意のパスを設定するAPIマッピング機能があります。
Example
- FROM: https://yourdomain.example.com/v3
- TO: https://xxxx.execute-api.us-east-1.amazonaws.com/development
これを設定した場合、NestJSを使っているアプリケーションでは全てのパスがHTTP404になることがあります。
原因
Lambdaのeventの値を見るとわかるのですが、path
にマッピングで指定したパスが含まれています。
httpMethod: 'GET',
path: '/v3',
stage: 'development',
domainName: 'yourdomain.example.com',
そのため、使う側としては/sites
APIを呼び出しているつもりが、NestJS側では/v3/latest
というパスでリクエストを認識してしまっています。
対応
マッピングしたパスが不要なので、NestJSに渡す前にreplaceで除去してしまいましょう。
export const handler: APIGatewayProxyHandler = async (event, context) => {
if (Object.prototype.hasOwnProperty.call(event, 'path')) {
event.path = event.path.replace(/^\/v3\//, '/')
}
const app = new ServerlessNestjsApplicationFactory<AppModule>(AppModule);
const result = await app.run(event, context);
return result;
};
ブックマークや限定記事(予定)など
WP Kyotoサポーター募集中
WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。
14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。
広告ここから
広告ここまで