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 , consultez Quotas sur Lambda@Edge.

Résolution DNS

CloudFront effectue une résolution DNS sur le nom de domaine de l’origine avant d’exécuter la fonction Lambda@Edge de votre demande d’origine. Si le service DNS de votre domaine rencontre des problèmes et que CloudFront ne peut pas résoudre le nom de domaine pour obtenir l’adresse IP, votre fonction Lambda@Edge ne sera pas invoquée. CloudFront renvoie le code de statut HTTP 502 (Passerelle incorrecte) au client. Pour plus d’informations, consultez Erreur DNS (NonS3OriginDnsError).

Si la logique de votre fonction modifie le nom de domaine d’origine, CloudFront effectuera une autre résolution DNS sur le nom de domaine mis à jour une fois l’exécution de la fonction terminée.

Pour plus d’informations sur la gestion du basculement DNS, consultez Configuration du basculement DNS dans le Guide du développeur Amazon Route 53.

Codes d’état HTTP

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

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 Lambda

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

Autorisations de rôle Lambda

Le rôle d'exécution IAM associé à la fonction Lambda doit autoriser les principaux de service lambda.amazonaws.com et edgelambda.amazonaws.com à endosser le rôle. Pour plus d’informations, consultez Définition des autorisations et rôles IAM 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 dernières versions des environnements d’exécution Node.js et Python. Pour obtenir la liste des versions prises en charge et leurs futures dates d’obsolescence, consultez Environnements d’exécution pris en charge dans le Guide du développeur AWS Lambda.

Astuce
  • À titre de bonne pratique, privilégiez les versions les plus récentes des environnements d’exécution fournis afin de bénéficier des améliorations de performance et des nouvelles fonctionnalités.

  • Vous ne pouvez pas créer ni mettre à jour de fonctions avec des versions obsolètes de Node.js. Vous pouvez uniquement associer à vos distributions CloudFront des fonctions existantes utilisant ces versions. Les fonctions avec ces versions qui sont associées aux distributions continueront de s’exécuter. Toutefois, nous vous recommandons de déplacer votre fonction vers des versions plus récentes de Node.js. Pour plus d’informations, consultez Politique d’obsolescence de l’exécution dans le Guide du développeur AWS Lambda, et le calendrier de publication Node.js sur GitHub.

En-têtes CloudFront

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

Remarques
  • Si vous souhaitez que CloudFront ajoute ces en-têtes, vous devez le configurer dans ce sens à l’aide d’une stratégie de cache ou d’une stratégie de demande d’origine.

  • CloudFront ajoute les en-têtes après l’événement de demande utilisateur, ce qui signifie qu’ils ne sont pas disponibles pour les fonctions Lambda@Edge lors d’une demande utilisateur. 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 requête utilisateur inclut des en-têtes portant ces noms et que vous avez configuré CloudFront pour ajouter ces en-têtes à l'aide d'une stratégie de cache ou d'une stratégie de requête de l'origine, CloudFront écrase les valeurs d'en-tête qui figuraient dans la requête utilisateur. Les fonctions face à l'utilisateur voient la valeur de l'en-tête de la requête utilisateur, tandis que les fonctions face à l'origine voient la valeur de l'en-tête que CloudFront a ajoutée.

  • Si une fonction de demande utilisateur ajoute l’en-tête CloudFront-Viewer-Country, elle échoue lors de la validation, et CloudFront renvoie le code de statut HTTP 502 (Passerelle erronée) à l’utilisateur.

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 demande à votre fonction Lambda@Edge, les informations et les limites de taille suivantes s’appliquent aux parties du corps qui sont exposées ou remplacées.

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

  • Si le corps de la requête est volumineux, CloudFront le tronque comme suit 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 requête en lecture seule, CloudFront envoie le corps de la requête original complet à l'origine.

  • Si votre fonction Lambda@Edge remplace le corps de la demande, les limites de taille suivantes s’appliquent au corps que la fonction renvoie :

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

      • Pour les événements de demande utilisateur, la limite de taille du corps est fixée à 40 Ko.

      • Pour les événements de demande de l’origine, la limite de taille du corps est fixée à 1 Mo.

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

      • Pour les événements de demande utilisateur, la limite de taille du corps est fixée à 53,2 Ko.

      • Pour les événements de demande de l’origine, la limite de taille du corps est fixée à 1,33 Mo.

Note

Si votre fonction Lambda@Edge renvoie un corps qui dépasse ces limites, votre demande échouera avec un code de statut 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 d’attente des connexions actives (origines personnalisées uniquement)

Si vous utilisez des fonctions Lambda@Edge pour définir le délai de réponse ou le délai d’attente des connexions actives pour les origines de votre distribution, assurez-vous de définir une valeur que votre origine est capable de prendre en charge. Pour plus d’informations, consultez Quotas de délai de réponse et d’attente des connexions actives.