【问题标题】:Adding eventSource to Lambda by ARN in CDK通过 CDK 中的 ARN 将 eventSource 添加到 Lambda
【发布时间】:2019-09-10 02:33:55
【问题描述】:

我有一个从 Dynamodb 流中读取的 lambda 函数。我有从同一个 AWS 账户中的另一个堆栈导出的 Dynamodb 流 ARN。现在,在 Lambda 中添加 eventSource 时,它​​从 Table 构造中询问。

const function = new lambda.Function(...);
function.addEventSource(new DynamoEventSource(table, {
  startingPosition: lambda.StartingPosition.TrimHorizon
}));

参考:https://awslabs.github.io/aws-cdk/refs/_aws-cdk_aws-lambda-event-sources.html#dynamodb-streams

但我有流 ARN。有什么办法可以利用它来添加事件源。还是我必须自己导出表格?

【问题讨论】:

标签: amazon-web-services aws-cdk


【解决方案1】:

目前无法使用 AWS CDK 导入 DynamoDB 表。 Importing a DynamoDB table

您仍然可以通过直接使用来自@aws-cdk/aws-lambdaEventSourceMapping 类来实现您的目标:

import iam = require('@aws-cdk/aws-iam');
import lambda = require('@aws-cdk/aws-lambda');

const fn = new lambda.Function(...);

new lambda.EventSourceMapping(this, 'DynamoDBEventSource', {
  target: fn,
  batchSize: ...,
  eventSourceArn: <your stream arn>,
  startingPosition: lambda.StartingPosition.TrimHorizon
});

fn.addToRolePolicy(
  new iam.PolicyStatement()
    .addActions('dynamodb:DescribeStream', 'dynamodb:GetRecords', 'dynamodb:GetShardIterator', 'dynamodb:ListStreams')
    .addResource('<your stream arn>/*');
);

【讨论】:

  • 成功了。非常感谢。我一直在努力寻找这个答案。
  • 在哪里可以找到流 arn?
  • @Matthew 在 DynamoDB 控制台的“导出和流”选项卡中
猜你喜欢
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2023-01-24
  • 2021-09-18
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
相关资源
最近更新 更多