Добавление eventSource в Lambda с помощью ARN в CDK - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть лямбда-функция, которая читает из потока Dynamodb.У меня есть поток ARN Dynamodb, экспортированный из другого стека в той же учетной записи AWS.Теперь, добавляя eventSource в Lambda, он запрашивает конструкцию 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.Есть ли способ, которым я могу использовать это, чтобы добавить источник события.Или я должен экспортировать саму таблицу?

1 Ответ

1 голос
/ 20 апреля 2019

В настоящее время невозможно импортировать таблицу DynamoDB с AWS CDK.

Тем не менее, вы можете достичь своей цели, используя 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>/*');
);
...