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 toutes les fonctions périphériques
Les restrictions suivantes s'appliquent à toutes les fonctions périphériques, à la fois CloudFront Functions et Lambda@Edge.
Rubriques
Compte AWSPropriété
Pour associer une fonction périphérique à une distribution CloudFront, la fonction et la distribution doivent appartenir au même Compte AWS.
Combinaison de CloudFront Functions et de Lambda@Edge
Pour un comportement de cache donné, les restrictions suivantes s'appliquent :
-
Chaque type d'événement (requête de l'utilisateur, requête de l'origine, réponse de l'origine et réponse de l'utilisateur) ne peut posséder qu'une association de fonctions périphériques.
-
Vous ne pouvez pas combiner les fonctions CloudFront et Lambda@Edge dans des événements utilisateur (demande de l’utilisateur et réponse de l’utilisateur).
Toutes les autres combinaisons de fonctions périphériques sont autorisées. Le tableau suivant explique les combinaisons autorisées.
|
Fonctions CloudFront |
|||
|
Demande utilisateur |
Réponse utilisateur |
||
|
Lambda@Edge |
Demande utilisateur |
Non autorisée |
Non autorisée |
|
Demande de l’origine |
Autorisé |
Autorisé |
|
|
Réponse de l'origine |
Autorisé |
Autorisé |
|
|
Réponse utilisateur |
Non autorisée |
Non autorisée |
|
Codes d’état HTTP
CloudFront n’invoque pas les fonctions périphériques pour les événements de réponse utilisateur si l’origine renvoie un code de statut HTTP supérieur ou égal à 400.
Pour les événements de réponse d'origine, les fonctions Lambda@Edge sont appelées pour toutes les réponses d'origine, notamment lorsque l'origine renvoie un code de statut HTTP supérieur ou supérieur à 400. Pour plus d’informations, consultez Mise à jour des réponses HTTP dans des déclencheurs de réponse de l’origine.
En-têtes HTTP
Certains en-têtes HTTP ne sont pas autorisés, ce qui signifie qu'ils ne sont pas exposés aux fonctions de périphérie et que les fonctions ne peuvent pas les ajouter. Les autres en-têtes sont en lecture seule, ce qui signifie que les fonctions peuvent les lire, sans pouvoir les ajouter, les modifier ou le supprimer.
En-têtes non autorisés
Les en-têtes HTTP suivants ne sont pas exposés aux fonctions périphériques, et les fonctions ne peuvent pas les ajouter. Si votre fonction ajoute l'un de ces en-têtes, elle connaît un échec de la validation CloudFront et CloudFront renvoie le code de statut HTTP 502 (Passerelle incorrecte) à l'utilisateur.
-
Connection -
Expect -
Keep-Alive -
Proxy-Authenticate -
Proxy-Authorization -
Proxy-Connection -
Trailer -
Upgrade -
X-Accel-Buffering -
X-Accel-Charset -
X-Accel-Limit-Rate -
X-Accel-Redirect -
X-Amz-Cf-* -
X-Amzn-Auth -
X-Amzn-Cf-Billing -
X-Amzn-Cf-Id -
X-Amzn-Cf-Xff -
X-Amzn-Errortype -
X-Amzn-Fle-Profile -
X-Amzn-Header-Count -
X-Amzn-Header-Order -
X-Amzn-Lambda-Integration-Tag -
X-Amzn-RequestId -
X-Cache -
X-Edge-* -
X-Forwarded-Proto -
X-Real-IP
En-têtes en lecture seule
Les en-têtes suivants sont en lecture seule. Votre fonction peut les lire et les utiliser comme entrée de la logique de la fonction, mais elle ne peut pas modifier les valeurs. Si votre fonction ajoute ou modifie un en-tête en lecture seule, la requête échoue dans la validation CloudFront., et CloudFront renvoie le code de statut HTTP 502 (Passerelle erronée) à l'utilisateur.
En-têtes en lecture seule pour les événements de demande de l'utilisateur
Les en-têtes suivants sont en lecture seule dans les événements de demande de l'utilisateur.
-
Content-Length -
Host -
Transfer-Encoding -
Via
En-têtes en lecture seule dans les événements de demande d'origine (Lambda@Edge uniquement)
Les en-têtes suivants sont en lecture seule dans les événements de demande d'origine, qui n'existent que dans Lambda@Edge.
-
Accept-Encoding -
Content-Length -
If-Modified-Since -
If-None-Match -
If-Range -
If-Unmodified-Since -
Transfer-Encoding -
Via
En-têtes en lecture seule dans les événements de réponse d'origine (Lambda@Edge uniquement)
Les en-têtes suivants sont en lecture seule dans les événements de réponse d'origine, qui n'existent que dans Lambda@Edge.
-
Transfer-Encoding -
Via
En-têtes en lecture seule dans les événements de réponse de l'utilisateur
Les en-têtes suivants sont en lecture seule dans les événements de réponse d’utilisateur pour les fonctions CloudFront et Lambda@Edge.
-
Warning -
Via
Les en-têtes suivants sont en lecture seule dans les événements de réponse d'utilisateur pour Lambda@Edge.
-
Content-Length -
Content-Encoding -
Transfer-Encoding
Chaînes de requête
Les restrictions suivantes s'appliquent aux fonctions qui lisent, mettent à jour ou créent une chaîne de requête dans un URI de demande.
-
(Lambda@Edge uniquement) Pour accéder à la chaîne de requête dans une fonction de demande de l'origine ou de réponse de l'origine, votre stratégie de cache ou stratégie de demande de l'origine doit être définie sur Toutes pour Chaînes de requête.
-
Une fonction peut créer ou mettre à jour une chaîne de requête pour les événements de demande de l'utilisateur et de demande de l'origine (les événements de demande de l'origine n'existent que dans Lambda@Edge).
-
Une fonction peut lire une chaîne de requête, mais ne peut pas en créer ou en mettre à jour, pour les événements de réponse de l'origine et de réponse de l'utilisateur (les événements de réponse de l'origine n'existent que dans Lambda@Edge).
-
Si une fonction crée ou met à jour une chaîne de requête, les restrictions suivantes s'appliquent :
-
La chaîne de requête mise à jour ne peut pas inclure des espaces, des caractères de contrôle ou l'identificateur de fragment (
#). -
La taille totale de l’URI, comprenant la chaîne de requête, doit être inférieure à 8 192 caractères.
-
Nous vous recommandons d'utiliser l'encodage de pourcentage pour l'URI et la chaîne de requête. Pour plus d’informations, consultez Encodage de l’URI, de la chaîne de requête et des en-têtes.
-
URI
Si une fonction modifie l'URI pour une demande, cela ne modifie pas le comportement du cache pour la demande ou l'origine vers laquelle la demande est transférée.
La taille totale de l’URI, comprenant la chaîne de requête, doit être inférieure à 8 192 caractères.
Encodage de l’URI, de la chaîne de requête et des en-têtes
Les valeurs de l’URI, de la chaîne de requête et des en-têtes transmises aux fonctions de périphérie sont encodées en UTF-8. Votre fonction doit utiliser l’encodage UTF-8 pour les valeurs d’URI, de chaîne de requête et de l’en-tête qu’elle renvoie. L'encodage de pourcentage est compatible avec l'encodage UTF-8.
La liste suivante explique comment CloudFront gère l’encodage de l’URI, de la chaîne de requête et des en-têtes :
-
Lorsque les valeurs de la requête sont codées en UTF-8, CloudFront les transfère à votre fonction sans les modifier.
-
Lorsque les valeurs de la requête sont codées en ISO 8859-1
, CloudFront les convertit en UTF-8 avant de les transmettre les valeurs à votre fonction. -
Si les valeurs figurant dans la demande sont codées à l'aide d'un autre encodage de caractères, CloudFront suppose qu'elles sont codées en ISO 8859-1 et essaie de convertir les caractères ISO 8859-1 en UTF-8.
Important
Les caractères convertis peuvent résulter d'une interprétation inexacte des valeurs de la demande de l'origine. Cela peut conduire votre fonction ou votre origine à produire un résultat indésirable.
Les valeurs d’URI, de chaîne de requête et des en-têtes que CloudFront transmet à votre origine dépendent de la modification de ces valeurs par une fonction :
-
Si une fonction ne modifie pas l’URI, la chaîne de requête ou l’en-tête, CloudFront transmet les valeurs reçues dans la demande à votre origine.
-
Si une fonction modifie l’URI, la chaîne de requête ou l’en-tête, CloudFront transmet les valeurs codées en UTF-8.
Microsoft Smooth Streaming
Vous ne pouvez pas utiliser des fonctions de périphérie avec une distribution CloudFront que vous utilisez pour le streaming de fichiers multimédias que vous avez transcodés au format Microsoft Smooth Streaming.
Identification
Vous ne pouvez pas ajouter de balises aux fonctions de périphérie. Pour plus d’informations sur le balisage dans CloudFront, consultez Étiquetage d’une distribution.