Я создаю Угловой SPA с хранилищем данных Cloudant на Bluemix.Безопасность облачного запроса от OpenWhisk
Поскольку реализация Bluemix из OpenWhisk не использует VCAP услуг, я вижу 3 вариант использовать OpenWhisk как мой провайдер API для Cloudant запросов для моего приложения: Угловой
- Следуйте образец передачи учетных данных, как показано здесь: https://github.com/IBM-Bluemix/openwhisk-visionapp (очень интересный подход кстати)
- Включить учетные данные, как будто я бегу на месте, как показано здесь: https://github.com/IBM-Bluemix/nodejs-cloudant/blob/master/app.js
- Используйте HTTP API, как показано здесь:. https://docs.cloudant.com/api.html (который выдвигает на первый план проблему безопасности передачи учетных данных
Поскольку мой сервис не предназначен для публикации (он предназначен для моего собственного приложения), я думаю, что вариант 2 - это мой выбор «наименее всего». Я что-то упускаю? Мое мышление таково, что в то время как хрупкое изменение было бы самым безопасным, поскольку учетные данные не передаются в открытом доступе. Безсерверная инфраструктура должна быть взломана ...
Заранее благодарен!
(длинный) Update: (извинения заранее)
Я получил немного дальше вдоль, но до сих пор нет ответа - застрял в исполнении прямо сейчас.
Чтобы уточнить, моя цель - приложение для потока от Углового клиента -> OpenWhisk -> Cloudant.
В этом простейшем случае я хочу передать параметр startTime и параметр endTime, запустите OpenWhisk все записи в этом временном диапазоне со всеми полями и передав выбранные поля. В моем примере у меня есть данные о землетрясениях USGS в модифицированном формате GeoJSON.
Следующая информация из следующих статей ниже, я пришел к выводу, что могу вызвать действия командной строки wsk и использовать привязки, которые я установил, из моей функции Javascript и, следовательно, не передавать мои учетные данные в базу данных. Это дает мне меру безопасности (все еще сомневаюсь в остальной конечной точке моего действия OpenWhisk), но я думаю, что когда я получу свой пример, я думаю, что через эту часть.
Моя командная строка (которая работает): wsk action invoke /[email protected]_mybluemixspace/mycfAppName/exec-query-find --blocking --result --param dbname perils --param query {\"selector\":{\"_id\":{\"$gt\":0},\"properties.time\":{\"$gt\":1484190609500,\"$lt\":1484190609700}}}
Это успешно возвращает следующее:
{ "docs": [ { "_id": "eq1484190609589", "_rev": "1-b4fe3de75d9c5efc0eb05df38f056a65", "dbSaveTime": 1.484191201099e+12, "fipsalpha": "AK", "fipsnumer": "02", "geometry": { "coordinates": [ -149.3691, 62.5456, 0 ], "type": "Point" }, "id": "ak15062242", "properties": { "alert": null, "cdi": null, "code": "15062242", "detail": "http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/ak15062242.geojson", "dmin": null, "felt": null, "gap": null, "ids": ",ak15062242,", "mag": 1.4, "magType": "ml", "mmi": null, "net": "ak", "nst": null, "place": "45km ENE of Talkeetna, Alaska", "rms": 0.5, "sig": 30, "sources": ",ak,", "status": "automatic", "time": 1.484190609589e+12, "title": "M 1.4 - 45km ENE of Talkeetna, Alaska", "tsunami": 0, "type": "earthquake", "types": ",geoserve,origin,", "tz": -540, "updated": 1.484191127265e+12, "url": "http://earthquake.usgs.gov/earthquakes/eventpage/ak15062242" }, "type": "Feature" } ] }
Действие Я создал в OpenWhisk (ниже) возвращает Внутренняя ошибка сервера. Я передаю значение входного сигнала, как
{ "startTime": "1484161200000", "endTime": "1484190000000" }
Вот код для моего действия:
`var openWhisk = require('openwhisk');
var ow = openWhisk({
api_key:'im really a host'
});
function main(params) {
return new Promise(function(resolve, reject) {
ow.actions.invoke({
actionName:'/[email protected]_mybluemixspace/mycfAppName/exec-query-find',
blocking:true,
parameters:{
dbname: 'perils',
query: {
"selector": {
"_id": {
"$gt": 0
},
"properties.time": {
"$gt": params.startTime,
"$lt": params.endTime
}
}
}
}
}).then(function(res) {
//get the raw result
var raw = res.response.result.rows;
//lets make a new one
var result = [];
raw.forEach(function(c) {
result.push({id:c.docs._id, time:c.docs.properties.time, title:c.docs.properties.title});
});
resolve({result:result});
});
});
}`
Вот ссылки на мои исследования: http://infrastructuredevops.com/08-17-2016/news-openwhisk-uniq.html
Полезные из-за использования exec- запрос-поиск и использование синтаксиса селектора, но также классно для функции обновления, которую мне нужно создать для заполнения моих данных!
https://www.raymondcamden.com/2016/12/23/going-serverless-with-openwhisk
Статья ссылается @csantanapr
ли я с видом что-то?
Спасибо!