使用lambda函数将数据发送到kinesis流(在不同的AWS账户中)

时间:2017-06-22 08:38:03

标签: amazon-web-services aws-lambda amazon-kinesis

我有一个写入kinesis流的lambda函数。但是现在,我想写一个属于不同AWS账户的kinesis流。假设我拥有所有必要的跨账户权限,我该如何将数据发送到此流?当我调用kinesis构造函数或putRecord函数时,我该如何更改参数?

2 个答案:

答案 0 :(得分:2)

上面的方法在技术上可行,但硬编码信誉或甚至将信誉配置成lambda似乎对我来说有点无关紧要,因为lambdas本身要求你有一个角色。您需要做的是创建一个跨账户信任并使用sts承担角色。

使用kinesis流在帐户中创建一个角色,并将其设置为信任您的lambda角色。

为该角色授予一个允许其放入kinesis流的策略。

在你的lambda代码中,使用sts在带有kinesis流的帐户中创建一个会话并放入你的记录。

请注意,您的lambda将需要一个策略,允许它进入第二个帐户的角色。

这里有更清楚的描述 Providing Access to Accounts you Own

答案 1 :(得分:0)

首先,您需要配置Kinesis实例:

(我选择Javascript作为例子)

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

有关更多信息,请查看Constructing a Kinesis object

要编写/放置记录,请使用以下

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

有关更多信息,请查看Calling the putRecord operation