如何將連接 ID 或自訂傳遞給 VPC 連結整合作為 API Gateway WebSocket API 的標頭?

2 分的閱讀內容
0

我想將 connectionId 或自訂權杖傳遞給 VPC 連結整合,作為 Amazon API Gateway WebSocket API 的標頭。

簡短說明

需要 connectionId 才可從後端傳送 WebSocket API 的回叫回應。依預設,WebSocket API 不會將 connectionId 傳遞給 VPC 連結整合。

若要傳遞 connectionID 或自訂權杖,請使用 API Gateway 主控台和 AWS Command Line Interface (AWS CLI),或使用 AWS CloudFormation。

解決方法

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

使用 API Gateway 主控台和 AWS CLI

完成下列步驟:

  1. 依照指示建立 REST API VPC 連結,並將其與您的 Network Load Balancer 相關聯

  2. 依照指示設定 WebSocket API 整合,並建立 VPC 連結私有整合端點

  3. 若要擷取整合 ID,請執行 AWS CLI 命令 get-integrations

    aws apigatewayv2 get-integrations --api-id <api-id>
  4. 使用下列格式建立並儲存名為 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'"
      }
    }
  5. 若要更新整合,請執行類似下列的 AWS CLI 命令 update-integration

    aws apigatewayv2 update-integration --cli-input-json file://integration.json
  6. 若要套用這些變更,請依照指示部署 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 的整合

AWS 官方
AWS 官方已更新 5 個月前