AWS Lambda 和 zip 从 S3 上传
AWS Lambda and zip upload from S3
我不清楚这个功能的好处(我没有找到任何好的文档):
- 如果您对许多 lambda 函数重复使用相同的 zip 是否更快,因为您只上传 1 次并且您只需将 S3 link URL 提供给每个 lambda 函数?
- 如果您使用 S3 link,当您重新上传 zip 文件时,您的所有 lambda 函数是否会自动更新为最新代码,这意味着 S3 上的 zip 文件是 "reference"在每次调用 lambda 函数时使用?
谢谢。
编辑:
我被问到 "Why do you want the same code for multiple Lambda functions anyway?"
因为我将 AWS Lambda 与 AWS API 网关一起使用,所以我有 1 个项目,其中包含我的所有处理程序,这些处理程序对于我的 RESTful API 是实际的 "endpoints"。
编辑#2:
我确认在 S3 上上传 zip 文件的修改版本不会更改现有的 lambda 函数结果。
如果 AWS 人员阅读此消息,那将是很棒的一种批量更新功能,该功能可以在 S3 上一次单击更新一组选定的 lambda 函数和一个 zip 文件(甚至是检测文件更新时间的 "automatic update" 功能 ;-))
假设您在 1 个项目中有 50 个处理程序,然后您修改了影响所有这些处理程序的全局内容,目前您必须检查所有 lambda 函数并手动更新 zip 文件...
代码已从 zip 导入到 Lambda。这与通过 Lambda 控制台或 API 上传 zip 文件完全相同。但是,如果您的 Lambda 函数很大(他们说 >10MB),他们建议上传到 S3,然后使用 S3 导入功能,因为这比直接从 Lambda 页面上传更稳定。除此之外,没有任何好处。
所以对于问题 1:没有。为什么你想要多个 Lambda 函数的相同代码?
问题 2:如果您覆盖 zip,您将不会更新 Lambda 函数代码。
为了回答我认为是您问题本质的问题,AWS 允许您使用 S3 作为 Lambda zip 文件的来源,因为有时通过浏览器上传大文件可能会超时。此外,将您的代码存储在 S3 上允许您集中存储它,而不是在您的计算机上,我确信那里也有一个 CodeCommit 搭档。
使用 S3 方法将代码上传到 Lambda 还允许您上传更大的文件(AWS 在通过网络浏览器上传时有 10MB 的限制)。
要添加到其他人的用例中,能够从 S3 更新 Lambda 函数在自动化部署/CI 过程中非常有用。
New Deployment Options for AWS Lambda 下的说明包括一个简单的 Lambda 函数,可用于将 ZIP 文件从 S3 复制到 Lambda 本身,以及在上传新文件时触发其执行的说明。
作为这可以使开发和部署变得多么容易的一个例子,我当前的工作流程是:
我在本地机器上更新我的 Node lambda 应用程序,然后git commit
它到远程存储库。
Jenkins 实例获取提交,提取适当的文件,将它们添加到 ZIP 文件中并将其上传到 S3 存储桶。
LambdaDeployment 函数然后自动为我部署这个新版本,我什至不需要离开我的开发环境。
#!/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
我不清楚这个功能的好处(我没有找到任何好的文档):
- 如果您对许多 lambda 函数重复使用相同的 zip 是否更快,因为您只上传 1 次并且您只需将 S3 link URL 提供给每个 lambda 函数?
- 如果您使用 S3 link,当您重新上传 zip 文件时,您的所有 lambda 函数是否会自动更新为最新代码,这意味着 S3 上的 zip 文件是 "reference"在每次调用 lambda 函数时使用?
谢谢。
编辑:
我被问到 "Why do you want the same code for multiple Lambda functions anyway?"
因为我将 AWS Lambda 与 AWS API 网关一起使用,所以我有 1 个项目,其中包含我的所有处理程序,这些处理程序对于我的 RESTful API 是实际的 "endpoints"。
编辑#2: 我确认在 S3 上上传 zip 文件的修改版本不会更改现有的 lambda 函数结果。
如果 AWS 人员阅读此消息,那将是很棒的一种批量更新功能,该功能可以在 S3 上一次单击更新一组选定的 lambda 函数和一个 zip 文件(甚至是检测文件更新时间的 "automatic update" 功能 ;-))
假设您在 1 个项目中有 50 个处理程序,然后您修改了影响所有这些处理程序的全局内容,目前您必须检查所有 lambda 函数并手动更新 zip 文件...
代码已从 zip 导入到 Lambda。这与通过 Lambda 控制台或 API 上传 zip 文件完全相同。但是,如果您的 Lambda 函数很大(他们说 >10MB),他们建议上传到 S3,然后使用 S3 导入功能,因为这比直接从 Lambda 页面上传更稳定。除此之外,没有任何好处。
所以对于问题 1:没有。为什么你想要多个 Lambda 函数的相同代码?
问题 2:如果您覆盖 zip,您将不会更新 Lambda 函数代码。
为了回答我认为是您问题本质的问题,AWS 允许您使用 S3 作为 Lambda zip 文件的来源,因为有时通过浏览器上传大文件可能会超时。此外,将您的代码存储在 S3 上允许您集中存储它,而不是在您的计算机上,我确信那里也有一个 CodeCommit 搭档。
使用 S3 方法将代码上传到 Lambda 还允许您上传更大的文件(AWS 在通过网络浏览器上传时有 10MB 的限制)。
要添加到其他人的用例中,能够从 S3 更新 Lambda 函数在自动化部署/CI 过程中非常有用。
New Deployment Options for AWS Lambda 下的说明包括一个简单的 Lambda 函数,可用于将 ZIP 文件从 S3 复制到 Lambda 本身,以及在上传新文件时触发其执行的说明。
作为这可以使开发和部署变得多么容易的一个例子,我当前的工作流程是:
我在本地机器上更新我的 Node lambda 应用程序,然后
git commit
它到远程存储库。Jenkins 实例获取提交,提取适当的文件,将它们添加到 ZIP 文件中并将其上传到 S3 存储桶。
LambdaDeployment 函数然后自动为我部署这个新版本,我什至不需要离开我的开发环境。
#!/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