AWS Lambda
Manuel du développeur

Présentation des versions AWS Lambda

Vous trouverez ci-dessous des informations sur la création d'une fonction Lambda et sur la publication d'une version à partir de cette fonction. Vous trouverez également des informations sur la mise à jour des informations de configuration et du code de la fonction lorsque vous avez une ou plusieurs versions publiées. Par ailleurs, cette section inclut des informations sur la suppression des versions de fonction, qu'il s'agisse d'une version spécifique ou d'une fonction Lambda complète, avec tous ses alias et versions associés.

Création d'une fonction Lambda (version $LATEST)

Lorsque vous créez une fonction Lambda, il n'y a qu'une seule version, la version $LATEST.

Vous pouvez vous reporter à cette fonction à l'aide de son Amazon Resource Name (ARN). Deux ARN sont associés à cette version initiale :

  • ARN qualifié : ARN de la fonction avec le suffixe de version.

    arn:aws:lambda:aws-region:acct-id:function:helloworld:$LATEST
  • ARN non qualifié : ARN de la fonction ARN sans le suffixe de version.

    Vous pouvez utiliser cet ARN non qualifié dans toutes les opérations appropriées. Cependant, vous ne pouvez pas l'utiliser pour créer un alias. Pour en savoir plus, consultez Présentation des alias AWS Lambda.

    L'ARN non qualifié a ses propres stratégies de ressource.

    arn:aws:lambda:aws-region:acct-id:function:helloworld

Note

À moins que vous ne choisissiez de publier des versions, la version de fonction $LATEST est la seule version de la fonction Lambda dont vous disposez. Vous pouvez utiliser l'ARN qualifié ou non qualifié dans le mappage de source d'événement pour appeler la version $LATEST.

Voici un exemple de réponse d'un appel d'API CreateFunction.

