connectionId またはカスタムトークンを、Amazon API Gateway WebSocket API のヘッダーとして VPC リンク統合に渡したいと考えています。
簡単な説明
WebSocket API のバックエンドからコールバックレスポンスを送信するには、connectionId が必要です。デフォルトでは、WebSocket API は connectionId を VPC リンク統合に渡しません。
connectionID またはカスタムトークンを渡すには、API Gateway コンソールと AWS コマンドラインインターフェイス (AWS CLI) を使用するか、AWS CloudFormation を使用します。
解決策
**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
API Gateway コンソールと AWS CLI を使用する
次の手順を実行します。
-
指示に従って REST API VPC リンクを作成し、Network Load Balancer に関連付けます。
-
指示に従って WebSocket API 統合をセットアップし、VPC リンクプライベート統合エンドポイントを作成します。
-
統合 ID を取得するには、AWS CLI コマンド get-integrations を実行します。
aws apigatewayv2 get-integrations --api-id <api-id>
-
integration.json という名前の JSON ファイルを次の形式で作成して保存します。
{
"ApiId": "<api-id>",
"IntegrationId": "<integration id retrieved from previous step>",
"RequestParameters": {
"integration.request.header.ConnectionId": "context.connectionId",
"integration.request.header.<header-key>": "route.request.body.<parameter>",
"integration.request.querystring.<querysting-key>": "'static value'"
}
}
-
統合を更新するには、以下のような AWS CLI コマンド update-integration を実行します。
aws apigatewayv2 update-integration --cli-input-json file://integration.json
-
これらの変更を適用するには、WebSocket API をデプロイする手順に従ってください。
CloudFormation を使用する
CloudFormation を使用して API Gateway を管理する場合は、 AWS::ApiGatewayV2::Integration リソースを使用して次のようなリクエストパラメータを設定します。
Integration:
Type: AWS::ApiGatewayV2::Integration
Properties:
ApiId: !Ref websocket
ConnectionId: !Ref <VPC-Link-connection-id>
ConnectionType: VPC_LINK
IntegrationMethod: <HTTP method to backend >
IntegrationType: <HTTP_PROXY/HTTP>
IntegrationUri: "<endpoint-url>"
RequestParameters:
"integration.request.header.connectionId": "context.connectionId" #passing context variable 'connectionId' as ConnectionId header to backend
"integration.request.header.<header-key>": "route.request.body.<parameter>" #passing a request body parameter as header to backend
"integration.request.querystring.<querystring-key>": "'static value'" #passing static value as querystring to backend
データマッピングを使用して、ルートリクエストから VPC リンクバックエンド統合にデータをマッピングできます。詳細については、「ルートリクエストデータを統合リクエストパラメータにマッピングする
」を参照してください。
関連情報
API Gateway での WebSocket API の統合