web-dev-qa-db-fra.com

Est-il possible de copier du code d'une fonction AWS Lambda vers une autre sans le télécharger au préalable?

Je travaille donc actuellement sur la construction du déployeur pour nos fonctions AWS Lambda.

Comme les versions AWS partagent toutes une configuration, cela nécessite d'avoir plusieurs fonctions (foo_prod, foo_staging, foo_wwhat) qui sont les différentes versions de notre code au lieu d'utiliser des alias comme I want à faire.

Ma question est donc:

1) Qu'il y ait ou non un moyen sain de redéployer le code. (IE: Staging to Prod) sans le télécharger d'abord sur mon bureau, puis le télécharger à nouveau.

2) Que je me trompe ou non sur ce bit de configuration partagé ou s'il est possible de dire sous quel alias la fonction s'exécute dans le Lambda réel afin que je puisse créer plusieurs variables d'environnement pour chaque environnement.

11
Kevin Meyer

Vous pouvez déployer les fonctions lambda de différentes manières sans impliquer le téléchargement et le re-téléchargement de code. Si vous utilisez quelque chose comme SAM ( http://docs.aws.Amazon.com/lambda/latest/dg/with-s3-example-use-app-spec.html ) vous pouvez simplement pointer à un compartiment S3 qui contient votre code et créer des fonctions à partir de cela. Vous pouvez également connecter CloudFormation au référentiel git comme Github ou AWS CodeCommit et le faire mettre à jour automatiquement vos fonctions lorsque vous envoyez des validations au référentiel. Et il existe d'autres systèmes comme Severless ( https://serverless.com ) qui peuvent abstraire et automatiser les déploiements de manière répétable et gérable.

La version de Lambda est disponible dans l'objet contextuel. Vous devriez pouvoir savoir quel alias est appelé en regardant l'ARN. Les ARN ont l'alias sous la forme d'un suffixe tel que:

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

Infos ici: http://docs.aws.Amazon.com/lambda/latest/dg/python-context-object.html

8
Mark Meyer