APIGatewayのWebSocketAPIに統合したLambda関数(node.js)を、RDSインスタンスを配置しているプライベートサブネットにアタッチ、VPCからAPIGatewayにアクセスするために、VPCエンドポイントを設定しています。APIGatewayに接続したクライアントにレスポンスを返却するために、ApiGatewayManagementApiのpostToConnectionを実行すると、ForbiddenExceptionが発生し正常に実行できません。
VPCにアタッチしたLambdaから、VPCエンドポイントを利用してAPI Gatewayにアクセスする方法をご教授ください。。
■設定内容
(1)Lambda関数にRDSを配置したVPCプライベートサブネットをアタッチ
(2)上記VPCにエンドポイントを作成(サービス名:com.amazonaws.ap-northeast-1.execute-api)
(3)Lambda関数からAPIGatewayを実行(以下該当ロジック抜粋)
const AWS = require('aws-sdk');
exports.handler = async (event, context) => {
const callbackAPI = new AWS.ApiGatewayManagementApi({
apiVersion: '2018-11-29',
endpoint:
event.requestContext.domainName + '/' + event.requestContext.stage,
});
await callbackAPI
.postToConnection({ ConnectionId: event.requestContext.connectionId, Data: JSON.stringify('コールバックするデータ') })
.promise();
}