#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. Хорошо, спасибо за совет. Тогда я попробую это сейчас.