【发布时间】:2017-02-24 21:55:42
【问题描述】:
我正在尝试通过帐户“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):角色和事件源必须与云函数在同一帐户中
我不明白这个错误。是说我想做的事是不可能的吗?但是后来here 和 S3 是如何实现的,本质上是相同的机制?
【问题讨论】:
-
你有没有注意到有一点:注意主体变成了S3服务(它得到一个服务名称而不是一个帐号),而实际的帐号移动到“source-account “ 范围。但是您仍然使用 $source_account 作为主体尝试将其更改为 Kinesis 服务。我认为它会起作用。
标签: amazon-web-services aws-lambda amazon-kinesis