Часовой пояс Python, использующий только модули, доступные в AWS Lambda? - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь запустить этот код, адаптированный из этого ответа .

from datetime import datetime
from pytz import timezone
import pytz

def lambda_handler(event, context):

    date_format='%m/%d/%Y %H:%M:%S %Z'
    date = datetime.now(tz=pytz.utc)
    print('Current date & time is:', date.strftime(date_format))

    date = date.astimezone(timezone('US/Pacific'))

    print('Local date & time is  :', date.strftime(date_format))

Я работаю на AWS Lambda. Я получаю эту ошибку:

Response:
{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'pytz'",
  "errorType": "Runtime.ImportModuleError"
}

Как это исправить, используя только импорт, доступный в AWS Lambda? Я хочу, чтобы код был очень минималистичным, чтобы его можно было копировать непосредственно в консоль AWS без необходимости добавлять инструкции по настройке пакетов и т. Д.

1 Ответ

0 голосов
/ 18 марта 2019

Нет простого способа сделать это.

Во время выполнения Lambda Python по умолчанию нет библиотеки, которая знает правила для определенных (нетривиальных) часовых поясов. Модуль datetime определяет API для работы с преобразованиями часовых поясов, но оставляет подробности самих часовых поясов сторонним библиотекам, таким как pytz.

Конечно, вы всегда можете сами указать эти правила часового пояса. Документация tzinfo содержит пример кода для «полной реализации текущих правил перехода на летнее время для основных часовых поясов США». Но это было бы много накладных расходов, и я предполагаю, что это не то, что вы хотите.

...