Configuration du mappage de données pour les API WebSocket dans API Gateway - Amazon API Gateway

Configuration du mappage de données pour les API WebSocket dans API Gateway

Le mappage de données vous permet de mapper des données d’une demande de routage vers une intégration backend.

Note

Le mappage de données pour les API WebSocket n’est pas pris en charge dans l’AWS Management Console. Vous devez utiliser l’AWS CLI, AWS CloudFormation ou un kit SDK pour configurer le mappage de données.

Mappage des données de demande de routage à des paramètres de demande d’intégration

Les paramètres de demande d’intégration peuvent être mappés à partir de n’importe quels paramètres de demande de routage défini, du corps de la demande, des variables context ou stage, ainsi que des valeurs statiques.

Le tableau suivant présente les expressions de mappage des données des demandes d’intégration. Dans le tableau, PARAM_NAME est le nom d’un paramètre de demande de routage du type de paramètre donné. Il doit respecter le modèle d’expression régulière '^[a-zA-Z0-9._$-]+$]'. JSONPath_EXPRESSION est une expression JSONPath pour un champ JSON du corps de la demande.

Source de données mappée Expression de mappage
Chaîne de requête de demande (prise en charge uniquement pour le routage $connect) route.request.querystring.PARAM_NAME
En-tête de demande (prise en charge uniquement pour le routage $connect) route.request.header.PARAM_NAME
Chaîne de demande à plusieurs valeurs (prise en charge uniquement pour le routage $connect) route.request.multivaluequerystring.PARAM_NAME
En-tête de demande à plusieurs valeurs (prise en charge uniquement pour le routage $connect) route.request.multivalueheader.PARAM_NAME
Corps de la demande route.request.body.JSONPath_EXPRESSION
Variables d’étape stageVariables.VARIABLE_NAME
Variables de contexte context.VARIABLE_NAME qui doit être l’une des variables de contexte prises en charge.
Valeur statique 'STATIC_VALUE'. STATIC_VALUE est une chaîne littérale qui doit être placée entre guillemets simples.

Lorsque vous créez un mappage de données à l’aide de l’AWS CLI, veillez à suivre le bon format pour utiliser des littéraux avec des chaînes dans l’AWS CLI. Pour plus d’informations, consultez Using quotation marks and literals with strings in the AWS CLI dans le Guide d’utilisateur AWS Command Line Interface.

Exemples

Les exemples AWS CLI suivants configurent les mappages de données. Pour obtenir un exemple de modèle AWS CloudFormation, consultez websocket-data-mapping.yaml.

Mapper ConnectionID d’un client à un en-tête dans une demande d’intégration

La commande update-integration suivante mappe l’connectionId d’un client à un en-tête connectionId de la demande adressée à une intégration backend :

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

Mapper un paramètre de chaîne de demande à un en-tête dans une demande d’intégration

L’exemple suivant mappe un paramètre de chaîne de requête authToken à un en-tête authToken de la demande d’intégration.

  1. Utilisez la commande update-route suivante pour ajouter le paramètre de chaîne de requête authToken aux paramètres de demande de la route.

    aws apigatewayv2 update-route --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameters '{"route.request.querystring.authToken": {"Required": false}}'
  2. Utilisez la commande update-integration suivante pour mapper le paramètre de chaîne de requête à l’en-tête authToken de la demande adressée à l’intégration backend.

    aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.authToken'='route.request.querystring.authToken'
  3. (Facultatif) Si nécessaire, utilisez la commande delete-route-request-parameter suivante pour supprimer le paramètre de chaîne de requête authToken des paramètres de demande de la route.

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