Alias de fonction Lambda - AWS Lambda

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.

Alias de fonction Lambda

Vous pouvez créer des alias pour votre fonction Lambda. Un alias Lambda est un pointeur vers une version de la fonction que vous pouvez mettre à jour. Les utilisateurs de la fonction peuvent accéder à la version de la fonction en utilisant l'alias Amazon Resource Name (ARN). Lorsque vous déployez une nouvelle version, vous pouvez mettre à jour l'alias pour utiliser la nouvelle version, ou diviser le trafic entre deux versions.

Création d'un alias de fonction (console)

Vous pouvez créer un alias de fonction à l'aide de la console Lambda.

Pour créer un alias
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Sélectionnez Alias, puis Create alias (Créer un alias).

  4. Sur la page Create alias (Créer un alias), procédez de la manière suivante :

    1. Renseignez le champ Name (Nom) pour l'alias.

    2. (Facultatif) Renseignez le champ Description de l'alias.

    3. Pour Version, choisissez une version de fonction vers laquelle vous souhaitez que l'alias pointe.

    4. (Facultatif) Pour configurer le routage sur l'alias, développez Weighted alias (Alias pondéré). Pour de plus amples informations, veuillez consulter Configuration du routage d’alias.

    5. Choisissez Enregistrer.

Gestion des alias avec l'API Lambda

Pour créer un alias à l'aide de AWS Command Line Interface (AWS CLI), utilisez la commande create-alias.

aws lambda create-alias --function-name my-function --name alias-name --function-version version-number --description " "

Pour modifier un alias afin qu'il pointe vers une nouvelle version de la fonction, utilisez la commande update-alias.

aws lambda update-alias --function-name my-function --name alias-name --function-version version-number

Pour créer un alias, utilisez la commande delete-alias.

aws lambda delete-alias --function-name my-function --name alias-name

Les commandes AWS CLI dans les étapes précédentes correspondent aux opérations d'API Lambda suivantes :

Gestion des alias avec AWS SAM et AWS CloudFormation

Vous pouvez créer et gérer des alias de fonction à l'aide d'AWS Serverless Application Model (AWS SAM) et AWS CloudFormation.

Pour savoir comment déclarer un alias de fonction dans un modèle AWS SAM, consultez la page AWS::Serverless::Function dans le Guide du développeur AWS SAM. Pour plus d'informations sur la création et la configuration d'alias à l'aide d'AWS CloudFormation, consultez AWS::Lambda::Alias dans le Guide de l'utilisateur AWS CloudFormation.

Utilisation des alias

Chaque alias a un ARN unique. Un alias peut uniquement pointer vers une version de fonction, et non vers un autre alias. Vous pouvez mettre à jour un alias de sorte qu’il pointe vers une nouvelle version de la fonction.

Des sources d'événements telles qu'Amazon Simple Storage Service (Amazon S3) appellent votre fonction Lambda. Ces sources d'événements gèrent un mappage qui identifie la fonction à appeler lorsque des événements se produisent. Si vous spécifiez un alias de fonction Lambda dans la configuration du mappage, vous n'avez pas besoin de mettre à jour le mappage lorsque la version de la fonction change. Pour de plus amples informations, veuillez consulter Mappage de source d’événement Lambda.

Dans une stratégie de ressources, vous pouvez accorder des autorisations en lien avec des sources d'événements à utiliser votre fonction Lambda. Si vous spécifiez un ARN d'alias dans la stratégie, vous n'avez pas besoin de mettre à jour la stratégie lorsque la version de la fonction change.

Stratégies basées sur une ressource

Vous pouvez utiliser une stratégie basée sur les ressources pour accorder l'accès à votre fonction à un service, à une ressource ou à un compte. La portée de cette autorisation est dépendante du fait que vous appliquiez l'autorisation à un alias, à une version ou à la fonction entière. Par exemple, si vous utilisez un nom d'alias (tel que helloworld:PROD), l'autorisation vous permet d'appeler la fonction helloworld à l'aide de l'ARN d'alias (helloworld:PROD).

Si vous essayez d'appeler la fonction sans alias ou version spécifique, vous obtenez une erreur d'autorisation. Cette erreur d'autorisation continue de se produire même si vous tentez d'appeler directement la version de fonction associée à l'alias.

Par exemple, la commande AWS CLI suivante accorde des autorisations Amazon S3 pour appeler l'alias PROD de la fonction helloworld quand Amazon S3 agit pour le compte de examplebucket.

aws lambda add-permission --function-name helloworld \ --qualifier PROD --statement-id 1 --principal s3.amazonaws.com --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::examplebucket --source-account 123456789012

Pour de plus amples informations sur l'utilisation des noms de ressources dans les stratégies, veuillez consulter Ressources et conditions pour les actions Lambda.

