UNPKG

aws-ddk-core

Version:

The AWS DataOps Development Kit is an open source development framework for customers that build data workflows and modern data architecture on AWS.

64 lines (54 loc) 2.21 kB
import * as integration from "@aws-cdk/integ-tests-alpha"; import * as cdk from "aws-cdk-lib"; import * as lambda from "aws-cdk-lib/aws-lambda"; import * as s3 from "aws-cdk-lib/aws-s3"; import { Construct } from "constructs"; import { RequireApproval } from "aws-cdk-lib/cloud-assembly-schema"; import { CICDPipelineStack, DataPipeline, FirehoseToS3Stage, SqsToLambdaStage } from "../../src"; interface CICDPipelineTestStackProps extends cdk.StackProps {} class CICDPipelineTestStack extends cdk.Stack { constructor(scope: Construct, id: string, props: CICDPipelineTestStackProps) { super(scope, id, props); const devStage = new cdk.Stage(this, "dev"); const devStack = new cdk.Stack(devStage, "application-stack"); const bucket = new s3.Bucket(devStack, "Bucket", {removalPolicy: cdk.RemovalPolicy.DESTROY}); const firehoseToS3Stage = new FirehoseToS3Stage(devStack, "Firehose To S3 Stage", { s3Bucket: bucket }); const sqsToLambdaStage = new SqsToLambdaStage(devStack, "SQS To Lambda Stage", { lambdaFunctionProps: { code: lambda.Code.fromInline("def lambda_handler(event, context): return 200"), handler: "lambda_function.lambda_handler", memorySize: 512, runtime: lambda.Runtime.PYTHON_3_9, }, }); const pipeline = new DataPipeline(devStack, "Pipeline", {}); pipeline.addStage({ stage: firehoseToS3Stage }).addStage({ stage: sqsToLambdaStage }); new CICDPipelineStack(this, "dummy-pipeline", { environmentId: "cicd", pipelineName: "dummy-pipeline" }) .addSourceAction({ repositoryName: "dummy-repository" }) .addSynthAction() .buildPipeline() .addStage({ stageId: "dev", stage: devStage }) .synth(); } } const app = new cdk.App(); new integration.IntegTest(app, "CICD Pipeline Stack Integration Tests", { testCases: [ new CICDPipelineTestStack(app, "CICDPipeline", {}), ], diffAssets: true, stackUpdateWorkflow: true, cdkCommandOptions: { deploy: { args: { requireApproval: RequireApproval.NEVER, json: true, }, }, destroy: { args: { force: true, }, }, }, });