【问题标题】:Aws-cdk addEventsource failingAws-cdk addEventsource 失败
【发布时间】:2021-03-09 07:51:07
【问题描述】:

将 eventSource 添加到 lambda 函数后,部署不再工作。

   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....

【问题讨论】:

    标签: aws-cdk


    【解决方案1】:

    确保您已在 dynamodb 表 stream: StreamViewType.NEW_IMAGE 上启用流。

    以下代码对我有用,它与您的代码相似。

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-21
      • 1970-01-01
      • 2023-01-16
      • 2022-01-19
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多