Не удалось подключить Lambda в частной подсети к S3 через конечную точку VPCE

#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 секунд, но все равно возникают те же проблемы… в любом случае спасибо за помощь