constructor()

in provisioning/lib/api-stack.ts [11:36]


    constructor(scope: cdk.Construct, id: string, apiProps: ApiStackProps, props?: cdk.StackProps) {
        super(scope, id, props);

        const userFunction = new lambda.Function(this, 'UserFunction', {
            runtime: lambda.Runtime.PYTHON_3_8,
            code: lambda.Code.asset('../app'),
            environment: {
                DYNAMODB_TABLE_NAME: apiProps.database.table.tableName,
            },
            functionName: 'UserFunction',
            handler: 'app.dispatch_request',
        });
        
        apiProps.database.table.grantReadWriteData(userFunction);

        const userFunctionIntegration = new apigateway.LambdaIntegration(userFunction, {});

        const api = new apigateway.RestApi(this, 'UserRestApi', { restApiName: 'userRestApi' });
        const apiUser = api.root.addResource('user');
        const apiUserId = apiUser.addResource('{user_id}');

        apiUser.addMethod('PUT', userFunctionIntegration);
        apiUserId.addMethod('GET', userFunctionIntegration);
        apiUserId.addMethod('DELETE', userFunctionIntegration);
        apiUserId.addMethod('PATCH', userFunctionIntegration);
    }