由kinesis引发的跨帐户lambda触发器

时间:2017-02-24 21:55:42

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

我正试图通过帐户'A'中的Kinesis流在帐号'B'中触发lambda。这类似于所描述的here,除了示例使用S3而不是Kinesis。

要做到这一点,我正在尝试设置正确的权限,但遇到了困难。

首先我添加此权限:

  aws lambda add-permission \
--function-name "$function_name" \
--statement-id 'Id-123' \
--action "lambda:InvokeFunction" \
--principal $source_account \
--source-arn "$stream_arn" \
--source-account $source_account \
--region us-east-1 \
--profile "$profile"

$source_account是“A”的帐户ID。

然后我尝试创建源映射:

 aws lambda create-event-source-mapping \
    --event-source-arn "$stream_arn" \
    --function-name "$function_name" \
    --starting-position TRIM_HORIZON \
    --region us-east-1 \
    --profile "$profile"

我收到以下错误:

  

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

我不明白这个错误。它说我想做的事是不可能的吗?但是后来如何用S3完成here,这本质上是相同的机制?

2 个答案:

答案 0 :(得分:0)

不支持在AWS Kinesis和Lambda之间创建跨账户事件源映射。 Kinesis事件源映射使用轮询,而不是S3的推送模型。

答案 1 :(得分:0)

Amazon Kinesis流的AWS Lambda函数仅在两者都在同一帐户中时有效。

如果您要调用帐户B中的函数,则可以将部署在帐户A中的扇出功能钩接到帐户A中的流中,并要求它以交叉帐户角色调用帐户B中的函数。目标类型为Lambda并指定帐户B中的角色。