2017-06-22 3 views
0

J'ai une fonction lambda qui écrit dans un flux de kinésis. Mais maintenant, je veux écrire dans un flux de kinésis qui appartient à un autre compte AWS. En supposant que j'ai toutes les autorisations de compte croisées nécessaires, comment puis-je envoyer des données à ce flux? Comment dois-je modifier les paramètres lorsque j'appelle le constructeur kinesis ou la fonction putRecord?Envoi de données au flux kinesis (dans un compte AWS différent) à l'aide de la fonction lambda

Répondre

0

D'abord, vous devez configurer l'instance Kinesis:

(j'ai choisi Javascript pour l'exemple)

var kinesis = new AWS.Kinesis({ 
    accessKeyId: 'XXX', 
    secretAccessKey: 'YYY', 
    region: 'eu-west-1', 
    apiVersion: '2013-12-02' 
}); 

Pour plus d'informations un coup d'oeil Constructing a Kinesis object

Pour écrire/mettre un emploi record le suivant

var params = { 
    Data: new Buffer('...') || 'STRING_VALUE', /* required */ 
    PartitionKey: 'STRING_VALUE', /* required */ 
    StreamName: 'STRING_VALUE', /* required */ 
    ExplicitHashKey: 'STRING_VALUE', 
    SequenceNumberForOrdering: 'STRING_VALUE' 
}; 
kinesis.putRecord(params, function (err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

Pour plus d'informat Les ions regardent Calling the putRecord operation

0

Il y a la méthode ci-dessus qui fonctionnerait techniquement, cependant les encodages hardcoding ou même la configuration de creds dans un lambda me semblent un peu étrangers car les lambdas eux-mêmes exigent que vous ayez un rôle. Ce que vous devez faire est de créer une confiance inter-comptes et d'assumer le rôle en utilisant sts.

Créez un rôle dans le compte avec le flux kinésis et définissez-le pour approuver votre rôle lambda.

Donnez à ce rôle une stratégie qui lui permet d'être mis dans le flux Kinesis.

Dans votre code lambda, utilisez sts pour créer une session dans le compte avec le flux kinesis et mettre votre enregistrement.

Notez que votre lambda aura besoin d'une politique lui permettant d'entrer dans le rôle du second compte.

Il est décrit un peu plus clairement ici Providing Access to Accounts you Own