Cloudemix에 Cloudant 데이터 저장소가있는 Angular SPA를 구축하고 있습니다. 본OpenWhisk의 클라우드 쿼리 보안
- 이 통과 자격 증명의 패턴을 따라 OpenWhisk의 Bluemix 구현 VCAP 서비스를 사용하지 않기 때문에
, 내 각도 응용 프로그램에 대한 cloudant 쿼리에 대한 내 API를 공급자로 OpenWhisk를 사용하는 3 개 가지 옵션 참조 https://github.com/IBM-Bluemix/nodejs-cloudant/blob/master/app.js
- 사용 여기에 본으로는 HTTP API : 여기에 : 나는 로컬로 실행 해요 것처럼 여기와 같이 https://github.com/IBM-Bluemix/openwhisk-visionapp (매우 흥미로운 접근 방식 BTW)
- 는 자격 증명을 포함합니다. 자격 증명을 전달하는 보안 문제를 강조 https://docs.cloudant.com/api.html (
내 서비스가 게시 목적이 아니기 때문에 (내 응용 프로그램 용) 내 생각에는 옵션 2가 "가장 나쁜 것"이라고 생각합니다. 내가 놓친 게 있니? 나의 생각은 변화하기 쉽지 만 신임장이 공개되지 않기 때문에 가장 안전하다고 생각합니다. 서버가없는 인프라는 해킹되어야합니다 ...
미리 감사드립니다!
(긴) 업데이트 : (미리 사과)
내가 더 함께하지만 여전히 아무 대답 좀 쪘 구만 - 실행에 붙어 지금.
분명히하기 위해, 내 목표는 응용 프로그램을 앵귤러 클라이언트 -> OpenWhisk -> 클라우드에서 흐르게하는 것입니다.
이 간단한 사용 예에서는 startTime 매개 변수와 endTime 매개 변수를 전달하고 OpenWhisk에서 모든 필드로 해당 시간 범위의 모든 레코드를 가져오고 선택한 필드를 다시 전달하도록하고 싶습니다. 예를 들어, USGS 지진 데이터가 수정 된 GeoJSON 형식으로되어 있습니다.
다음 기사의 정보에 따라 wsk 명령 줄 작업을 호출하고 Javascript 함수 내에서 설정 한 바인딩을 사용하여 데이터베이스에 내 자격 증명을 전달할 수 없다는 결론을 얻었습니다. 이것은 보안에 대한 척도를 제공합니다 (여전히 OpenWhisk 액션의 나머지 끝점에 질문을 던집니다).하지만 필자가 샘플을 실행하면 그 부분을 생각해냅니다. (작동)
내 명령 행 :
는 { "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 (아래)에서 생성 된 작업은 내부 서버 오류를 반환 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}}}
이 성공적으로 다음과 같은 반환합니다. 때문에 exec-의 사용 http://infrastructuredevops.com/08-17-2016/news-openwhisk-uniq.html
유용한 : 여기
`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});
});
});
}`
내 연구에 대한 링크입니다 : 나는 여기에 내 행동에 대한 코드의
{ "startTime": "1484161200000", "endTime": "1484190000000" }
로 입력 값을 전달 해요 쿼리 찾기 및 선택기 구문 사용뿐만 아니라 내 데이터를 채우기 위해 구축해야하는 업데이트 기능에 대해 멋지다!
https://www.raymondcamden.com/2016/12/23/going-serverless-with-openwhisk
@csantanapr
에 의해 참조 기사 건가요 내가 뭔가를 내려다?
감사합니다.