【问题标题】:Import pytz into AWS lambda function将 pytz 导入 AWS lambda 函数
【发布时间】:2016-04-26 16:26:52
【问题描述】:

我正在编写一个适用于日期时间的 lambda 函数并尝试导入 pytz,以便在比较时考虑时区。

import boto3
import pytz
from datetime import timedelta, date, datetime
from boto3.dynamodb.conditions import Key, Attr

导致显示

{errorMessage=Unable to import module 'lambda_function'}

但是当我删除 import pytz 时,函数会触发(如果没有时区信息,它就无法正常工作)

【问题讨论】:

    标签: python python-3.x timezone aws-lambda pytz


    【解决方案1】:

    要跟进@cheframzi 对“以 python/pytz/... 格式打包 pytz zip 文件”作为 Lambda 层的回答,这里有一种方法。

    mkdir python
    pip3 install -t python pytz=='2019.2'
    zip -r pytz.zip python
    rm -rf python
    

    然后您可以使用aws lambda publish-layer-version --layer-name <layer_name> --zip-file fileb://./pytz.zip 部署新版本的层。

    只要库安装在压缩文件的python/pytz 级别,AWS Lambda 应该能够找到它。您也可以将它放在 python/lib/python3.8/site-packages\pytz 中,但对于您的特定 python 运行时版本,请参见此处:https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html

    【讨论】:

      【解决方案2】:

      我今天遇到了这个问题。我解决的方法是

      • 以 python/pytz/... 库文件格式打包一个 pytz zip 文件
      • 创建了一个 Lambda 层
      • 在我的 lambda 中使用了上面的层

      【讨论】:

        【解决方案3】:

        如果您在您的环境中无权访问pytz,也许您可​​以访问python-dateutil。在这种情况下,您可以这样做:

        import datetime
        import dateutil.tz
        
        eastern = dateutil.tz.gettz('US/Eastern')
        datetime.datetime.now(tz=eastern)
        

        参考。 How to get current time in Pacific Timezone when import pytz fails?

        【讨论】:

        • 完美答案。很高兴在没有外部库的情况下使用此功能。
        【解决方案4】:

        您需要安装 pytz 包,以便它可用于您的 lambda。您执行此操作的方法是将 pip 安装到您要压缩并上传到 AWS 的目录中(即与包含您的 lambda 函数的文件对等)。

        pip install -t path/to/your/lambda pytz
        

        然后当你把它压缩并上传时,它就可以使用了。

        编辑添加我创建了一个工具来为你做很多事情 - 你可以在这里找到它:https://github.com/jimjkelly/lambda-deploy

        【讨论】:

        • 我希望避免这种情况,但我感觉您可能是正确的。我将尝试找到另一种方法来实现我的最终目标,但现在标记为正确答案。非常感谢。
        • 我实际上一直在开发一种工具来自动执行此操作(以及为您处理将其推送到 AWS),但我还没有将它推送到 github。当您使用带有编译位的库时,会遇到很大的痛苦。 ://
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 1970-01-01
        • 2022-06-22
        • 2018-04-25
        • 2023-03-30
        • 1970-01-01
        • 2019-02-23
        相关资源
        最近更新 更多