AWS Cloud9:一次只部署一个 Lambda 函数

Posted

技术标签:

【中文标题】AWS Cloud9:一次只部署一个 Lambda 函数【英文标题】:AWS Cloud9: deploy only one Lambda function at a time 【发布时间】:2018-09-07 22:05:02 【问题描述】:

我正在尝试使用 AWS Cloud9 部署 Lambda 函数。当我按下部署时,我的所有功能都会同时部署/同步,而不仅仅是我在部署时选择的功能。右键单击该功能并按部署时也是如此。我觉得这很烦人,想知道是否有任何解决方法?

【问题讨论】:

【参考方案1】:

当您单击部署时,Cloud9 会在后台对您的 template.yaml 文件运行 aws cloudformation packageaws cloudformation deploy。 (来源:我为 AWS Cloud9 开发了 Lambda 集成)。

因为您的所有文件都捆绑到一个无服务器应用程序中,并且只有一个 CloudFormation 堆栈,所以它们只能使用 CloudFormation 一次性部署。

如果您只是对一个函数进行代码更改而不修改任何配置设置,您可以使用以下命令从命令行更新该函数:

zip -r - . | aws lambda update-function-code --function-name <function-name>`

在与您的 template.yaml 文件相同的文件夹中运行此文件,将 &lt;function-name&gt; 替换为其生成的完整名称,例如 cloud9-myapp-myfunction-ABCD1234(您可以在 AWS 资源面板中的远程函数列表下查看完整名称)。

【讨论】:

好像添加了一堆库后,我得到一个错误:“调用UpdateFunctionCode操作时发生错误(InvalidParameterValueException):请提供函数代码的来源。”一个 当您的 cloud9 实例与您的 lambda 函数不同的区域时不起作用...为函数名称添加完整的 arn 会导致错误:调用时发生错误 (ResourceNotFoundException) UpdateFunctionCode 操作:来自“eu-central-1”的函数在此区域(“eu-west-1”)中不可访问【参考方案2】:

在 AWS Cloud9 中,Lambda 函数是在无服务器应用程序中创建的,因此通过 CloudFormation 进行部署。使用 CloudFormation,整个堆栈可以一次部署,因此所有功能都部署在一起(请参阅this discussion 了解更多信息)。

【讨论】:

以上是关于AWS Cloud9:一次只部署一个 Lambda 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

我可以限制 AWS Lambda 的并发调用吗?

Python3/cloud9/lambda - 使导入的模块可用于 lambda

从不同账户部署 AWS Lambda

使用Grunt部署到AWS Lambda

使用 AWS CDK 在 AWS Codepipeline 中部署 Python Lambda 函数