【问题标题】:How to update multiple Lambda functions from python 2.7 to 3.6如何将多个 Lambda 函数从 python 2.7 更新到 3.6
【发布时间】:2021-08-17 19:10:49
【问题描述】:

我在 python 2.7 运行时环境中有大约 13 个带有触发器的 Lambda 函数。我需要更新到 3.6

最有效的方法是什么?我需要创建所有新的 lambdas 吗?如果出现问题,我能否回滚到 2.7 lambda?

任何帮助将不胜感激。

【问题讨论】:

    标签: python-3.x python-2.7 aws-lambda


    【解决方案1】:

    如果您想手动执行此操作,请转到 Lambda 控制台 -> 操作 -> 导出函数 -> 下载部署包。这将下载包含 Lambda 和任何支持库的 zip。可以通过使用正确的名称和角色以及运行时创建一个新的 Lambda,然后使用 Upload From -> .zip 文件选项来逆转此过程。 这就是您可以备份 Lambda 并手动恢复它们的方式。

    要更新运行时,只需进入 Lambda 控制台 -> 代码并滚动到运行时设置以更改运行时。取决于您的 Lambda 从 Python 2 跳转到 3 的代码可能不会运行 - 所以仅仅更改运行时可能不是您需要做的唯一事情。

    如果你想编写更新运行时的脚本,那么你可以像这样使用 CLI 命令:

    aws lambda update-function-configuration --function-name "YourFunctionName" --runtime "python3.6"

    【讨论】:

      【解决方案2】:

      您可以在 AWS 管理控制台中的代码下方为您的 lambda 处理程序尝试运行时设置。您可以在那里选择您的运行时(例如 Python 3.8 或 2.7)。由您来解决所有向后兼容性问题。

      显然,这意味着您需要为每个处理程序执行此操作。 如果您还没有这样做,更好的方法是使用无服务器并从 serverless.yaml 配置文件部署您的堆栈。

      请注意,从 2021 年 7 月中旬开始,AWS 将开始第一阶段终止对 python 2.7 的支持。因此,对于更面向未来的解决方案,最好考虑到这一点。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        正如@markonic 所说,您需要处理您的代码以与python3.X 兼容。

        但只有将 lambda 运行时从 2.7 更改为 3.6,您可以使用以下命令:

         aws lambda --region 'us-east-1' update-function-configuration \
        --function-name ArnOfYourFunction \
        --runtime python3.6
        

        你可以使用相同的命令回滚到python2.7更改参数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-05-28
          • 1970-01-01
          • 1970-01-01
          • 2017-11-21
          • 1970-01-01
          • 2019-07-04
          • 1970-01-01
          相关资源
          最近更新 更多