使用nodeJS

时间:2017-10-09 20:42:24

标签: node.js amazon-web-services lambda redis aws-cli

我的主要目标是:1。从NodeJS lambda访问redis(弹性)群集

我一直试图找出使用lambda访问Redis群集详细信息的方法。我在这个过程中取得了很好的进展,但是,我仍然需要使用NodeJs Lambda函数调用awscli。

我解决这个问题的方法是我首先决定尝试使用'awscli'来提取Elasticache集群的细节

最初,我想出了一条查询和列出所有集群的方法

命令:aws elasticache describe-cache-clusters --show-cache-node-info

根据我们创建的服务分离结果

命令:aws elasticache describe-cache-clusters --cache-cluster-id abc-rcache --show-cache-node-info

进一步向下钻取命令以获得我需要的结果,即弹性缓存的主机细节。

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

现在,我的要求是在NodeJS lambda中调用上面的命令(awscli),我发现了一些结果但他们倾向于python,但是,我不清楚我需要在NodeJS中做些什么(或者也许我没有正确理解。)

我发帖时更多地挖掘:)

任何建议将不胜感激。

此致 Sameer Varpe

2 个答案:

答案 0 :(得分:2)

您可以直接使用弹性缓存SDK,而不是使用nodejs调用CLI。 使用SDK,

也可以使用cli做的一切

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
});

希望它有所帮助。

答案 1 :(得分:1)

我能够通过使用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); 
//});

感谢Kannaiyan对此的回应:)。

〜干杯, Sameer Varpe