直接在S3存储桶中存储AWS Lambda函数代码

时间:2019-11-18 21:54:30

标签: amazon-web-services amazon-s3 aws-lambda

AWS Lambda函数可以选择输入从S3作为文件上传的代码。我有一个成功运行的Lambda函数,并将代码作为S3存储桶中的zip文件作为代码,但是,每次您要更新此代码时,都需要手动在lambda函数中内联编辑代码或上传新的​​zip文件文件到S3并进入lambda函数,然后手动从S3重新上传文件。有什么方法可以让lambda函数链接到S3中的文件,以便在您更新S3中包含的代码文件(或zip文件)时自动更新其功能代码?

3 个答案:

答案 0 :(得分:1)

Lambda在运行时实际上并不引用S3代码-只是在设置函数时。就像它在存储桶中获取代码的副本然后运行副本一样。因此,虽然没有直接的方法可以让lambda函数自动运行存储桶中的最新代码,但是您可以制作一个小脚本来使用SDK方法来更新函数代码。我不知道您可能要使用哪种语言,但是例如,您可以编写脚本来调用AWS CLI以更新功能代码。参见https://docs.aws.amazon.com/cli/latest/reference/lambda/update-function-code.html

  

更新Lambda函数的代码。

     

发布版本时,该功能的代码已锁定。你不能   修改发布版本的代码,仅修改未发布版本的代码。

     

另请参阅:AWS API文档

     

有关全局参数的描述,请参见“ aws帮助”。

     

简介

     

更新功能代码   --function-name [--zip文件] [--s3-bucket] [--s3-key] [--s3-object-version] [--publish |   --no-publish] [--dry-run | --no-dry-run] [--revision-id] [--cli-input-json] [--generate-cli-skeleton]

您也可以使用Python或PowerShell执行类似的操作,例如使用 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.update_function_code

答案 1 :(得分:0)

您可以设置AWS Code deploy pipeline来构建代码并将其部署在代码存储库(github,bitbucket等)中的代码提交上

  

CodeDeploy是使应用程序自动化的部署服务   部署到Amazon EC2实例,本地实例,无服务器   Lambda函数或Amazon ECS服务。

答案 2 :(得分:0)

此外,如果您想采用更无人值守的路线将更新后的代码部署到 Lambda,请在您的代码管道中使用此流程
Source -> Code Build (npm installs and zipping etc.) -> S3 Upload (sourcecode.zip in S3 bucket) -> Code Build (another build just for aws lambda update-funtion-code)

确保最后一个阶段的角色同时附加了 S3 getObjectLambda UpdateFunctionCode 政策。