Modes d'appel Lambda - Présentation de la sécurité d'AWS Lambda

Modes d'appel Lambda

L'API Invoke peut être appelée selon deux modes : le mode événement et le mode demande-réponse.

  • Le mode événement place en file d'attente la charge utile pour un appel asynchrone.

  • Le mode demande-réponse appelle de manière synchrone la fonction avec la charge utile fournie et renvoie une réponse immédiatement.

Dans les deux cas, l'exécution de la fonction est toujours effectuée dans un environnement d'exécution Lambda, mais la charge utile emprunte des chemins différents. Pour en savoir plus, consultez la section « Environnements d'exécution Lambda » dans ce document.

Vous pouvez également utiliser d'autres services AWS qui effectuent des appels en votre nom. Le mode d'appel utilisé dépend du service AWS que vous utilisez et de la façon dont il est configuré. Pour en savoir plus sur la façon dont les autres services AWS s'intègrent à Lambda, consultez Utilisation d'AWS Lambda avec d'autres services.

Lorsque Lambda reçoit un appel demande-réponse, celui-ci est transmis directement au service d'appel. Si le service d'appel n'est pas disponible, les appelants peuvent temporairement placer en file d'attente la charge utile côté client afin de retenter l'appel un certain nombre de fois. Si le service d'appel reçoit la charge utile, il tente alors d'identifier un environnement d'exécution disponible pour la demande, puis transmet la charge utile à cet environnement d'exécution afin de terminer l'appel. S'il n'existe aucun environnement d'exécution ou qu'aucun n'est approprié, il en sera créé un de manière dynamique en réponse à la demande. Pendant le transit, les charges utiles d'appel envoyées au service d'appel sont sécurisées à l'aide du protocole TLS 1.2+. Le trafic au sein du service Lambda (depuis l'équilibreur de charge vers le bas) passe par un cloud privé virtuel (VPC) interne isolé, détenu par le service Lambda, au sein de la région AWS à laquelle la demande a été envoyée.

Diagramme illustrant le modèle d'appel selon le mode AWS Lambdademande-réponse.

Figure 2 – Modèle d'appel selon le mode AWS Lambdademande-réponse

Les charges utiles du mode d'appel événement sont toujours placées en file d'attente pour être traitées avant l'appel. Toutes les charges utiles sont placées, à des fins de traitement, dans une file d'attente Amazon Simple Queue Service (Amazon SQS). Les événements en file d'attente sont toujours sécurisés en transit à l'aide du protocole TLS 1.2+, mais ils ne sont actuellement pas chiffrés au repos. Les files d'attente Amazon SQS utilisées par Lambda sont gérées par le service Lambda. Vous ne pouvez pas les voir en tant que client. Les événements en file d'attente peuvent être stockés dans une file d'attente partagée, mais ils peuvent être migrés ou affectés à des files d'attente dédiées en fonction d'un certain nombre de facteurs que les clients ne contrôlent pas directement (par exemple, le taux d'appel, la taille des événements, etc.).

Les événements en file d'attente sont récupérés par lots par la flotte d'interrogateurs de Lambda. La flotte d'interrogateurs est un groupe d'instances EC2 dont le but est de traiter les appels en mode événement en file d'attente qui n'ont pas encore été traités. Lorsque la flotte d'interrogateurs récupère un événement en file d'attente qu'elle doit traiter, elle le fait en le transmettant au service d'appel, comme le ferait un client dans le cas d'un appel en mode demande-réponse.

Si l'appel ne peut pas être effectué, la flotte d'interrogateurs stocke temporairement l'événement, en mémoire, sur l'hôte jusqu'à ce qu'elle soit en mesure de terminer l'exécution ou jusqu'à ce que le nombre de tentatives d'exécution soit dépassé. Aucune donnée de charge utile n'est jamais écrite sur le disque de la flotte d'interrogateurs à proprement parler. La flotte d'interrogateurs peut être affectée à tous les clients AWS, ce qui permet de réduire le délai d'appel au maximum. Pour en savoir plus sur les services susceptibles d'accepter le mode d'appel événement, consultez la section Utilisation d'AWS Lambda avec d'autres services.