2017-10-09 98 views
-3

我的主要目標是:1.訪問Redis的(elasticache)羣集從拉姆達的NodeJS調用awscli使用的NodeJS

我一直在試圖找出我的出路訪問使用拉姆達Redis的集羣詳細信息。我在這個過程中取得了很好的進展,然而,我陷入了一個需要使用NodeJs Lambda函數調用awscli的地步。

我走遍搞清楚這個問題是我第一次決定使用「awscli」

最初嘗試和拉Elasticache集羣的詳細信息的方式,我想出了一個方法來查詢並列出所有羣

命令:AWS elasticache描述緩存集羣 - 顯示,緩存節點信息

分開,每服務,我們創建

命令的結果:AWS elasticache描述緩存集羣--cache集羣-id abc- rcache --show-cache-node-info

進一步鑽取命令以獲得我需要的結果,即彈性緩存的主機詳細信息。

command:aws elasticache describe-cache-clusters --cache-cluster-id abc-rcache --show-cache-node-info | grep地址

現在,我的要求是在NodeJS lambda中調用上述命令(awscli),我發現了一些結果,但他們傾向於python,但是,我不清楚如何在NodeJS中執行此操作(或者我沒有正確理解)。

挖掘更多,因爲我發佈:)

任何意見,將不勝感激。

問候, 薩米爾Varpe

回答

2

您可以直接使用彈性緩存SDK,而不是調用與CLI的NodeJS。 一切都可以用CLI做也是可行的SDK,

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ElastiCache.html

例如,

var elasticache = new AWS.ElastiCache(); 
elasticache.addTagsToResource(params, function (err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

希望它能幫助。

+0

作爲Kannaiyan建議,使用SDK。在Lambda中解析CLI中的輸出是有問題的。使用CLI將增加Lambda的運行時間。這可能不是你的情況的一個因素,只是單挑。 –

+0

謝謝你們會試試看 – Sameer

0

我能夠通過使用awscli本身的同事的幫助找出問題並分析結果並得到確切的結果。

//import { Aws, Options } from 'aws-cli-js'; 
var awsCli = require('aws-cli-js'); 
var Options = awsCli.Options; 
var Aws = awsCli.Aws; 
//const options = new Options(
// aws_access_key_id = ID 
//aws_secret_access_key = Key2 
    /* currentWorkingDirectory */ null 
//); 


const aws = new Aws(); 

return aws.command('elasticache describe-cache-clusters --cache-cluster-id abc-rcache --show-cache-node-info').then((data) => { 
console.log(JSON.parse(data.raw).CacheClusters[0].CacheNodes[0].Endpoint.Address); 
console.log(JSON.parse(data.raw).CacheClusters[0].CacheNodes[0].Endpoint.Port); 
}); 
//describe-instances 
//awsCli.command('ec2 describe-instances --instance-ids i-789b3ba7').then(function (data) { 
// console.log('data = ', data); 
//}); 

感謝關內對你的迴應:)。

〜乾杯, 薩米爾Varpe