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;
}