API Gateway Proxy для S3 с подкаталогами - PullRequest
0 голосов
/ 30 мая 2018

Я создал метод шлюза API GET с типом интеграции «Сервис AWS» для «S3».Я определил переопределение пути: {объект}, который сопоставлен из method.request.path.item

Integration Request

Пока путь содержит только сегментсам (./bucket/mybucketname), он работает и значение {item} равно mybucketname .

Но когда я укажу, например, ../bucket/ mybucketname / foo / bar / test.txt в качестве пути значение {item} должно быть mybucketname / foo / bar / test.txt, но оно пусто .Я думаю, что это из-за вложенного пути

Когда я выбираю переменные пути общего доступа {proxy +}, я больше не могу выбирать тип интеграции "Сервис AWS".

Любые намеки на то, чтоЯ делаю что-то не так или что мне следует сделать, чтобы получить файлы / папки в подпапках из S3 через API Gateway?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Ключ - то, как вы передаете значение для переменной {object} в Переопределении пути.Я думаю, вы установили параметр пути URL для запроса интеграции из пути запроса, например:

object = method.request.path.object     

Я считаю, что проблема была в том, что в объекте есть символ "/", как и в пути API (ресурсе).Это приводит к тому, что шлюз API может распознавать только объекты в корневом пути.

Что я делаю, так это устанавливаю параметр пути URL для запроса интеграции из строки запроса следующим образом:

object = method.request.querystring.object

Это работает

Или вы можете попробовать закодировать путь к объекту, используя URLкодировать, заменить "/" на "% 2F".Я никогда не пробовал все же.

0 голосов
/ 17 июля 2019

Переопределение пути: шаблон bucket_name / {folder} в соответствии с уровнем, для первого {folder}.

enter image description here

Вы можете получить доступ к вложенному пути s3 следующим образом.enter image description here

это для последнего {объекта}, поэтому упоминается вся карта пути.эта ссылка поможет https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html

0 голосов
/ 05 июня 2018

@ johnny90, сначала сконфигурируйте как лямбда-прокси при создании ресурса {proxy +} ... После создания .. Обновите тип интеграции как «Сервис AWS». Затем вы можете настроить любую сервис AWS для своего шлюза API.

...