来自S3的AWS Lambda和zip上传

时间:2016-02-03 22:00:05

标签: amazon-web-services aws-lambda

我不清楚这个功能的好处(我没有找到任何好的文档):

  1. 如果您为许多lambda函数重复使用相同的zip,它是否只是更快,因为您只上传了一次,而您只是为每个lambda函数提供了S3链接URL?
  2. 如果你使用S3链接,当你重新上传zip文件时,你的所有lambda函数都会自动更新最新代码,这意味着S3上的zip文件是每次调用lambda时使用的“引用”功能?
  3. 谢谢。

    编辑:
    我被问到“为什么你想要多个Lambda函数的相同代码?” 因为我将AWS Lambda与AWS API Gateway一起使用,所以我有一个项目,我的所有处理程序都是我的RESTful API的实际“端点”。

    编辑#2:编辑#2: 我确认在S3上上传zip文件的修改版本不会改变现有的lambda函数结果。

    如果某个AWS人员阅读此消息,那么拥有一种批量更新功能可以很好地通过一次点击在S3上用1个zip文件更新一组选定的lambda函数(甚至“自动更新”功能,可检测文件何时更新;-))
    假设您在一个项目中有50个处理程序,然后您修改了影响所有这些项目的全局内容,目前您必须通过所有lambda函数并手动更新zip文件...

4 个答案:

答案 0 :(得分:3)

为了回答我认为问题的本质,AWS允许您使用S3作为Lambda zip文件的来源,因为有时通过浏览器上传大文件可能会超时。此外,将代码存储在S3上允许您集中存储它,而不是存储在计算机上,我确信它还有一个CodeCommit接口。

使用将代码上传到Lambda的S3方法还允许您上传较大的文件(AWS通过Web浏览器上传时有10MB的限制。)

答案 1 :(得分:3)

要添加到其他人的用例,能够从S3更新Lambda函数在自动部署/ CI过程中非常有用。

New Deployment Options for AWS Lambda下的说明包括一个简单的Lambda函数,可用于将ZIP文件从S3复制到Lambda本身,以及在上传新文件时触发其执行的说明。

作为开发和部署的简单示例,我目前的工作流程是:

  1. 我在本地计算机上更新了我的Node lambda应用程序,并将git commit更新到远程存储库。

  2. Jenkins实例选择提交,下拉相应的文件,将它们添加到ZIP文件中并将其上传到S3存储桶。

  3. 然后LambdaDeployment功能会自动为我部署这个新版本,而我甚至不需要离开我的开发环境。

答案 2 :(得分:2)

代码从zip导入Lambda。这与通过Lambda控制台或API上传zip文件完全相同。但是,如果您的Lambda函数很大(他们说> 10MB),他们建议上传到S3,然后使用S3导入功能,因为这比直接从Lambda页面上传更稳定。除此之外,没有任何好处。

所以问题1:不。为什么你想要多个Lambda函数使用相同的代码呢?

问题2:如果您覆盖zip,则不会更新Lambda函数代码。

答案 3 :(得分:2)

#!/bin/bash
cd /your/workspace

#zips up the new code
zip -FSr yourzipfile.zip . -x *.git* *bin/\* *.zip

#Updates function code of lambda and pushes new zip file to s3bucket for cloudformation lambda:codeuri source
aws lambda update-function-code --function-name  arn:aws:lambda:us-west-2:YOURID:function:YOURFUNCTIONNAME --zip-file file://yourzipfile.zip

取决于aws-cli安装和aws配置文件设置

aws --profile yourProfileName configure