Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Configuration d’un appel asynchrone de la fonction Lambda du backend

Mode de mise au point
Configuration d’un appel asynchrone de la fonction Lambda du backend - Amazon API Gateway

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Dans l’intégration autre que de proxy (personnalisée) Lambda, la fonction Lambda du backend est, par défaut, invoquée de façon synchrone. Il s’agit du comportement souhaité pour la plupart des opérations d’API REST. Dans certaines applications, toutefois, les appels doivent avoir lieu de façon asynchrone (sous la forme d’une opération par lots ou d’une opération à latence longue), généralement par un autre composant du backend. Dans ce cas, la fonction Lambda du backend est invoquée de façon asynchrone et la méthode d’API REST frontale ne renvoie aucun résultat.

Vous pouvez également configurer la fonction Lambda pour une intégration Lambda autre que de proxy de sorte qu’elle soit invoquée de façon asynchrone en spécifiant 'Event' en tant que type d’appel. La procédure à suivre est expliquée ci-après :

Configuration de l’appel asynchrone Lambda dans la console API Gateway

Pour que tous les appels soient asynchrones :

  • Dans Requête d’intégration, ajoutez un en-tête X-Amz-Invocation-Type avec une valeur statique de 'Event'.

Pour que les clients décident si les appels sont asynchrones ou synchrones :

  1. Dans Requête de méthode, ajoutez un en-tête InvocationType.

  2. Dans Requête d’intégration, ajoutez un en-tête X-Amz-Invocation-Type avec une expression de mappage de method.request.header.InvocationType.

  3. Les clients peuvent inclure l’en-tête InvocationType: Event dans les requêtes API pour les appels asynchrones, ou InvocationType: RequestResponse pour les appels synchrones.

Configuration de l’appel asynchrone de Lambda à l’aide d’OpenAPI

Pour que tous les appels soient asynchrones :

  • Ajoutez l'X-Amz-Invocation-Typeen-tête à la x-amazon-apigateway-integrationsection.

    "x-amazon-apigateway-integration" : { "type" : "aws", "httpMethod" : "POST", "uri" : "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:123456789012:function:my-function/invocations", "responses" : { "default" : { "statusCode" : "200" } }, "requestParameters" : { "integration.request.header.X-Amz-Invocation-Type" : "'Event'" }, "passthroughBehavior" : "when_no_match", "contentHandling" : "CONVERT_TO_TEXT" }

Pour que les clients décident si les appels sont asynchrones ou synchrones :

  1. Ajoutez l’en-tête suivant sur tout objet d’élément de chemin OpenAPI.

    "parameters" : [ { "name" : "InvocationType", "in" : "header", "schema" : { "type" : "string" } } ]
  2. Ajoutez l'X-Amz-Invocation-Typeen-tête à la x-amazon-apigateway-integrationsection.

    "x-amazon-apigateway-integration" : { "type" : "aws", "httpMethod" : "POST", "uri" : "arn:aws:apigateway:us-east-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-2:123456789012:function:my-function/invocations", "responses" : { "default" : { "statusCode" : "200" } }, "requestParameters" : { "integration.request.header.X-Amz-Invocation-Type" : "method.request.header.InvocationType" }, "passthroughBehavior" : "when_no_match", "contentHandling" : "CONVERT_TO_TEXT" }
  3. Les clients peuvent inclure l’en-tête InvocationType: Event dans les requêtes API pour les appels asynchrones, ou InvocationType: RequestResponse pour les appels synchrones.

Configurer l'appel asynchrone Lambda à l'aide de AWS CloudFormation

Les AWS CloudFormation modèles suivants montrent comment configurer les AWS::ApiGateway::Method appels asynchrones.

Pour que tous les appels soient asynchrones :

AsyncMethodGet: Type: 'AWS::ApiGateway::Method' Properties: RestApiId: !Ref Api ResourceId: !Ref AsyncResource HttpMethod: GET ApiKeyRequired: false AuthorizationType: NONE Integration: Type: AWS RequestParameters: integration.request.header.X-Amz-Invocation-Type: "'Event'" IntegrationResponses: - StatusCode: '200' IntegrationHttpMethod: POST Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${myfunction.Arn}$/invocations MethodResponses: - StatusCode: '200'

Pour que les clients décident si les appels sont asynchrones ou synchrones :

AsyncMethodGet: Type: 'AWS::ApiGateway::Method' Properties: RestApiId: !Ref Api ResourceId: !Ref AsyncResource HttpMethod: GET ApiKeyRequired: false AuthorizationType: NONE RequestParameters: method.request.header.InvocationType: false Integration: Type: AWS RequestParameters: integration.request.header.X-Amz-Invocation-Type: method.request.header.InvocationType IntegrationResponses: - StatusCode: '200' IntegrationHttpMethod: POST Uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${myfunction.Arn}$/invocations MethodResponses: - StatusCode: '200'

Les clients peuvent inclure l’en-tête InvocationType: Event dans les requêtes API pour les appels asynchrones, ou InvocationType: RequestResponse pour les appels synchrones.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.