将pytz导入AWS lambda函数

sco*_*ker 6 python timezone pytz python-3.x aws-lambda

我正在编写一个lambda函数,它可以处理日期时间并尝试导入pytz,因此我可以在比较时考虑时区.

import boto3
import pytz
from datetime import timedelta, date, datetime
from boto3.dynamodb.conditions import Key, Attr
Run Code Online (Sandbox Code Playgroud)

导致它显示

{errorMessage=Unable to import module 'lambda_function'}
Run Code Online (Sandbox Code Playgroud)

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

jim*_*lly 11

您需要安装pytz包,以便它可用于您的lambda.你这样做的方法是将pip安装到你要压缩的目录中并上传到AWS(即与包含lambda函数的文件对等).

pip install -t path/to/your/lambda pytz
Run Code Online (Sandbox Code Playgroud)

然后,当您将其压缩并上传时,它将可用.

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


小智 6

如果您pytz在您的环境中无权访问,则也许您可以访问python-dateutil。在这种情况下,您可以执行以下操作:

import datetime
import dateutil.tz

eastern = dateutil.tz.gettz('US/Eastern')
datetime.datetime.now(tz=eastern)
Run Code Online (Sandbox Code Playgroud)

参考 导入pytz失败时如何获取太平洋时区的当前时间?