我的公司使用多账户系统管理AWS。我在帐户a中有一个lambda函数,在帐户b中有一个启用流的DynamoDB表。我希望流事件触发我的函数。
当我运行:
aws lambda创建事件源映射——event-source-arn攻击:aws: dynamodb: us-east-1:101010101:表/表/流/2016 - 08 - 09 - t23:00:46.852——函数名Lambda-qa——启用——批大小10——起始位置TRIM_HORIZON
我得到以下错误:调用CreateEventSourceMapping操作时发生错误(InvalidParameterValueException):角色和事件源必须与云函数在同一帐户
看起来Lambda函数和DynamoDB流必须在同一个帐户中。但是可以通过其他方式从accounb中读取accountA中的DynamoDB流吗?重定向、SNS、SQS、S3或自定义应用。
遗憾的是,没有。
来自AWS文档:
"重要
必须在创建Lambda函数的同一区域中创建DynamoDB表。本教程假设美国东部(弗吉尼亚州北部)地区。另外,表和Lambda函数必须属于同一个AWS账户。"
(重点)
参考:http://docs.aws.amazon.com/lambda/latest/dg/with-ddb-configure-ddb.html
由于DynamoDB在后端为其流使用Kinesis,因此您不能在DynamoDB表和lambda之间创建跨帐户事件源映射。
这在以下AWS的博客文章中有记录:
我如何调用我的Lambda函数使用跨帐户Kinesis流?
Lambda 目前不支持来自Kinesis或任何基于流的源的跨帐户触发器。
该博客文章还提供了一个解决方案:
作为一种解决方案,您可以在与Kinesis流(帐户a)相同的帐户中使用"轮询器"Lambda函数来调用另一个帐户(帐户B)中的"处理器"Lambda函数。