Skip to main content

AWS CDK Construct that run a Fargate task. Stack will process only when Fargate task executed successfully and all containers exit with code 0, otherwise rollback

Project description

Waitcondition Hook for AWS Fargate task

WaitCondition hook for AWS Fargate tasks is a AWS CDK Construct that helps builders to run a AWS Fargate task with one or multiple container embedded into a CloudFormation lifecycle. You can use this construct add dependency between resources and the AWS Fargate task execution result (eg. Database migration, image build and packing, invoking third party/on-prem API). waitcondition-hook-for-aws-fargate-task construct will also handle the failure of the task, and rollback the CloudFormation stack after.

Prerequisites

  1. An AWS account
  2. AWS Cloud Development Kit (CDK). For more information about this, see AWS CDK Toolkit (cdk command) in the AWS CDK documentation.
  3. Node package manager (npm), installed and configured for CDK Typescript. For more information about this, see Downloading and installing Node.js and npm in the npm documentation.

Target architecture

Workflow

Deployment steps

Install the package:

yarn add aitcondition-hook-for-aws-fargate-task

Usage:

import * as cdk from 'aws-cdk-lib';
import { RemovalPolicy } from 'aws-cdk-lib';
import { Vpc } from 'aws-cdk-lib/aws-ec2';
import * as ecr from 'aws-cdk-lib/aws-ecr';
import * as ecs from 'aws-cdk-lib/aws-ecs';
import { LogGroup } from 'aws-cdk-lib/aws-logs';
import { Construct } from 'constructs';
import { FargateRunner } from 'waitcondition-hook-for-aws-fargate-task';
import { Queue } from 'aws-cdk-lib/aws-sqs';

export class FargateRunnerTestStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props);
        // Define the VPC
        const vpc = new Vpc(this, 'MyVpc')
        // Define the Fargate Task
        const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTask', {});
        // Import exiting ecr repo
        const repo = ecr.Repository.fromRepositoryName(this, 'MyRepo', 'RepoName');
        // Add a container to the task
        taskDefinition.addContainer('MyContainer', {
            image: ecs.ContainerImage.fromEcrRepository(repo),
        });
        // Create the Fargate runner
        const myFargateRunner = new FargateRunner(this, 'MyRunner', {
            fargateTaskDef: taskDefinition,
            timeout: `${60 * 5}`,
            vpc: vpc,
        });
        // Create the SQS queue
        const myQueue = new Queue(this, 'MyQueue', {});
        // Add dependency
        myQueue.node.addDependency(myFargateRunner);
    }
}
const app = new cdk.App();

const env = {
    account: process.env.CDK_DEFAULT_ACCOUNT,
    region: process.env.CDK_DEFAULT_REGION,
};
new FargateRunnerTestStack(app, 'FargateRunnerTestStack', { env: env });

Deploy!

cdk deploy

Useful CDK commands

  • npm run build compile typescript to js
  • npm run watch watch for changes and compile
  • npm run test perform the jest unit tests
  • cdk deploy deploy this stack to your default AWS account/region
  • cdk diff compare deployed stack with current state
  • cdk synth emits the synthesized CloudFormation template

Security

See CONTRIBUTING for more information.

License

This library is licensed under the MIT-0 License. See the LICENSE file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

File details

Details for the file waitcondition-hook-for-aws-fargate-task-1.0.6.tar.gz.

File metadata

File hashes

Hashes for waitcondition-hook-for-aws-fargate-task-1.0.6.tar.gz
Algorithm Hash digest
SHA256 bd78b60c2c8e9403fb0dac6c0de4d2f3a36d2ed996beeee8b644963225314a2e
MD5 e603c1b44f70db0baa51afdb2f9e6588
BLAKE2b-256 c77ae9cc508ab0ecbea29eb63b2e60073219cabe80435171c4e7f19f6f0c97f8

See more details on using hashes here.

File details

Details for the file waitcondition_hook_for_aws_fargate_task-1.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for waitcondition_hook_for_aws_fargate_task-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f5a8540bca6f585eee5fd81588a54ba2dc73c5e4d32cfba9a4e2d55cd4a615c5
MD5 3a78ef0ed1a589af42d32e6da9474152
BLAKE2b-256 23afd31e5fb8444fb213131a849fb02d2f417b84b6143cd727b8c67983dff8e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page