{ "CodeSize": 287, "Description": "test function." "FunctionArn": "arn:aws:lambda:aws-region:acct-id:function:helloworld", "FunctionName": "helloworld", "Handler": "helloworld.handler", "LastModified": "2015-07-16T00:34:31.322+0000", "MemorySize": 128, "Role": "arn:aws:iam::acct-id:role/lambda_basic_execution", "Runtime": "nodejs6.10", "Timeout": 3, "CodeSHA256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "Version": "$LATEST" }

Pour plus d'informations, consultez CreateFunction.

Dans cette réponse, AWS Lambda renvoie l'ARN non qualifié de la fonction qui vient d'être créée, ainsi que sa version, $LATEST. CodeSha256 est le total de contrôle du package de déploiement que vous avez importé.

Publication d'une version de fonction AWS Lambda

Lorsque vous publiez une version, AWS Lambda copie un instantané du code de la fonction Lambda (et de sa configuration) dans la version $LATEST. Une version publiée est immuable. Autrement dit, vous ne pouvez pas modifier le code ni les informations de configuration. La nouvelle version possède un ARN unique qui inclut un suffixe de numéro de version, comme illustré ci-après.

Vous pouvez publier une version à l'aide de l'une des méthodes suivantes :

  • Publier une version explicitement : vous pouvez utiliser l'opération d'API PublishVersion pour publier explicitement une version. Pour en savoir plus, consultez PublishVersion. Cette opération génère une nouvelle version avec le code et la configuration de la version $LATEST.

  • Publier une version au moment de la création ou de la mise à jour d'une fonction Lambda : vous pouvez utiliser les requêtes CreateFunction ou UpdateFunctionCode pour publier une version en ajoutant le paramètre publish facultatif dans la requête :

    • Spécifiez le paramètre publish dans votre requête CreateFunction pour créer une nouvelle fonction Lambda (la version $LATEST). Vous pouvez ensuite immédiatement publier la nouvelle fonction en créant un instantané et en lui attribuant le numéro de version 1. Pour en savoir plus sur CreateFunction, consultez CreateFunction.

    • Spécifiez le paramètre publish dans votre demande UpdateFunctionCode pour mettre à jour le code dans la version $LATEST. Vous pouvez ensuite publier une version à partir de $LATEST. Pour en savoir plus sur UpdateFunctionCode, consultez UpdateFunctionCode.

    Si vous spécifiez le paramètre publish lorsque vous créez une fonction Lambda, les informations de configuration renvoyées par AWS Lambda pour cette fonction indiquent le numéro de la nouvelle version publiée. Dans l'exemple suivant, la version est 1.

    { "CodeSize": 287, "Description": "test function." "FunctionArn": "arn:aws:lambda:aws-region:acct-id:function:helloworld", "FunctionName": "helloworld", "Handler": "helloworld.handler", "LastModified": "2015-07-16T00:34:31.322+0000", "MemorySize": 128, "Role": "arn:aws:iam::acct-id:role/lambda_basic_execution", "Runtime": "nodejs6.10", "Timeout": 3, "CodeSHA256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "Version": "1" }

Note

Lambda publie uniquement une nouvelle version si le code n'a pas encore été publié ou s'il a changé par rapport à la version $LATEST. S'il n'y a aucun changement, la version $LATEST publiée est renvoyée.

Nous vous recommandons de publier une version en même temps que vous créez votre fonction Lambda ou que vous mettez son code à jour. Cette recommandation s'applique en particulier lorsque plusieurs développeurs contribuent au développement d'une même fonction Lambda. Pour ce faire, vous pouvez utiliser le paramètre publish dans votre requête.

Lorsque plusieurs développeurs participent à un projet, vous pouvez rencontrer ce scénario : le développeur A crée une fonction Lambda (version $LATEST). Avant que le développeur A publie cette version, le développeur B peut mettre à jour le code (le package de déploiement) associé à la version $LATEST. Dans ce cas, vous perdez le code d'origine importé par le développeur A. Lorsque les deux développeurs ajoutent le paramètre publish, cela empêche cette condition de concurrence.

Chaque version d'une fonction Lambda est une ressource unique avec un Amazon Resource Name (ARN). L'exemple suivant affiche l'ARN du numéro de version 1 de la fonction Lambda helloworld.

arn:aws:lambda:aws-region:acct-id:function:helloworld:1

Vous pouvez publier plusieurs versions d'une fonction Lambda. Chaque fois que vous publiez une version, AWS Lambda copie la version $LATEST (code et informations de configuration) afin de créer une nouvelle version. Lorsque vous publiez des versions supplémentaires, AWS Lambda attribue un numéro de séquence croissant de façon monotone aux versions, même si la fonction a été supprimée et recréée. Les numéros de version ne sont jamais réutilisés, même pour une fonction qui a été supprimée et recréée. Cette approche signifie que l'utilisateur d'une version de fonction sait que l'exécutable de cette version ne changera jamais (sauf s'il est supprimé).

Si vous souhaitez réutiliser une qualification, utilisez des alias avec vos versions. Les alias peuvent être supprimés et recréés avec le même nom.

Mise à jour du code et de la configuration de la fonction Lambda

AWS Lambda gère le dernier code de la fonction dans la version $LATEST. Lorsque vous mettez à jour le code de la fonction, AWS Lambda remplace le code dans la version $LATEST de la fonction Lambda. Pour en savoir plus, consultez UpdateFunctionCode.

Les options suivantes s'offrent à vous pour publier une nouvelle version lorsque vous mettez à jour le code de la fonction Lambda :

  • Publier une version dans la même demande de mise à jour du code : utilisez l'opération d'API UpdateFunctionCode (approche recommandée).

  • Commencer par mettre à jour le code, puis publier explicitement une version : utilisez l'opération d'API PublishVersion.

Vous pouvez mettre à jour le code et les informations de configuration (par exemple, la description, la taille de la mémoire et le délai d'exécution) de la version $LATEST de la fonction Lambda.

Suppression d'une fonction Lambda et d'une version spécifique

Les versions offrent les possibilités suivantes :

  • Supprimer une version spécifique : pour supprimer une version de fonction Lambda, spécifiez celle que vous souhaitez supprimer dans la requête DeleteFunction. Si des alias dépendent de cette version, la requête échoue. AWS Lambda supprime la version uniquement si aucun alias n'en dépend. Pour en savoir plus sur les alias, consultez la section Présentation des alias AWS Lambda.

  • Supprimer la fonction Lambda complète (versions et alias) : pour supprimer la fonction Lambda ainsi que toutes ses versions, ne spécifiez aucune version dans la requête DeleteFunction. Cela supprimerait l'ensemble de la fonction, y compris ses versions et les alias.