Указание имени корзины в loopback-компонент-хранилище для S3
Я столкнулся с препятствиями, используя хранилище loopback-component-storage с Amazon S3. В качестве теста я пытаюсь загрузить файл на S3 из моего приложения браузера, которое вызывает мой loopback API на сервере.
Мой серверный конфиг для datasources.json выглядит так:
"s3storage": {
"name": "s3storage",
"connector": "loopback-component-storage",
"provider": "amazon",
"key": “blahblah”,
"keyId": “blahblah”
},
Моя конечная точка API: '/api/Storage'
Ответ об ошибке, который я получаю от API, выглядит следующим образом:
. error: {name: "MissingRequiredParameter", status: 500, message: "Missing required key 'Bucket' in params",…}
. code: "MissingRequiredParameter"
. message: "Missing required key 'Bucket' in params"
. name: "MissingRequiredParameter"
. stack: "MissingRequiredParameter: Missing required key 'Bucket' in params …”
. status: 500
. time: "2015-03-18T01:54:48.267Z"
Как передать параметр {"params": {"Bucket": "bucket-name"}} в мой REST API loopback?
Пожалуйста посоветуй. Большое спасибо!
2 ответа
Контейнеры AFAIK известны как контейнеры в мире https://github.com/strongloop/loopback-component-storage или pkgcloud.
Вы можете указать контейнер в ваших параметрах URL. Если ваша цель /api/Storage
тогда вы укажете свой контейнер в этом пути с чем-то вроде /api/Storage/container1/upload
как формат PATH/:DATASOURCE/:CONTAINER/:ACTION
,
Посмотрите на тесты здесь для большего количества примеров: https://github.com/strongloop/loopback-component-storage/blob/4e4a8f44be01e4bc1c30019303997e61491141d4/test/upload-download.test.js#L157
Облом. "контейнер" в основном переводится как "ведро" для S3. Я пытался передать объект params через POST, но дьявол был в деталях, т.е. путь HTTP POST для загрузки искал корзину / контейнер в самом пути. / api / Storage / abc / upload означало, что "abc" был контейнером.