我试图通过帐户“A”中的 Kinesis 流触发帐户“B”中的 lambda。这与描述的类似here https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/,但该示例使用 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"
Where $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 https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/与S3,本质上是一样的机制吗?
仅当两者位于同一账户中时,Amazon Kinesis 流的 AWS Lambda 函数才有效。
如果您想调用账户 B 中的函数,您可以将账户 A 中部署的扇出函数挂接到账户 A 中的流,并要求它以跨账户角色调用账户 B 中的函数。创建类型为 的目标Lambda 并指定账户 B 中的角色。
- https://github.com/aws-samples/aws-lambda-fanout https://github.com/aws-samples/aws-lambda-fanout
- 如何扇出 AWS kinesis 流? https://stackoverflow.com/questions/40058427/how-to-fanout-an-aws-kinesis-stream
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)