首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Aws-cdk addEventsource失败

Aws-cdk addEventsource失败
EN

Stack Overflow用户
提问于 2021-03-09 15:51:08
回答 1查看 200关注 0票数 0

在将eventSource添加到lambda函数时,deploy不再工作。

代码语言:javascript
复制
   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)代码行之前,一切都运行正常。

代码语言:javascript
复制
The following resource(s) failed to create: [tableConfigDynamoStreamsDyn
amoDBEventSource....
EN

回答 1

Stack Overflow用户

发布于 2021-03-09 20:27:11

确保已经在dynamodb表stream: StreamViewType.NEW_IMAGE上启用了stream。

下面的代码为我工作,它类似于你的代码。

代码语言:javascript
复制
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文件如下所示

代码语言:javascript
复制
#!/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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66542807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档