2017-10-09 6 views
-3

Mon objectif principal est: 1. Appeler Redis (ElastiCache) grappe de NodeJS lambdaAppel à l'aide awscli NodeJS

j'ai essayé de comprendre mon chemin pour accéder aux détails du cluster Redis en utilisant lambda. J'ai fait de bons progrès dans ce processus, cependant, je suis bloqué à un point où j'ai besoin d'appeler awscli en utilisant la fonction NodeJs Lambda.

La façon dont je suis allé tenter de comprendre ce problème était j'ai décidé d'essayer de tirer les détails du groupe ElastiCache en utilisant « awscli »

Dans un premier temps, je me suis une sortie pour interroger et liste tous les groupes

commande: aws ElastiCache décrivent-cache-clusters-cache-noeud-info

séparaient le résultat que par le service que nous avons créé

commande: SSFE ElastiCache describe-cache-clusters --cache cluster -id abc- rcache --show-cache-node-info

En outre foré vers le bas de la commande pour obtenir le résultat que j'avais besoin des détails de l'hôte pour cache élastique.

commande: aws elasticache description-cache-clusters --cache-cluster-abc-rcache --show-cache-node-info | Maintenant, mon exigence est d'invoquer la commande ci-dessus (awscli) dans un lambda NodeJS, je trouve quelques résultats mais ils penchent vers python, cependant, on ne sait pas comment je dois le faire dans NodeJS (ou peut-être que je ne comprends pas correctement).

Creuser plus que je posterai :)

Toutes les suggestions seraient appréciés.

Cordialement, Sameer Varpe

Répondre

2

Vous pouvez utiliser directement SDK cache élastique au lieu d'appeler CLI avec nodejs. Tout ce que vous pouvez faire avec cli est également possible avec le SDK,

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

Par ex,

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

Hope it helps.

+0

Comme Kannaiyan recommandé, utiliser le kit de développement. L'analyse de la sortie de la CLI dans Lambda est problématique. L'utilisation de la CLI augmentera le temps de fonctionnement de Lambda. Cela peut ne pas être un facteur dans votre cas juste un heads-up. –

+0

Merci les gars vont essayer – Sameer

0

J'ai pu résoudre le problème avec l'aide de mes collègues utilisant awscli lui-même et analyser le résultat pour obtenir le résultat exact.

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

Merci Kannaiyan pour votre réponse à ce sujet :).

~ Cheers, Sameer Varpe