通过CDK中的ARN将eventSource添加到Lambda

hat*_*lla 3 amazon-web-services aws-cdk

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

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

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

但我有流 ARN。有什么方法可以利用它来添加事件源。或者我必须导出表本身?

jog*_*old 7

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

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

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>/*');
);
Run Code Online (Sandbox Code Playgroud)