可以跨帐户访问AWS DynamoDB流吗?

时间:2016-08-10 02:49:33

标签: amazon-dynamodb aws-lambda

我的公司使用多帐户系统管理AWS。我在帐户A中有一个lambda函数,在帐户B中启用了Stream的DynamoDB表。我希望流事件能够触发我的函数。

当我跑步时:

  

aws lambda create-event-source-mapping   --event-source-arn arn:aws:dynamodb:us-east-1:101010101:table / table / stream / 2016-08-09T23:00:46.852   --function-name Lambda-qa   --enabled   --batch-size 10    - 起始位置TRIM_HORIZON

我收到以下错误: 调用CreateEventSourceMapping操作时发生错误(InvalidParameterValueException):角色和事件源必须与云函数位于同一帐户中

看起来Lambda函数和DynamoDB流必须位于同一帐户中。但是可以通过其他方式从accountB读取accountA中的DynamoDB流吗?重定向,SNS,SQS,S3或自定义应用程序。

2 个答案:

答案 0 :(得分:2)

不幸的是,没有。

来自AWS文档:

"重要

您必须在创建Lambda函数的同一区域中创建DynamoDB表。本教程假设美国东部(弗吉尼亚北部)地区。 此外,表和Lambda函数必须属于同一个AWS账户 。"

(强调补充)

参考: http://docs.aws.amazon.com/lambda/latest/dg/with-ddb-configure-ddb.html

答案 1 :(得分:1)

由于DynamoDB在其流中使用了后端的 Kinesis ,因此您无法在DynamoDB表和lambda之间创建跨帐户事件源映射。

在以下来自AWS的博客文章中对此进行了记录:

How do I invoke my Lambda function using a cross-account Kinesis stream?

Lambda 当前不支持Kinesis或任何基于流的来源中的跨帐户触发

博客文章还提供了一种解决方法:

作为一种解决方法,可以在与Kinesis流(帐户A)相同的帐户中使用“轮询” Lambda函数,以在另一个帐户(帐户B)中调用“处理器” Lambda函数。