Restrictions sur Lambda@Edge - Amazon CloudFront

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.

Restrictions sur Lambda@Edge

Les restrictions suivantes s'appliquent uniquement à Lambda@Edge.

Pour obtenir des informations sur les quotas, veuillez consulter Quotas sur Lambda@Edge.

DNSrésolution

CloudFront effectue une DNS résolution sur le nom de domaine d'origine avant d'exécuter la fonction Lambda @Edge de votre demande d'origine. Si le DNS service de votre domaine rencontre des problèmes et ne CloudFront parvient pas à résoudre le nom de domaine pour obtenir l'adresse IP, votre fonction Lambda @Edge ne sera pas invoquée. CloudFrontrenverra un code d'état HTTP 502 (Bad Gateway) au client. Pour de plus amples informations, veuillez consulter DNSerreur (NonS3OriginDnsError).

Pour plus d'informations sur la gestion du DNS basculement, consultez la section Configuration du DNS basculement dans le manuel Amazon Route 53 Developer Guide.

HTTPcodes de statut

Les fonctions Lambda @Edge pour les événements de réponse du spectateur ne peuvent pas modifier le code d'HTTPétat de la réponse, que la réponse provienne de l'origine ou du CloudFront cache.

Version de la fonction Lambda

Vous devez utiliser une version numérotée de la fonction Lambda, et non $LATEST ou des alias.

Région de Lambda

La fonction Lambda doit résider dans la région USA Est (Virginie du Nord).

Autorisations de rôle Lambda

Le rôle IAM d'exécution associé à la fonction Lambda doit permettre aux principaux du service lambda.amazonaws.com d'edgelambda.amazonaws.com.rproxy.goskope.comassumer ce rôle. Pour de plus amples informations, veuillez consulter Configuration IAM des autorisations et des rôles pour Lambda @Edge.

Fonctionnalités de Lambda

Les fonctionnalités Lambda suivantes ne sont pas prises en charge par Lambda@Edge :

Environnements d'exécution pris en charge

Lambda@Edge prend en charge les fonctions Lambda avec les environnements d'exécution suivants :

Node.js

Python

  • Node.js 20

  • Node.js 18

  • Node.js 16¹

  • Node.js 14m²

  • Node.js 12²

  • Node.js 10²

  • Node.js 8m²

  • Node.js 6m²

  • Python 3.12

  • Python 3.11

  • Python 3.10

  • Python 3.9

  • Python 3.8

  • Python 3.7

¹ Cette version de Node.js est arrivée à expiration et sera bientôt déconseillée par. AWS Lambda

²Cette version de Node.js est arrivée en fin de vie et est totalement obsolète par. AWS Lambda

Vous ne pouvez pas créer ou mettre à jour des fonctions avec des versions obsolètes de Node.js. Vous ne pouvez associer les fonctions existantes à ces versions qu'à des CloudFront distributions. Les fonctions associées à ces versions et associées à des distributions continueront de s'exécuter. Nous vous recommandons toutefois de déplacer votre fonction vers des versions plus récentes de Node.js. Pour plus d'informations, consultez la politique de dépréciation des environnements d'exécution dans le manuel du AWS Lambda développeur et le calendrier de publication de Node.js sur. GitHub

Astuce

Il est recommandé d'utiliser les dernières versions des environnements d'exécution fournis pour améliorer les performances et créer de nouvelles fonctionnalités.

CloudFronten-têtes

Les fonctions Lambda @Edge peuvent lire, modifier, supprimer ou ajouter n'importe lequel des CloudFront en-têtes répertoriés dans. Ajouter des en-têtes de CloudFront demande

Remarques
  • Si vous CloudFront souhaitez ajouter ces en-têtes, vous devez les configurer CloudFront pour les ajouter à l'aide d'une politique de cache ou d'une politique de demande d'origine.

  • CloudFront ajoute les en-têtes après l'événement de demande de visualisation, ce qui signifie que les en-têtes ne sont pas disponibles pour les fonctions Lambda @Edge dans une demande de visualisation. Les en-têtes ne sont disponibles que pour les fonctions Lambda @Edge dans une demande d'origine et une réponse d'origine.

  • Si la demande du lecteur inclut des en-têtes portant ces noms et que vous avez configuré pour ajouter ces en-têtes CloudFront à l'aide d'une politique de cache ou d'une politique de demande d'origine, les valeurs d'en-tête CloudFront figurant dans la demande du lecteur sont alors remplacées. Les fonctions orientées vers le spectateur voient la valeur d'en-tête de la demande du lecteur, tandis que les fonctions orientées vers l'origine voient la valeur d'en-tête ajoutée. CloudFront

  • Si une fonction de demande d'affichage ajoute l'CloudFront-Viewer-Countryen-tête, elle échoue à la validation et CloudFront renvoie HTTP le code d'état 502 (Bad Gateway) au visualiseur.

Restrictions relatives au corps de la requête avec l'option Inclure le corps

Lorsque vous choisissez l'option Inclure le corps pour exposer le corps de la requête à votre fonction Lambda @Edge, les informations et limites de taille suivantes s'appliquent aux parties du corps exposées ou remplacées.

  • CloudFront base64 code toujours le corps de la requête avant de l'exposer à Lambda @Edge.

  • Si le corps de la requête est volumineux, CloudFront tronquez-le avant de l'exposer à Lambda @Edge, comme suit :

    • Pour les événements de requête d'utilisateur, le corps est tronqué à 40 Ko.

    • Pour les événements de requête de l'origine, le corps est tronqué à 1 Mo.

  • Si vous accédez au corps de la demande en lecture seule, CloudFront envoie le corps de la demande d'origine complet à l'origine.

  • Si votre fonction Lambda @Edge remplace le corps de la requête, les limites de taille suivantes s'appliquent au corps renvoyé par la fonction :

    • Si la fonction Lambda@Edge renvoie le corps en texte brut :

      • Pour les événements de demande d'affichage, la limite de corps est de 40 Ko.

      • Pour les événements de demande d'origine, la limite corporelle est de 1 Mo.

    • Si la fonction Lambda@Edge renvoie le corps en tant que texte codé base64 :

      • Pour les événements de demande d'affichage, la limite de corps est de 53,2 Ko.

      • Pour les événements de demande d'origine, la limite de corps est de 1,33 Mo.

Note

Si votre fonction Lambda @Edge renvoie un corps qui dépasse ces limites, votre demande échouera avec un code d'état HTTP 502 ()Erreur de validation Lambda. Nous vous recommandons de mettre à jour votre fonction Lambda @Edge afin que le corps ne dépasse pas ces limites.

Délai de réponse et délai de maintien en vie (origines personnalisées uniquement)

Si vous utilisez les fonctions Lambda @Edge pour définir le délai de réponse ou le délai de maintien en vie pour les origines de votre distribution, vérifiez que vous spécifiez une valeur que votre origine peut prendre en charge. Pour de plus amples informations, veuillez consulter Quotas de délai de réponse et de maintien en vie.