我試圖通過節點應用程序連接到Bluemix上的Message Hub服務實例。我能夠通過cfenv連接在文件給出:如何使用cfenv和vcap服務通過節點應用程序連接到bluemix上的Message Hub服務
var Cfenv = require('cfenv');
var appEnv = Cfenv.getAppEnv();
if(restEndpoint && apiKey) {
appEnv.services = {
"messagehub": [
{
"label": "messagehub",
"credentials": {
"api_key": apiKey,
"kafka_rest_url": restEndpoint,
}
}
]
};
} else {
console.error('A REST Endpoint and API Key must be provided.');
process.exit(1);
}
爲了這個,我在我的節點的應用程序,這是在Bluemix服務憑據創建直接給API密鑰和restEndpoint。
restEndpoint = "https://kafka-rest-**************"
apiKey = "*******************"
但我不想在代碼本身給出上述細節以保證安全。那麼無論如何,我可以阻止提供上述憑據並致電該服務?我開始知道我們可以使用cfenv和VCAP_serives來實現它,但我不知道如何去做。有人可以幫我提一些想法嗎?
我在這裏編輯我的問題本身, 我使用cfenv從我的節點應用程序連接到消息中心服務,但是這些值是硬編碼的,如下所示。
restEndpoint = "https://kafka-rest-***************************"
apiKey = "******************************"
if(restEndpoint && apiKey) {
appEnv.services = {
"messagehub": [
{
"label": "messagehub",
"credentials": {
"api_key": apiKey,
"kafka_rest_url": restEndpoint,
}
}
]
};
} else {
console.error('A REST Endpoint and API Key must be provided.');
process.exit(1);
}
var instance = new MessageHub(appEnv.services);
但現在推到bluemix我的環境變量(VCAP服務)
"messagehub": [
{
"credentials": {
"mqlight_lookup_url": "https://mqlight*********",
"api_key": "**************",
"kafka_admin_url": "https://kafka-admin-***********",
"kafka_rest_url": "https://kafka-rest-********",
"user": "*****",
"password": "*******"
},
"syslog_drain_url": null,
"label": "messagehub",
"provider": null,
"plan": "standard",
"name": "Message Hub",
"tags": [
"ibm_dedicated_public",
"web_and_app",
"ibm_created"
]
}
]
所以,我怎麼可以連接到信息樞紐服務使用上述VCAP_SERVICES而不是之後對代碼本身的值進行硬編碼。
謝謝。
謝謝@Mickael。但我的應用程序在本地,那麼我在哪裏可以看到環境變量,即如何獲取process.env.VCAP_SERVICES? –
我已經更新了我的答案,希望它有幫助 –
我在Bluemix中添加了解析VCAP_SERVICES的示例代碼 –