#python #amazon-web-services #aws-lambda #boto3
Вопрос:
Я использую код, аналогичный приведенному ниже, для запуска функции AWS Lambda в своей учетной записи AWS educate, при запуске этой функции на лямбде ничего не срабатывает (лямбда работает с той же полезной нагрузкой в тестовой конфигурации). Мой сеанс и разрешения также верны, поскольку я могу использовать boto3 для доступа к ресурсам S3 с теми же учетными данными. Что я могу попытаться исправить/устранить эту проблему?
Приношу извинения, если это расплывчато (я знаю, что это так), но я очень смущен тем, почему это происходит
import boto3
import json
AWS_ACCESS_KEY_ID ="XXXXXXXXXXXXXXXXXX"
AWS_SECRET_ACCESS_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXX"
REGION = 'us-east-1'
session = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
payload = json.dumps({"function":"tweets","amount":10,"time":10})
client = boto3.client('lambda',
region_name=REGION,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_session_token = session)
response = client.invoke(
FunctionName="MyFunctionARN",
InvocationType="RequestResponse",
Payload=payload
)
Комментарии:
1. В чем заключаются ошибки, вы распечатали свой ответ
print(response)
?2. Пожалуйста, обратите внимание, что вызов функции отличается от запуска функции. Вызов непосредственно приведет к запуску функции. Запуск используется, когда служба AWS запускает функцию в ответ на событие (например, новый файл в S3 запускает функцию).
3. проверьте журналы, чтобы узнать, удалось ли это/не удалось docs.aws.amazon.com/lambda/latest/dg/…
4. Я добавил ответ на печать в код, и теперь он ожидает лямбда-ответа и успешно запускается, после удаления инструкции печати он продолжал работать, я не уверен, что опубликовать в качестве решения, так как он начал работать без изменений?
Ответ №1:
Каждая лямбда-функция имеет функцию обработчика, которая является записью кода. По умолчанию это lambda_handler. Вы также можете изменить функцию обработчика по умолчанию в настройках среды выполнения. Следующий код решит вашу проблему.
import boto3
import json
AWS_ACCESS_KEY_ID ="XXXXXXXXXXXXXXXXXX"
AWS_SECRET_ACCESS_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXX"
REGION = 'us-east-1'
session = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
def lambda_handler(event,context):
payload = json.dumps({"function":"tweets","amount":10,"time":10})
client = boto3.client('lambda',
region_name=REGION,
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
aws_session_token = session)
response = client.invoke(
FunctionName="MyFunctionARN",
InvocationType="RequestResponse",
Payload=payload
)