我的公司使用多帐户系统管理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或自定义应用程序。
答案 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函数。