【问题标题】:Updating Lambda function to a new runtime将 Lambda 函数更新到新的运行时
【发布时间】:2022-09-29 05:02:16
【问题描述】:
我有几个带有 Python 3.6 运行时的 Lambda 函数。这些 Lambda 函数属于它们的 Lambda 应用程序。
将运行时更新到 Python 3.8 或最新版本的最佳方法是什么?如何测试它?
所有 lambda 函数都与我们的持续部署过程有关。
更新 Lambda 函数是否会更新 Lambda 应用程序运行时,因为 Lambda 应用程序只是具有资源的 Lambda 函数?
任何帮助表示赞赏
标签:
python-3.x
amazon-web-services
aws-lambda
runtime
【解决方案1】:
Python 确保版本之间具有完美的追溯兼容性。
这并不意味着您不必进行测试,而是您可以对升级过程充满信心。
您应该首先查看您正在更新的版本的更改日志(因此,如果从 3.6 到 3.8,请查看 3.7 和 3.8 更改日志)。
那你应该测试一下。如果有意义的话,可以在本地创建一个调用处理程序的 main,或者通过放入 lambda 并在真实条件下进行测试。
您将修改定义(无论它是什么,直接在 aws 控制台、SAM、无服务器框架、cloudformation 或其他任何地方)。
如果出现问题,您应该恢复到 3.6 以使您的流程正常工作并单独调查。
【解决方案2】:
要在 AWS 控制台中执行此操作,请转到 Lambda 控制台,找到您的函数并单击其名称。 (例如,eu-west-1 console)。向下滚动到页面底部并查找“运行时设置”。单击“编辑”,然后您可以从列表中的可用运行时中选择新的运行时。
或者,您可以使用命令行查找所有具有 python3.6 运行时的 Lambda 函数:
aws --region REGION lambda list-functions \
--query 'Functions[?Runtime == `python3.6`].FunctionName'
该命令将返回具有python3.6 运行时的函数名称列表。
请注意,Lambda 是一项区域服务,因此您必须在部署了 Lambda 函数的每个区域中运行该命令行,并将 REGION 的值更改为 eu-west-1 之类的值,以检查该区域中的函数。
如果你超级自信并且只想优洛它,然后您可以运行此命令来更新函数的运行时。对于从先前命令中获得的每个函数名称,请执行以下操作:
aws --region REGION lambda update-function-configuration \
--function-name "FUNCTION-NAME" --runtime 'python3.8'
您必须在 CLI 中输入您所在地区的值和函数名称的值。
如果您通过 CloudFormation 或 CDK 部署您的 lambda,则根本不需要这样做。您更新 CloudFormation 或 CDK,然后创建 ChangeSet,然后部署 ChangeSet。