Невозможно импортировать модуль «лямбда_функция»: нет модуля с именем «sendgrid»

Я использую AWS Lambda, Python 3.7 и SendGrid API и хочу отправить электронное письмо, но получаю сообщение об ошибке:

"Unable to import module 'lambda_function': No module named 'sendgrid'"

Есть ли способ решить эту проблему? Я вижу, что в некоторых подобных проблемах модуль будет импортирован откуда-то, но не могу понять, откуда.

Мой лямбда-код — это всего лишь пример кода с веб-сайта SendGrid, значения которого обновлены теми, которые я хочу использовать:

import json
import sendgrid
import os
from sendgrid.helpers.mail import *

def lambda_handler(event, context):

    sg = sendgrid.SendGridAPIClient(apikey=os.environ.get('SENDGRID_API_KEY'))
    from_email = Email("[email protected]")
    to_email = Email("****")
    subject = "Sending with SendGrid is Fun"
    content = Content("text/plain", "and easy to do anywhere, even with Python")
    mail = Mail(from_email, subject, to_email, content)
    response = sg.client.mail.send.post(request_body=mail.get())

    print(response.status_code)
    print(response.body)
    print(response.headers)

Спасибо


person user3165854    schedule 29.03.2019    source источник


Ответы (1)


В лямбда-среде нет модуля sendgrid, доступного для вызова вашего кода. Чтобы использовать зависимости, не являющиеся частью aws sdk или языка (например, библиотеки sendgrid), вам необходимо предварительно собрать код с пакетами локально и загрузить zip-файл. Пример можно найти здесь: лямбда aws python . Существует еще одно переполнение стека, посвященное тому же вопросу Алекса">здесь. Второй содержит некоторые инструменты, облегчающие загрузку.

person Datise    schedule 29.03.2019