在将eventSource添加到lambda函数时,deploy不再工作。
const lambda = require('@aws-cdk/aws-lambda-nodejs');
const eventSource = require('@aws-cdk/aws-lambda-event-sources');
const fn = new lambda.NodejsFunction(this, 'tableConfigDynamoStreams', {
entry: 'lambda/info/info.js',
});
const streamEventSource = new eventSource.DynamoEventSource(this.dynamoStack.tableInventory.configTable, {
batchSize: 1
});
fn.addEventSource(streamEventSource)堆栈中的configTable保存已经生成的dynamodb表(在另一个堆栈中)。在执行fn.addEventSource(streamEventSource)代码行之前,一切都运行正常。
The following resource(s) failed to create: [tableConfigDynamoStreamsDyn
amoDBEventSource....发布于 2021-03-09 20:27:11
确保已经在dynamodb表stream: StreamViewType.NEW_IMAGE上启用了stream。
下面的代码为我工作,它类似于你的代码。
import * as cdk from '@aws-cdk/core';
import { StartingPosition } from '@aws-cdk/aws-lambda';
import { AttributeType, BillingMode, StreamViewType, Table } from '@aws-cdk/aws-dynamodb';
import { DynamoEventSource } from '@aws-cdk/aws-lambda-event-sources';
import { Construct, Stack } from '@aws-cdk/core';
import { NodejsFunction } from '@aws-cdk/aws-lambda-nodejs';
export class CdkDemoStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, readonly dynamoStack: DynamoStack, props?: cdk.StackProps) {
super(scope, id, props);
const demoFn = new NodejsFunction(this, 'DemoFunction', {
entry: 'lambda/index.js'
});
const streamEventSource = new DynamoEventSource(this.dynamoStack.configTable, {
batchSize: 1,
startingPosition: StartingPosition.TRIM_HORIZON
});
demoFn.addEventSource(streamEventSource);
}
}
export class DynamoStack extends Stack {
readonly configTable: Table;
constructor(scope: Construct, id: string) {
super(scope, id)
this.configTable = new Table(this, 'ConfigTable', {
partitionKey: {
name: 'id',
type: AttributeType.STRING
},
stream: StreamViewType.NEW_IMAGE
});
}
}我的bin/infra.ts文件如下所示
#!/usr/bin/env node
import * as cdk from '@aws-cdk/core';
import { CdkDemoStack, DynamoStack } from '../lib/cdk-demo-stack';
const app = new cdk.App();
const dynamoDbStack = new DynamoStack(app, 'DynamoStack')
new CdkDemoStack(app, 'CdkDemoStack', dynamoDbStack); 注意:我使用的是CDK版本1.92.0。
https://stackoverflow.com/questions/66542807
复制相似问题