【问题标题】:Sending data to kinesis stream (in different AWS account) using lambda function使用 lambda 函数将数据发送到 kinesis 流(在不同的 AWS 账户中)
【发布时间】:2017-06-22 08:38:03
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    为该角色提供一个策略,允许其放入 kinesis 流。

    在您的 lambda 代码中,使用 sts 在帐户中使用 kinesis 流创建会话并放置您的记录。

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

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

    【讨论】:

      【解决方案2】:

      首先您需要配置 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

      【讨论】:

        猜你喜欢
        • 2020-07-08
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-31
        • 1970-01-01
        • 2021-07-17
        • 2023-02-13
        相关资源
        最近更新 更多