Configuration du routage d’alias

Utilisez la configuration de routage sur un alias pour envoyer une partie du trafic vers une deuxième version de la fonction. Par exemple, vous pouvez réduire le risque de déploiement d'une nouvelle version en configurant l'alias de sorte qu’il envoie la majeure partie du trafic vers la version existante, et seulement un faible pourcentage du trafic vers la nouvelle version.

Notez que Lambda utilise un modèle probabiliste simple pour répartir le trafic entre les deux versions de la fonction. A un niveau de trafic est faible, vous pouvez voir un écart élevé entre les pourcentages de trafic configuré et réel sur chaque version. Si votre fonction utilise une simultanéité approvisionnée, vous pouvez éviter des appels de débordement en configurant un plus grand nombre d'instances de simultanéité approvisionnées pendant que le routage d'alias est actif.

Vous pouvez faire pointer un alias vers au maximum deux versions de fonction Lambda. Les versions doivent répondre aux critères suivants :

  • Les deux versions doivent avoir le même rôle d'exécution.

  • Les deux versions doivent avoir la même configuration de file d'attente de lettres mortes ou aucune configuration de file d'attente de lettres mortes.

  • Les deux versions doivent être publiées. L'alias ne peut pas pointer vers $LATEST.

Pour configurer le routage sur un alias
Note

Vérifiez que la fonction a au moins deux versions publiées. Pour créer des versions supplémentaires, suivez les instructions de la section Versions de fonctions Lambda.

  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez une fonction.

  3. Sélectionnez Alias, puis Create alias (Créer un alias).

  4. Sur la page Create alias (Créer un alias), procédez de la manière suivante :

    1. Renseignez le champ Name (Nom) pour l'alias.

    2. (Facultatif) Renseignez le champ Description de l'alias.

    3. Pour Version, choisissez la première version de fonction vers laquelle vous souhaitez que l'alias pointe.

    4. Développez Weighted alias (Alias pondéré).

    5. Pour Additional version (Version supplémentaire), choisissez la deuxième version de fonction vers laquelle vous souhaitez que l'alias pointe.

    6. Pour Weight (%) (Pondération (%)), entrez une valeur de pondération pour la fonction. La pondération est le pourcentage de trafic qui est affecté à cette version lorsque l'alias est appelé. La première version reçoit le reste du trafic. Par exemple, si vous spécifiez 10 % pour Additional version (Version supplémentaire), 90 % du trafic est automatiquement affecté à la première version.

    7. Choisissez Enregistrer.

Configuration du routage d’alias à l'aide de l'interface de ligne de commande

Utilisez les commandes create-alias update-alias et AWS CLI pour configurer la pondération du trafic entre deux versions de fonction. Lorsque vous créez ou mettez à jour l'alias, vous spécifiez la pondération du trafic dans le paramètre routing-config.

L'exemple suivant crée un alias de fonction Lambda nommé routing-alias qui pointe vers la version 1 de la fonction. La version 2 de la fonction reçoit 3 % du trafic. Les 97 % restants du trafic sont acheminés vers la version 1.

aws lambda create-alias --name routing-alias --function-name my-function --function-version 1 \ --routing-config AdditionalVersionWeights={"2"=0.03}

Utilisez la commande update-alias pour augmenter le pourcentage de trafic entrant vers la version 2. Dans l'exemple suivant, vous augmentez le trafic à 5 %.

aws lambda update-alias --name routing-alias --function-name my-function \ --routing-config AdditionalVersionWeights={"2"=0.05}

Pour acheminer l'ensemble du trafic vers la version 2, utilisez la commande update-alias pour modifier la propriété function-version afin que l'alias pointe vers la version 2. La commande réinitialise également la configuration de routage.

aws lambda update-alias --name routing-alias --function-name my-function \ --function-version 2 --routing-config AdditionalVersionWeights={}

Les commandes AWS CLI dans les étapes précédentes correspondent aux opérations d'API Lambda suivantes :

Détermination de la version appelée

Lorsque vous configurez des pondérations de trafic entre deux versions de fonction, vous pouvez déterminer la version de fonction Lambda appelée de deux manières :

  • CloudWatch Journaux : Lambda envoie automatiquement une entrée de START journal contenant l'ID de version invoqué à Amazon CloudWatch Logs pour chaque appel de fonction. Voici un exemple :

    19:44:37 START RequestId: request id Version: $version

    Pour les appels d'alias, Lambda utilise la dimension Executed Version pour filtrer les métriques en fonction de la version appelée. Pour de plus amples informations, veuillez consulter Utilisation des métriques de fonction Lambda.

  • Charge utile de réponse (appels synchrones) – Les réponses aux appels de fonction synchrones incluent un en-tête x-amz-executed-version indiquant la version de fonction appelée.