2017-10-09 66 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