private createTriggerStateMachineLambda()

in infra/stack/mlops/mlops-pipeline-stack.ts [383:407]


    private createTriggerStateMachineLambda(baseName: string, bucket: s3.Bucket, stateMachine: sfn.StateMachine) {
        const func = new lambda.Function(this, `${baseName}-trigger-statemachine`, {
            functionName: `${this.projectPrefix}-${baseName}TriggerSateMachine`,
            runtime: lambda.Runtime.PYTHON_3_7,
            code: lambda.Code.fromAsset('codes/lambda/mlops-trigger-statemachine/src'),
            handler: 'handler.handle',
            environment: {
                EndpointName: `${this.projectPrefix}-${baseName}`,
                StateMachineArn: stateMachine.stateMachineArn,
                BucketKeyForInput: this.bucketKeyForInput,
                BucketKeyForOutput: this.bucketKeyForOutput
            },
            timeout: cdk.Duration.minutes(1)
        });

        bucket.grantRead(func);
        stateMachine.grantStartExecution(func);

        func.addEventSource(new lambda_event.S3EventSource(bucket, {
            events: [s3.EventType.OBJECT_CREATED_PUT],
            filters: [{ prefix: this.bucketKeyForInput }]
        }));

        return func;
    }