Время ожидания клиента AWS Lambda Python Boto3.invoke() истекает независимо от того, какие параметры были введены

#python #amazon-web-services #aws-lambda #boto3

Вопрос:

Я пытаюсь вызвать одну лямбда-функцию из другой, и код, который я использую в вызывающей функции, является:

 client=boto3.client('lambda')
services={'Image_Processor':'arn'}
response=client.invoke(FunctionName=services[event['service']], InvocationType='DryRun', Payload=json.dumps(event))
 

Там нет сообщения об ошибке, и я попытался установить продолжительность тайм-аута до 10 минут, но я все еще не могу получить никакого результата, кроме:

 {
  "errorMessage": "2021-08-12T17:13:18.946Z de2feefa-9923-40bd-a555-bf5de54712ee Task timed out after 20.02 seconds"
}
 

Любая помощь была бы очень признательна.

Комментарии:

1. Подключена ли функция AWS Lambda (то есть тайм-аут) к VPC? Если да, то есть ли какая-то особая причина , по которой он подключен к VPC?

Ответ №1:

Похоже, вы говорите, что при вызове функции Лямбда А истекает время ожидания при вызове функции Лямбда В.

Распространенным сценарием является то, что время ожидания вызвано отсутствием функции Лямбда А, не имеющей доступа к Интернету. Конечная точка API AWS находится в Интернете, и функция Lambda A требует доступа в Интернет для вызова функции Lambda B.

Для доступа в Интернет функция Lambda должна либо:

  • НЕ подключаться к VPC (который затем автоматически предоставляет доступ в Интернет), или
  • Быть подключенным к частной подсети, и VPC должен иметь интернет-шлюз в общедоступной подсети, чтобы предоставить доступ к Интернету, или
  • Настройте конечные точки интерфейса VPC для Lambda, что создает прямое соединение между VPC и конечной точкой API AWS Lambda

Комментарии:

1. Они находятся в VPC, и я не настроил конечную точку, но вызывающая функция может успешно выполнять вызовы SQL к таблице, которую я настроил с помощью Aurora, что подразумевает доступ в Интернет, не так ли?

2. Есть ли какая-то особая причина, по которой вы решили подключить функцию AWS Lambda к VPC?

3. Не особенно; не существует ли повышенных рисков для безопасности, если функции не будут помещены в VPC?

4. Не следует подключать функцию AWS Lambda к VPC. Затем у него автоматически появится доступ в Интернет, и он сможет общаться как с Amazon Aurora, так и с Amazon Lambda. В такой конфигурации нет встроенных возможностей, поэтому она так же безопасна, как и установка ее в VPC. Лучший выбор по умолчанию- не помещать лямбда-функцию в VPC, если для этого нет причин.

5. Хорошо, спасибо за совет. Тогда я попробую это сейчас.