AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

connectionId またはカスタムトークンを API Gateway WebSocket API のヘッダーとして VPC リンク統合に渡すにはどうすればよいですか?

所要時間2分
0

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 を使用する

次の手順を実行します。

  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 の統合

コメントはありません

関連するコンテンツ