我的主要目标是: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
答案 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