private createLambda()

in lib/template/pattern/lambda-construct.ts [35:79]


  private createLambda(lambdaName: string, lambdaPath: string, lambdaRole: iam.Role, props: LambdaPatternConstructProps): lambda.Function {
    var layers = this.loadLayers(lambdaName, props.layerArns!);

    const lambdaFunction = new lambda.Function(this, lambdaName, {
      functionName: lambdaName,
      code: lambda.Code.fromAsset(lambdaPath),
      handler: props.handler != undefined ? props.handler : 'handler.handle',
      runtime: lambda.Runtime.PYTHON_3_7,
      timeout: props.timeout != undefined ? props.timeout : cdk.Duration.seconds(60 * 3),
      role: lambdaRole,
      environment: props.environments,
      layers: layers.length > 0 ? layers : undefined,
    });

    if (props.bucket != undefined) {
      const filterList: any[] = [];
      // const filters: any = {};
      if (props.bucketPrefix != undefined && props.bucketPrefix.length > 0) {
        for (var item of props.bucketPrefix) {
          lambdaFunction.addEventSource(new S3EventSource(props.bucket, {
            events: [s3.EventType.OBJECT_CREATED_PUT, s3.EventType.OBJECT_CREATED_COPY],
            filters: [{prefix: item}]
          }));
          // filterList.push({prefix: item});
          // filters['prefix'] = props.bucketPrefix;
        }
      }
      if (props.bucketSuffix != undefined && props.bucketSuffix.length > 0) {
        for (var item of props.bucketSuffix) {
          lambdaFunction.addEventSource(new S3EventSource(props.bucket, {
            events: [s3.EventType.OBJECT_CREATED_PUT, s3.EventType.OBJECT_CREATED_COPY],
            filters: [{suffix: item}]
          }));
          // filterList.push({suffix: item});
          // filters['suffix'] = props.bucketSuffix;
        }
      }
      // lambdaFunction.addEventSource(new S3EventSource(props.bucket, {
      //   events: [s3.EventType.OBJECT_CREATED],
      //   filters: filterList
      // }));
    }

    return lambdaFunction;
  }