在CDK中通过ARN将事件源添加到Lambda

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CDK中通过ARN将事件源添加到Lambda相关的知识,希望对你有一定的参考价值。

我有一个lambda函数,它从Dynamodb流中读取。我有从同一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。有什么办法可以利用它来添加事件源。或者我必须自己导出表格?

答案

目前无法使用AWS CDK导入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>/*');
);

以上是关于在CDK中通过ARN将事件源添加到Lambda的主要内容,如果未能解决你的问题,请参考以下文章

从 Terraform cdk deploy lambda 获取属性

如何授权 lambda 使用 CDK 执行 ses:SendEmail?

如何将AWS API网关阶段指向特定的lambda函数别名?

将入站规则添加到安全组 aws cdk

如何将生命周期策略添加到 AWS CDK Typescript 中的现有 S3 存储桶

如何将 VPC 和安全组分配给 AWS CDK 中的 Lambda?