Alias de fonctions Lambda - AWS Lambda

Alias de fonctions Lambda

Vous pouvez créer un ou plusieurs alias pour une fonction Lambda. Un alias Lambda s'apparente à un pointeur vers une version de fonction spécifique. Les utilisateurs peuvent accéder à la version de fonction à l'aide du nom Amazon Resource Name (ARN) de l'alias.

Pour créer un alias

  1. Ouvrez la page des fonctions sur la console Lambda.

  2. Choisissez le nom d'une fonction.

  3. Sur la page de configuration de la fonction, choisissez Actions, 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 Save.

Pour afficher les alias actuellement définis pour une fonction, sur la page de configuration de la fonction, choisissez Qualifiers (Qualificateurs), puis l'onglet Aliases (Alias).

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 de l'AWS CLI des étapes précédentes correspondent aux opérations d'API Lambda suivantes :

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.

Les sources d'événement telles que 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 Mappages de source d'événement AWS Lambda.

Dans une stratégie de ressources, vous pouvez accorder des autorisations aux sources d'événements pour 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 invoquer l'alias PROD de la fonction helloworld lorsque le service Amazon S3 agit au nom 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.

Vous pouvez faire pointer un alias vers deux versions de fonction Lambda maximum. 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

  1. Ouvrez la page des fonctions sur la console Lambda.

  2. Choisissez le nom d'une fonction.

  3. Vérifiez que la fonction a au moins deux versions publiées. Sur la page de configuration de la fonction, choisissez Qualifiers (Qualificateurs), puis cliquez sur l'onglet Versions pour afficher la liste des versions. Pour créer des versions supplémentaires, suivez les instructions de la section Versions de fonction Lambda.

  4. Choisissez Actions, Create alias (Créer un alias).

  5. 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

Utilisez les commandes AWS CLI create-alias et update-alias 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 de l'AWS CLI des é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, il existe deux façons de déterminer la version de fonction Lambda qui a été appelée :

  • CloudWatch Logs – Lambda émet automatiquement une entrée de journal START contenant l'ID de la version appelée dans 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 données de métriques en fonction de la version appelée. Pour de plus amples informations, veuillez consulter Utilisation des métriques de fonction AWS 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.