【问题标题】:Cross-account lambda trigger by kinesiskinesis 的跨账户 lambda 触发器
【发布时间】: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


【解决方案1】:

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

如果要调用账户B中的函数,可以将账户A中部署的扇出函数hook到账户A中的流中,并要求它以跨账户角色调用账户B中的函数。创建一个Lambda 类型的目标并在账户 B 中指定角色。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 2019-05-09
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2020-06-02
      • 2020-10-22
      相关资源
      最近更新 更多