Impostazione della mappatura dei dati per API WebSocket in Gateway API - Amazon API Gateway

Impostazione della mappatura dei dati per API WebSocket in Gateway API

La mappatura dei dati consente di mappare i dati da una richiesta di instradamento a un'integrazione back-end.

Nota

La mappatura dei dati per API WebSocket non è supportato in AWS Management Console. Per configurare la mappatura dei dati, è necessario utilizzare AWS CLI, AWS CloudFormation, o un SDK.

Come mappare i dati di richiesta di instradamento ai parametri di richiesta di integrazione

I parametri della richiesta di integrazione possono essere mappati da tutti i parametri di richiesta di instradamento definiti, dal corpo della richiesta context o dalle variabili stage e dai valori statici.

La tabella seguente mostra le espressioni di mappatura dei dati delle richieste di integrazione. Nella tabella PARAM_NAME è il nome del parametro di una richiesta di instradamento del tipo di parametro specifico. Deve corrispondere all'espressione regolare '^[a-zA-Z0-9._$-]+$]'. JSONPath_EXPRESSION è un'espressione JSONPath di un campo JSON del corpo della richiesta.

Origine dati mappata Espressione di mappatura
Stringa di query di richiesta (supportata solo per l'instradamento $connect) route.request.querystring.PARAM_NAME
Intestazione della richiesta (supportata solo per l'instradamento $connect) route.request.header.PARAM_NAME
Stringa di query della richiesta a più valori (supportata solo per l'instradamento $connect) route.request.multivaluequerystring.PARAM_NAME
Intestazione della richiesta a più valori (supportata solo per l'instradamento $connect) route.request.multivalueheader.PARAM_NAME
Corpo di richiesta route.request.body.JSONPath_EXPRESSION
Variabili di fase stageVariables.VARIABLE_NAME
Variabili di contesto context.VARIABLE_NAME che deve essere una delle variabili di contesto supportate.
Valore statico 'STATIC_VALUE'. STATIC_VALUE è una stringa letterale e deve essere racchiusa tra virgolette singole.

Quando si crea una mappatura dei dati, l’utilizzo di AWS CLI garantisce di seguire il formato corretto per l’uso di valori letterali con stringhe in AWS CLI. Per ulteriori informazioni, consulta Using quotation marks and literals with strings in the AWS CLI nella Guida per l’utente di AWS Command Line Interface.

Esempi

Gli esempi seguenti dell'AWS CLI configurano le mappature di dati. Per un modello AWS CloudFormation di esempio, consulta websocket-data-mapping.yaml.

Mappare connectionId di un client a un'intestazione in una richiesta di integrazione

Il comando update-integration seguente mappa connectionId di un client a un’intestazione connectionId nella richiesta a un’integrazione backend.

aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.connectionId'='context.connectionId'

Mappatura di un parametro di stringa di query a un'intestazione in una richiesta di integrazione

Il seguente esempio mappa un parametro della stringa di query authToken a un’intestazione authToken nella richiesta di integrazione.

  1. Utilizza il seguente comando update-route per aggiungere il parametro della stringa di query authToken ai parametri della richiesta di instradamento.

    aws apigatewayv2 update-route --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameters '{"route.request.querystring.authToken": {"Required": false}}'
  2. Utilizza il seguente comando update-integration per mappare il parametro della stringa di query all’intestazione authToken nella richiesta di integrazione backend.

    aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.authToken'='route.request.querystring.authToken'
  3. (Facoltativo) Se necessario, utilizza il seguente comando delete-route-request-parameter per eliminare il parametro della stringa di query authToken dai parametri della richiesta di instradamento.

    aws apigatewayv2 delete-route-request-parameter \ --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameter-key 'route.request.querystring.authToken'