Skip to main content

A construct library for deploying artifacts via CodeDeploy inside of a AWS CDK application.

Project description

Deployer CDK Construct

This is a CDK construct library for deploying artifacts via CodeDeploy.

This library currently supports NodeJS and Python.

Installation

Install with npm

$ npm install cdk-deployer

Install with pip

$ pip install cdk-deployer

Usage/Examples

TypeScript:

With codeDeploy.ServerDeploymentGroup:

import * as cdk from '@aws-cdk/core';
import * as autoscaling from '@aws-cdk/aws-autoscaling';
import * as codedeploy from '@aws-cdk/aws-codedeploy';
import { Ec2Deployer, Code } from 'cdk-deployer';

const asg = new autoscaling.AutoScalingGroup(this, 'Asg', {
    ...
});
const deploymentGroup = new codedeploy.ServerDeploymentGroup(this, 'DeploymentGroup', {
    autoScalingGroups: [asg]
});

const deployer = new Ec2Deployer(this, 'Deployer', {
    code: Code.fromAsset('path/to/code/directory'),
    deploymentGroup,
});

With codeDeploy.IServerDeploymentGroup, also need to specify instanceRoles:

import * as cdk from '@aws-cdk/core';
import * as codedeploy from '@aws-cdk/aws-codedeploy';
import * as iam from '@aws-cdk/aws-iam';
import { Ec2Deployer, Code } from 'cdk-deployer';

const deploymentGroup = codedeploy.ServerDeploymentGroup.fromServerDeploymentGroupAttributes(this, 'DeploymentGroup', {
    ...
});

const instanceRole = iam.Role.fromRoleArn(this, 'Role', cdk.Arn.format({
    service: 'iam',
    resource: 'role',
    resourceName: 'instance-role-name' // role assigned to target instances associated with deployment group
}, cdk.Stack.of(this)));

const deployer = new Ec2Deployer(this, 'Deployer', {
    code: Code.fromAsset('path/to/code/directory'),
    deploymentGroup,
    instanceRoles: [instanceRole]
});

Python:

With codeDeploy.ServerDeploymentGroup:

from aws_cdk import (
    core as cdk,
    aws_codedeploy as codedeploy,
    aws_autoscaling as autoscaling,
)
from cdk_deployer import (
    Ec2Deployer,
    Code
)

asg = autoscaling.AutoScalingGroup(self, 'Asg',
    ...)
deployment_group = codedeploy.ServerDeploymentGroup(self, 'DeploymentGroup',
    auto_scaling_groups=[asg])

deployment = Ec2Deployer(self, 'Deployment',
    code=Code.from_asset('path/to/code/directory'),
    deployment_group=deployment_group)

With codeDeploy.IServerDeploymentGroup, also need to specify instance_roles:

from aws_cdk import (
    core as cdk,
    aws_autoscaling as autoscaling,
    aws_codedeploy as codedeploy,
    aws_iam as iam,
)
from cdk_deployer import (
    Ec2Deployer,
    Code
)

deployment_group = codedeploy.ServerDeploymentGroup.from_server_deployment_group_attributes(self, 'DeploymentGroup',
    ...)

instance_role = iam.Role.from_role_arn(self, 'Role', cdk.Arn.format(
    components=cdk.ArnComponents(
        service='iam',
        resource='role',
        resource_name='instance-role-name'),
    stack=cdk.Stack.of(self)
))

deployment = Ec2Deployer(self, 'Deployment',
    code=Code.from_asset('app'),
    deployment_group=deployment_group,
    instance_roles=[instance_role])

See example folder for a more complete example.

Contributing

Contributions of all kinds are welcome and celebrated. Raise an issue, submit a PR, do the right thing.

See CONTRIBUTING.md for contributing guidelines.

License

Apache 2.0

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

cdk-deployer-1.0.13.tar.gz (42.9 kB view details)

Uploaded Source

Built Distribution

cdk_deployer-1.0.13-py3-none-any.whl (41.2 kB view details)

Uploaded Python 3

File details

Details for the file cdk-deployer-1.0.13.tar.gz.

File metadata

  • Download URL: cdk-deployer-1.0.13.tar.gz
  • Upload date:
  • Size: 42.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for cdk-deployer-1.0.13.tar.gz
Algorithm Hash digest
SHA256 816c4cc3a119ba5c9c542342da28690f32867d1abf2f78be41e1d8913299bdff
MD5 3f641b58f53c50b576729a7dd66e0907
BLAKE2b-256 21ad5a5f8248dd2e08f4d6123861d7c71849adaf37e682290ebb9226de76efc8

See more details on using hashes here.

File details

Details for the file cdk_deployer-1.0.13-py3-none-any.whl.

File metadata

File hashes

Hashes for cdk_deployer-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 9d1c1984b23bde6f661304fbe2696831f3f841debb4d4e856d1b6842a8a92219
MD5 113402bdfb66693cbe9082999f15cf0a
BLAKE2b-256 08a8b6f535739ff4636107ad6f5d166b6f19d06f4bab199c231acf62d52ca284

See more details on using hashes here.

Supported by

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