是否可以将代码从一个AWS Lambda函数复制到另一个而不先下载它?

Kev*_*yer 9 python amazon-web-services aws-lambda

所以我目前正在为AWS Lambda函数构建部署程序.

由于AWS版本都共享一个配置,因此需要具有多个函数(foo_prod,foo_staging,foo_whatever),这些函数是我们代码的各种版本,而不是像我想要的那样使用别名.

所以我的问题是:

1)是否有一种理智的方式来重新部署代码.(IE:Staging to Prod)不先将其下载到我的桌​​面,然后重新上传.

2)我对该共享配置位是否错误,或者是否可以告诉该函数在实际Lambda中运行哪个别名,以便我可以为每个环境创建多个环境变量.

Mar*_*yer 8

您可以通过许多不同方式部署lambda函数,而不涉及下载和重新上载代码.如果您使用SAM(http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example-use-app-spec.html)之类的东西,您可以指向一个容纳您的S3存储桶代码和构建功能.您还可以将CloudFormation连接到Git存储库(如Github或AWS CodeCommit),并在将提交推送到存储库时自动更新您的功能.还有像Severless(https://serverless.com)这样的其他系统可以以可重复和可管理的方式抽象和自动化部署.

Lambda的版本在上下文对象中可用.您应该能够通过查看ARN来确定调用哪个别名.ARN具有别名作为后缀,例如:

arn:aws:lambda:aws-region:acct-id:function:helloworld:PROD    
Run Code Online (Sandbox Code Playgroud)

信息在这里:http://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html

  • Lambda 的功能远不止正在执行的脚本。真正的解决方案是使用 boto3 库并提取代码和设置(触发器、角色、网络、内存、超时、环境变量、测试事件等),并允许您创建一个具有完全相同值的新函数(或可选的修改值,它们都只是 JSON)。它就像 Terraform 一样,但没有预先规划。 (3认同)