DynamoDB在另一个帐户中触发Lambda函数

时间:2018-07-30 19:12:00

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

我在帐户A中有一个DynamoDB表,在帐户B中有一个AWS Lambda函数。当DynamoDB表中有更改时,我需要触发Lambda函数。

我碰到了aws lambda - It is possible to Access AWS DynamoDB streams accross accounts? - Stack Overflow,说不可能。但是我再次发现amazon web services - Cross account role for an AWS Lambda function - Stack Overflow表示可能。我不确定哪一个是正确的。

有人尝试过与我尝试实现的场景相同的场景吗?

2 个答案:

答案 0 :(得分:0)

所指向的第一个链接是正确的。从基于流的事件到Lambda的触发器仅限于相同的AWS帐户和相同的区域。


但是,有一种方法可以实现您的目标。


Pre-requisite:我假设您已经在AWS帐户 A 中创建了一个Dynamo DB(DDB)表(简称为 Table_A )。另外,您在AWS帐户 B 中有一个处理lambda(简称为 Processing_Lambda )。


步骤:

  1. 在帐户 A 中创建一个新的代理lambda(简称为 Proxy_Lambda )。此lambda将广播其处理的事件。
  2. 在DDB表 Table_A 上启用发电机流。此流将包含在表上完成的所有更新/插入/删除事件。
  3. Proxy_Lambda 创建一个lambda触发器,以从 Table_A 的dynamo数据库表流中读取事件。
  4. 在AWS帐户 A
  5. 中创建新的SNS主题(简称为 AuditEventFromTableA
  6. Proxy_Lambda 中添加代码,以便将从流中读取的事件发布到SNS主题 AuditEventFromTableA


  7. 创建一个AWS SQS队列(如果您的用例需要顺序事件,也可以是FIFO队列)。此队列存在于AWS账户 B 中。我们将此队列称为 AuditEventQueue-TableA-AccountA

  8. 为存在于AWS账户 A 中的SNS主题 AuditEventFromTableA 预订到存在于AWS账户 AuditEventQueue-TableA-AccountA 的订阅strong> B 。这将允许在帐户 B 的SQS队列中接收帐户 A 的所有SNS事件。
  9. 为存在于AWS账户 B 中的 Processing_Lambda 创建触发器,以使用来自SQS队列 AuditEventQueue-TableA-AccountA 的消息。

Result:这样,您将可以基于帐户A的发电机表中的变化来触发帐户B中存在的lambda。

注意:如果您的用例要求严格跟踪顺序事件,则您可能希望将更新事件从 Proxy_Lambda 直接发布到帐户B中存在的AWS Kinesis流中,而不是SNS-SQS路径中。 / p>

答案 1 :(得分:0)

简单! 在帐户A中创建代理Lambda A,并允许A调用目标Lambda Bin帐户B。 DDB流触发lambdaA。LambdaA调用Lambda B。