如何使AWS Lambda函数副本与另一个相同

SB *_* D 7 amazon-web-services aws-lambda

我有带有API网关触发器的AWS Lambda函数。我想用相同的触发器创建相同的lambda函数。我该怎么做?创建版本时,我看到api网关未复制并且无法更改代码。

我是AWS Lambda的新手

Emm*_*uel 18

编辑 lambda 函数时,您可以转到操作 > 导出函数 > 下载部署包。

在此处输入图片说明

这将下载函数的 .zip 文件。

然后创建一个新的 Lambda,然后转到“上传自”(代码编辑器正上方)>“.zip 文件”

在此处输入图片说明

这会复制代码和 npm 模块等...虽然不是函数的触发器或权限。


Joh*_*ein 9

没有提供复制/克隆Lambda函数和API网关配置的函数。您将需要从头开始创建新的新功能。

如果您打算将来必须重复使用功能,则值得使用AWS CloudFormation创建Lambda函数。然后,您将来可以轻松部署更多。

  • AWS 上的一些东西确实看起来很荒谬——为什么没有重命名功能?一旦您开始使用 SAM + CloudFormation 来部署、管理和调试 Lambda 函数,您很可能会发现当前部署 lambda 函数的方式很荒谬,并且再也不会要求重命名功能。 (4认同)
  • 这是谷歌云平台锐意进取的又一个例子。 (2认同)

Jam*_*rty 9

使用 Lambda 函数复制其他函数

不幸的是,AWS Web 控制台和命令行工具都没有在服务中复制功能的功能。

这是一个明显的疏忽,使得看似简单的事情变得困难,例如从“模板”函数创建新函数或通过创建具有不同名称的副本来重命名函数(这也是不可能直接实现的)。

我发现完成这项工作的最简单方法是创建一个复制其他函数的 Lambda 函数。

下面的Python do_duplicate_function.py3 函数代码可以部署到 Lambda,或者在本地运行,以复制您的 AWS 账户中的函数。

要使用它,请在 AWS 控制台中配置测试事件,或者使用至少包含以下内容的事件数据调用该函数:

{
    "SourceFunctionName": "function_name_to_copy",
    "FunctionName": "function_name_to_create"
}
Run Code Online (Sandbox Code Playgroud)

其中SourceFunctionName是要复制的函数的名称, FunctionName是要创建的函数的名称。

函数代码本身的顶部有更多关于如何使用和部署它的文档,请参阅代码以了解详细信息。

注意:我已将其单独写在这篇迷你帖子中,您还可以在其中获取do_duplicate_function.py 函数代码文件。在那里检查最新版本。我也将所有内容都放在这里,因此这个答案将是完整且独立的。

{
    "SourceFunctionName": "function_name_to_copy",
    "FunctionName": "function_name_to_create"
}
Run Code Online (Sandbox Code Playgroud)