#amazon-web-services #amazon-s3 #aws-lambda #amazon-vpc #aws-security-group
Вопрос:
Я пытался подключиться к корзине S3 из лямбды, расположенной в частной подсети. Я сделал то же самое для экземпляра Ec2, и это сработало как заклинание, я не уверен, почему с лямбдой это такая проблема. Время ожидания моей лямбды истекает через определенный интервал.
Вот конфигурация VPC моей лямбды
Вот конфигурация вывода группы безопасности:
Ниже приведены исходящие правила подсети, связанной с lambda
Как вы можете видеть, я создал конечную точку VPC для маршрутизации трафика через VPC, но это не работает. Я не уверен, что я здесь упускаю. Ниже приведена конфигурация конечной точки VPC.
Я предоставил полный доступ к S3 в политике, подобной этой:
{
"Statement": [
{
"Action": "*",
"Effect": "Allow",
"Resource": "*",
"Principal": "*"
}
]
}
Когда я запускаю свой лямбда-код, я получаю ошибку тайм-аута, как показано ниже:
Ответ №1:
Чтобы воспроизвести вашу ситуацию, я выполнил следующие действия:
- Создал функцию AWS Lambda, которая вызывает
ListBuckets()
. Протестировал его без подключения к VPC. Это сработало отлично. - Создал VPC только с частной подсетью
- Добавлен шлюз конечной точки Amazon S3 в VPC и подсеть
- Перенастроил функцию Lambda для использования VPC и подсети
- Протестировал лямбда-функцию-она работала нормально
Я подозреваю, что ваша проблема может заключаться в группе безопасности, подключенной к функции Lambda. Я оставил свои исходящие правила как «Весь трафик 0.0.0.0/0», вместо того, чтобы ограничивать его. Попробуйте и посмотрите, станет ли от этого лучше.
Комментарии:
1. Привет @Джон. ListBuckets() работает и для меня. Однако list_objects_v2() или list_objects() fxn выдают мне ошибку тайм-аута. Я не уверен, почему это так, но если бы это был политический вопрос, он бы выбросил 403. Вот код: ibb.co/nB8VN40
2. Если вы можете перечислять ведра, но не перечислять объекты, то это очень странно. Это значит, что у вас все в порядке с подключением. Я не знаю, что могло бы вызвать тайм-аут. Есть ли в ведре много предметов? Если это так, попробуйте увеличить время ожидания Лямбды еще немного. Кстати, код не использует
Prefix
то, что вы определили.3. Я удалил префикс, чтобы посмотреть, может ли он напрямую перечислять объекты, доступные непосредственно внутри корзины. В ведре не так много предметов. Я увеличил время ожидания до 30 секунд, но все равно возникают те же проблемы… в любом случае спасибо за помощь