in lib/template/pattern/lambda-pattern.ts [53:88]
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[] = [];
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 }]
}));
}
}
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 }]
}));
}
}
}
return lambdaFunction;
}