

# Configuration
<a name="gateway-interceptors-configuration"></a>

Les intercepteurs peuvent être configurés avec un paramètre d'entrée appelé `passRequestHeaders` 

## Configuration de l'entrée de l'intercepteur
<a name="gateway-interceptors-configuration-input"></a>

Lors de la configuration des intercepteurs, vous pouvez spécifier si les en-têtes de requête doivent être transmis à la fonction d'interception à l'aide du champ : `passRequestHeaders`

 **passe RequestHeaders**   
Valeur booléenne qui détermine si les en-têtes de requête sont inclus dans la charge utile d'entrée de l'intercepteur. Lorsqu'il est défini sur`true`, tous les en-têtes de requête seront transmis à votre fonction Lambda d'interception. Lorsqu'il est défini sur `false` (par défaut), les en-têtes ne sont pas inclus.  
Soyez prudent lorsque vous définissez ce paramètre sur, `true` car les en-têtes de demande peuvent contenir des informations sensibles telles que des jetons d'authentification et des informations d'identification.

 **Filtre de charge utile**   
Pour les cibles HTTP (AgentCore Runtime et passthrough) et les cibles d'inférence, qui partagent la forme de la charge utile de l'`http`intercepteur, un filtre facultatif exclut les champs de la charge utile d'entrée de l'intercepteur. L'invocation synchrone Lambda a une limite de 6 Mo pour la demande et la réponse combinées, de sorte que l'exclusion d'un corps de réponse volumineux permet de maintenir la charge utile dans cette limite. Pour exclure le corps de la réponse, définissez `payloadFilter.exclude` une liste contenant le `RESPONSE_BODY` champ :  

```
{
  "inputConfiguration": {
    "passRequestHeaders": false,
    "payloadFilter": {
      "exclude": [{ "field": "RESPONSE_BODY" }]
    }
  }
}
```
 `passRequestHeaders`est obligatoire dans`inputConfiguration`. Incluez-le (par exemple`"passRequestHeaders": false`) à côté`payloadFilter`.
Lorsque le corps de la réponse est exclu, le `body` champ de la charge utile d'entrée de l'intercepteur de réponse est. `null` Votre fonction peut toujours inspecter le`statusCode`, et `contentType``headers`, et peut injecter des en-têtes ou remplacer le code d'état. Si votre fonction revient`body: null`, la passerelle utilise le corps de réponse d'origine.

## Configuration des intercepteurs lors de la création de la passerelle
<a name="gateway-interceptors-configuration-creation"></a>

Les exemples suivants montrent comment créer une passerelle avec des intercepteurs `passRequestHeaders` définis sur : `true`

**Example**  

1. Avec la AgentCore CLI, créez et déployez d'abord la passerelle, puis configurez les intercepteurs à l'aide de la AWS CLI ou du SDK AWS Python (Boto3).

   Créez la passerelle :

   ```
   agentcore add gateway \
     --name my-gateway-with-headers \
     --authorizer-type CUSTOM_JWT \
     --discovery-url "https://cognito-idp.us-west-2.amazonaws.com/some-user-pool/.well-known/openid-configuration" \
     --allowed-audience "api.example.com"
   agentcore deploy
   ```

   Après le déploiement, configurez les intercepteurs sur la passerelle à l'aide de la `update-gateway` commande AWS CLI ou du SDK AWS Python (Boto3) comme indiqué dans les autres onglets.

1. Utilisez la commande AWS CLI suivante pour créer une passerelle avec des intercepteurs configurés pour transmettre des en-têtes de demande :

   ```
   aws bedrock-agentcore-control create-gateway \
     --name my-gateway-with-headers \
     --role-arn arn:aws:iam::123456789012:role/my-gateway-service-role \
     --protocol-type MCP \
     --authorizer-type CUSTOM_JWT \
     --authorizer-configuration '{
       "customJWTAuthorizer": {
         "discoveryUrl": "https://cognito-idp.us-west-2.amazonaws.com/some-user-pool/.well-known/openid-configuration",
         "allowedClients": ["clientId"]
       }
     }' \
     --interceptor-configurations '[{
         "interceptor": {
             "lambda": {
               "arn":"arn:aws:lambda:us-west-2:123456789012:function:my-interceptor-lambda"
             }
         },
         "interceptionPoints": ["REQUEST", "RESPONSE"],
         "inputConfiguration": {
           "passRequestHeaders": true
         }
     }]'
   ```

1. Utilisez le code Python suivant avec le SDK AWS Python (Boto3) pour créer une passerelle avec des intercepteurs configurés pour transmettre des en-têtes de requête :

   ```
   import boto3
   
   # Initialize the AgentCore client
   client = boto3.client('bedrock-agentcore-control')
   
   # Create a gateway
   gateway = client.create_gateway(
     name="my-gateway-with-headers",
     roleArn="arn:aws:iam::123456789012:role/my-gateway-service-role",
     protocolType="MCP",
     authorizerType="CUSTOM_JWT",
     authorizerConfiguration={
         "customJWTAuthorizer": {
             "discoveryUrl": "https://cognito-idp.us-west-2.amazonaws.com/some-user-pool/.well-known/openid-configuration",
             "allowedClients": ["clientId"]
         }
     },
     interceptorConfigurations=[{
         "interceptor": {
             "lambda": {
               "arn":"arn:aws:lambda:us-west-2:123456789012:function:my-interceptor-lambda"
             }
         },
         "interceptionPoints": ["REQUEST", "RESPONSE"],
         "inputConfiguration": {
           "passRequestHeaders": True
         }
     }]
   )
   
   print(f"MCP Endpoint: {gateway['gatewayUrl']}")
   ```

## Mise à jour des configurations d'intercepteurs
<a name="gateway-interceptors-configuration-update"></a>

Vous pouvez mettre à jour les configurations existantes de l'intercepteur de passerelle pour modifier le `passRequestHeaders` réglage ou d'autres paramètres à l'aide des opérations de l'API de mise à jour de la passerelle.