constructor()

in infra/resources/events.ts [22:121]


    constructor(scope: Construct, id: string, props: EventConstructsProps) {
        super(scope, id);

        const triggerRekognitionCustomLabelsTraining = new lambda.Function(
            this,
            "groundtruth-eventchange-handler",
            {
                runtime: lambda.Runtime.DOTNET_CORE_3_1,
                handler:
                    "GroundTruthJobHandler::GroundTruthJobHandler.Function::FunctionHandler",
                code: lambda.Code.fromAsset(
                    "../packages/lambdas/GroundTruthJobHandler/src/GroundTruthJobHandler/bin/Debug/netcoreapp3.1"
                ),
                environment: {
                    TrainingTableName: props.trainingTable.tableName,
                    TrainingBucket: props.trainingBucket.bucketName,
                    RekognitionCustomLabelsProjectVersionArnParameterName:props.RekognitionCustomLabelsProjectVersionArnParameter.parameterName,
                    RekognitionCustomLabelsProjectArnParameterName:props.RekognitionCustomLabelsProjectArnParameter.parameterName,
                },
            }
        );

        const triggerRekognitionCustomLabelsTrainingRole =
            triggerRekognitionCustomLabelsTraining.role;

        if (triggerRekognitionCustomLabelsTrainingRole) {
            props.trainingBucket.grantReadWrite(
                triggerRekognitionCustomLabelsTrainingRole
            );

            permissionUtils.addDynamoDbPermissions(props.trainingTable,triggerRekognitionCustomLabelsTrainingRole)

            triggerRekognitionCustomLabelsTrainingRole.addManagedPolicy(
                iam.ManagedPolicy.fromAwsManagedPolicyName(
                    "service-role/AWSLambdaBasicExecutionRole"
                )
            );
        }

        const checkDatasetHandler = new lambda.Function(
            this,
            "check-dataset-handler",
            {
                runtime: lambda.Runtime.DOTNET_CORE_3_1,
                handler:
                    "CheckDatasetHandler::CheckDatasetHandler.Function::FunctionHandler",
                code: lambda.Code.fromAsset(
                    "../packages/lambdas/CheckRekognitionProject/src/CheckRekognitionProject/bin/Debug/netcoreapp3.1"
                ),
                environment: {
                    TrainingTableName: props.trainingTable.tableName,
                    TrainingBucket: props.trainingBucket.bucketName,
                    RekognitionCustomLabelsProjectVersionArnParameterName:props.RekognitionCustomLabelsProjectVersionArnParameter.parameterName,
                    RekognitionCustomLabelsProjectArnParameterName:props.RekognitionCustomLabelsProjectArnParameter.parameterName,
                },
            }
        );

        const checkDatasetHandlerRole = checkDatasetHandler.role;

        if (checkDatasetHandlerRole) {

            props.trainingBucket.grantReadWrite(checkDatasetHandlerRole);

            permissionUtils.addDynamoDbPermissions(props.trainingTable,checkDatasetHandlerRole)


            checkDatasetHandlerRole.addManagedPolicy(
                iam.ManagedPolicy.fromAwsManagedPolicyName(
                    "service-role/AWSLambdaBasicExecutionRole"
                )
            );
        }

        const GroundTruthStateChangeRule = new events.Rule(
            this,
            "ground-truth-rule",
            {
                eventPattern: {
                    source: ["aws.sagemaker"],
                    detailType: ["SageMaker Ground Truth Labeling Job State Change"],
                },
                targets: [
                    new eventTargets.LambdaFunction(
                        triggerRekognitionCustomLabelsTraining,
                        {}
                    ),
                ],
            }
        );

        const checkDatasetRule = new events.Rule(
            this,
            "CheckRekognitionDatasetStatus",
            {
                schedule: events.Schedule.cron({minute: "15"}),
                targets: [new eventTargets.LambdaFunction(checkDatasetHandler, {})],
            }
        );
    }