1.3.0 • Published 1 year ago

@ixor/aws-cdk-ixor-ingests3 v1.3.0

Weekly downloads
4
License
MIT
Repository
github
Last release
1 year ago

@ixor/aws-cdk-ixor-ingests3 module

This aws-cdk stack can be used create the following components:

+------+                                                               +---------------+
|      |   +-------IngestS3 Construct-----------------------------+    |               |
| File |   |                                                      |  +-> Step Function |
|      |   |                                                      |  | |               |
+--+---+   | +-----------+      +-----------+      +-----------+  |  | +---------------+
   |       | |           |      |           |      |           +-----+
   +---------> SNS Topic +------> SQS Queue +------>  Lambda   |  |    +---------------+
           | |           |      |           |      |           +-----+ |               |
           | +-----------+      +-----------+      +-----------+  |  +->    Lambda     |
           |                                                      |    |               |
           |                                                      |    +---------------+
           +------------------------------------------------------+

Use this construct in a stack where the S3 bucket that requires the trigger is created.

An example (you can copy this to a cdk project to test on sandbox):

import * as cdk from 'aws-cdk-lib';
import {Bucket} from "aws-cdk-lib/aws-s3";
import {Construct} from 'constructs';
import {IngestS3, LambdaTargetLambda, LambdaTarget} from "../../../aws-cdk-ixor-ingests3/lib/aws-cdk-ixor-ingests3";
import {StackProps} from "aws-cdk-lib";
import {Function, IFunction, Code, Runtime} from "aws-cdk-lib/aws-lambda";
import path = require('path');

export interface S3Props {
    suffix?: string,
    prefix?: string,
    lambdaTargetTimeoutSeconds?: number,
    lambdaTarget: LambdaTarget,
    resourceBasename: string
}

interface TestIngestS3Props extends StackProps {
    bucketName: string,
    triggerList?: S3Props[],
}

export class TestAwsCdkIxorIngests3Stack extends cdk.Stack {
    public bucket: Bucket;
    private consumer_lambda: IFunction;
    constructor(scope: Construct, id: string, props: TestIngestS3Props) {
        super(scope, id, props);

        // Create a bucket in which the trigger will be placed
        this.bucket = new Bucket(this, "test-ingests3", {bucketName: props.bucketName});

        // Create the lambda that needs to be triggered
        this.consumer_lambda = new Function(this, "ingestionConsumer-lambda", {
            functionName: `ingestionConsumer-lambda`,
            // Optionally: add logging code to test whether works well and place it in appropriate folder
            code: Code.fromAsset(path.join(__dirname, '../test_ingestion_handler')),
            handler: "test_ingestion_handler.lambda_handler",
            runtime: Runtime.PYTHON_3_8,
            timeout: cdk.Duration.seconds(120)
        })

        // Create the construct necessary so that when a file test_ingestions3.json is put in the bucket
        // with prefix triggers, the lambdaTarget will be triggered by that
        let ingestS3 = new IngestS3(this, "myIngestS3", {
            bucket: this.bucket,
            prefix: 'triggers/',
            suffix: 'test_ingestions3.json',
            lambdaTarget: new LambdaTargetLambda("ingestionConsumer-lambda"),
            resourceBasename: "myIngestS3"
        });
    }
}
1.2.0

1 year ago

1.2.0-12

1 year ago

1.2.0-rc-13

1 year ago

1.0.0

1 year ago

1.0.1-rc.0

1 year ago

1.3.0

1 year ago

0.0.9-3

3 years ago

0.0.9-2

3 years ago

0.0.9-1

3 years ago

0.0.8

3 years ago

0.0.9-0

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.3-beta.3

4 years ago

0.0.3-beta.2

4 years ago

0.0.3-beta.1

4 years ago

0.0.3-beta.0

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago