Skip to main content

CDK ECS CodeDeploy

cdk-constructs: Experimental npm version Maven Central PyPI version NuGet version Gitpod Ready-to-Code Mergify

This project contains CDK constructs to create CodeDeploy ECS deployments.

Installation

TypeScript
yarn add @cdklabs/cdk-ecs-codedeploy
Java

See https://mvnrepository.com/artifact/io.github.cdklabs/cdk-ecs-codedeploy

Python

See https://pypi.org/project/cdklabs.ecs-codedeploy/

C#

See https://www.nuget.org/packages/Cdklabs.CdkEcsCodeDeploy/

Deployments

CodeDeploy for ECS can manage the deployment of new task definitions to ECS services. Only 1 deployment construct can be defined for a given EcsDeploymentGroup.

from cdk.ecs_codedeploy import TargetService
# deployment_group: codeDeploy.IEcsDeploymentGroup
# task_definition: ecs.ITaskDefinition


EcsDeployment(
    deployment_group=deployment_group,
    target_service=TargetService(
        task_definition=task_definition,
        container_name="mycontainer",
        container_port=80
    )
)

The deployment will use the AutoRollbackConfig for the EcsDeploymentGroup unless it is overridden in the deployment:

from cdk.ecs_codedeploy import TargetService
# deployment_group: codeDeploy.IEcsDeploymentGroup
# task_definition: ecs.ITaskDefinition


EcsDeployment(
    deployment_group=deployment_group,
    target_service=TargetService(
        task_definition=task_definition,
        container_name="mycontainer",
        container_port=80
    ),
    auto_rollback=codeDeploy.AutoRollbackConfig(
        failed_deployment=True,
        deployment_in_alarm=True,
        stopped_deployment=False
    )
)

By default, the deployment will timeout after 30 minutes. The timeout value can be overridden:

from cdk.ecs_codedeploy import TargetService
# deployment_group: codeDeploy.IEcsDeploymentGroup
# task_definition: ecs.ITaskDefinition


EcsDeployment(
    deployment_group=deployment_group,
    target_service=TargetService(
        task_definition=task_definition,
        container_name="mycontainer",
        container_port=80
    ),
    timeout=Duration.minutes(60)
)

API Canaries

CodeDeploy can leverage Cloudwatch Alarms to trigger automatic rollbacks. The ApiCanary construct simplifies the process for creating CloudWatch Synthetics Canaries to monitor APIs. The following code demonstrates a canary that monitors https://xkcd.com/908/info.0.json and checks the JSON response to assert that safe_title has the value of 'The Cloud'.

from cdk.ecs_codedeploy import ApiTestStep
canary = ApiCanary(stack, "Canary",
    base_url="https://xkcd.com",
    duration_alarm_threshold=Duration.seconds(5),
    thread_count=5,
    steps=[ApiTestStep(
        name="info",
        path="/908/info.0.json",
        jmes_path="safe_title",
        expected_value="The Cloud"
    )
    ]
)

Application Load Balanced CodeDeployed Fargate Service

An L3 construct named ApplicationLoadBalancedCodeDeployedFargateService extends ApplicationLoadBalancedFargateService and adds support for deploying new versions of the service with AWS CodeDeploy. Additionally, an Amazon CloudWatch Synthetic canary is created via the ApiCanary construct and is monitored by the CodeDeploy deployment to trigger rollback if the canary begins to alarm.

from aws_cdk.aws_ecs_patterns import ApplicationLoadBalancedTaskImageOptions
from cdk.ecs_codedeploy import ApiTestStep
# cluster: ecs.ICluster
# image: ecs.ContainerImage

service = ApplicationLoadBalancedCodeDeployedFargateService(stack, "Service",
    cluster=cluster,
    task_image_options=ApplicationLoadBalancedTaskImageOptions(
        image=image
    ),
    api_test_steps=[ApiTestStep(
        name="health",
        path="/health",
        jmes_path="status",
        expected_value="ok"
    )]
)

Local Development

yarn install
yarn build
yarn test

To run an integration test and update the snapshot, run:

yarn integ:ecs-deployment:deploy

To recreate snapshots for integration tests, run:

yarn integ:snapshot-all

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Download files

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

Source Distribution

cdklabs_ecs_codedeploy-0.0.452.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cdklabs_ecs_codedeploy-0.0.452-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file cdklabs_ecs_codedeploy-0.0.452.tar.gz.

File metadata

  • Download URL: cdklabs_ecs_codedeploy-0.0.452.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.14.6

File hashes

Hashes for cdklabs_ecs_codedeploy-0.0.452.tar.gz
Algorithm Hash digest
SHA256 51589f486532eeb005fea2ad39666774edec1d41245af2e59ee827b58841aae1
MD5 b01a383b9faab93dd1fafcc92dd878ed
BLAKE2b-256 98e1df01e4e5fef4da10a80eb439d653a524e9d5d295171f1f46e298262d188a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cdklabs_ecs_codedeploy-0.0.452.tar.gz:

Publisher: release.yml on cdklabs/cdk-ecs-codedeploy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cdklabs_ecs_codedeploy-0.0.452-py3-none-any.whl.

File metadata

File hashes

Hashes for cdklabs_ecs_codedeploy-0.0.452-py3-none-any.whl
Algorithm Hash digest
SHA256 318b190200d80b41fe6bc85492c971c48f21c62d93e99aa75e7f2c2d594da160
MD5 a22f6e660f2d23a11a68c5fccd08cfdd
BLAKE2b-256 aa141379ad421e02176a35e8e68ce373d7f52c6a89eaa6f6cf78c724584d6191

See more details on using hashes here.

Provenance

The following attestation bundles were made for cdklabs_ecs_codedeploy-0.0.452-py3-none-any.whl:

Publisher: release.yml on cdklabs/cdk-ecs-codedeploy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.0.453

2 files

This release

0.0.452 This release

2 files

0.0.451

2 files

0.0.450

2 files

0.0.449

2 files

0.0.448

2 files

0.0.447

2 files

0.0.446

2 files

0.0.445

2 files

0.0.444

2 files

0.0.443

2 files

0.0.442

2 files

0.0.441

2 files

0.0.440

2 files

0.0.439

2 files

0.0.438

2 files

0.0.437

2 files

0.0.436

2 files

0.0.435

2 files

0.0.434

2 files

0.0.433

2 files

0.0.432

2 files

0.0.431

2 files

0.0.430

2 files

0.0.429

2 files

0.0.428

2 files

0.0.427

2 files

0.0.426

2 files

0.0.425

2 files

0.0.424

2 files

0.0.423

2 files

0.0.422

2 files

0.0.421

2 files

0.0.420

2 files

0.0.419

2 files

0.0.418

2 files

0.0.417

2 files

0.0.416

2 files

0.0.415

2 files

0.0.414

2 files

0.0.413

2 files

0.0.412

2 files

0.0.411

2 files

0.0.410

2 files

0.0.409

2 files

0.0.408

2 files

0.0.407

2 files

0.0.406

2 files

0.0.405

2 files

0.0.404

2 files

0.0.403

2 files

0.0.402

2 files

0.0.401

2 files

0.0.400

2 files

0.0.399

2 files

0.0.398

2 files

0.0.397

2 files

0.0.396

2 files

0.0.395

2 files

0.0.394

2 files

0.0.393

2 files

0.0.392

2 files

0.0.391

2 files

0.0.390

2 files

0.0.389

2 files

0.0.388

2 files

0.0.387

2 files

0.0.386

2 files

0.0.385

2 files

0.0.384

2 files

0.0.383

2 files

0.0.382

2 files

0.0.381

2 files

0.0.380

2 files

0.0.379

2 files

0.0.378

2 files

0.0.377

2 files

0.0.376

2 files

0.0.375

2 files

0.0.374

2 files

0.0.373

2 files

0.0.372

2 files

0.0.371

2 files

0.0.370

2 files

0.0.369

2 files

0.0.368

2 files

0.0.367

2 files

0.0.366

2 files

0.0.365

2 files

0.0.364

2 files

0.0.363

2 files

0.0.362

2 files

0.0.361

2 files

0.0.360

2 files

0.0.359

2 files

0.0.358

2 files

0.0.357

2 files

0.0.356

2 files

0.0.355

2 files

0.0.354

2 files

0.0.353

2 files

0.0.352

2 files

0.0.351

2 files

0.0.350

2 files

0.0.349

2 files

0.0.348

2 files

0.0.347

2 files

0.0.346

2 files

0.0.345

2 files

0.0.344

2 files

0.0.343

2 files

0.0.342

2 files

0.0.341

2 files

0.0.340

2 files

0.0.339

2 files

0.0.338

2 files

0.0.337

2 files

0.0.336

2 files

0.0.335

2 files

0.0.334

2 files

0.0.333

2 files

0.0.332

2 files

0.0.331

2 files

0.0.330

2 files

0.0.329

2 files

0.0.328

2 files

0.0.327

2 files

0.0.326

2 files

0.0.325

2 files

0.0.324

2 files

0.0.323

2 files

0.0.322

2 files

0.0.321

2 files

0.0.320

2 files

0.0.319

2 files

0.0.318

2 files

0.0.317

2 files

0.0.316

2 files

0.0.315

2 files

0.0.314

2 files

0.0.313

2 files

0.0.312

2 files

0.0.311

2 files

0.0.310

2 files

0.0.309

2 files

0.0.308

2 files

0.0.307

2 files

0.0.306

2 files

0.0.305

2 files

0.0.304

2 files

0.0.303

2 files

0.0.302

2 files

0.0.301

2 files

0.0.300

2 files

0.0.299

2 files

0.0.298

2 files

0.0.297

2 files

0.0.296

2 files

0.0.295

2 files

0.0.294

2 files

0.0.293

2 files

0.0.292

2 files

0.0.291

2 files

0.0.290

2 files

0.0.289

2 files

0.0.288

2 files

0.0.287

2 files

0.0.286

2 files

0.0.285

2 files

0.0.284

2 files

0.0.283

2 files

0.0.282

2 files

0.0.281

2 files

0.0.280

2 files

0.0.279

2 files

0.0.278

2 files

0.0.277

2 files

0.0.276

2 files

0.0.275

2 files

0.0.274

2 files

0.0.273

2 files

0.0.272

2 files

0.0.271

2 files

0.0.270

2 files

0.0.269

2 files

0.0.268

2 files

0.0.267

2 files

0.0.266

2 files

0.0.265

2 files

0.0.264

2 files

0.0.263

2 files

0.0.262

2 files

0.0.261

2 files

0.0.260

2 files

0.0.259

2 files

0.0.258

2 files

0.0.257

2 files

0.0.256

2 files

0.0.255

2 files

0.0.254

2 files

0.0.253

2 files

0.0.252

2 files

0.0.251

2 files

0.0.250

2 files

0.0.249

2 files

0.0.248

2 files

0.0.247

2 files

0.0.246

2 files

0.0.245

2 files

0.0.244

2 files

0.0.243

2 files

0.0.242

2 files

0.0.241

2 files

0.0.240

2 files

0.0.239

2 files

0.0.238

2 files

0.0.237

2 files

0.0.236

2 files

0.0.235

2 files

0.0.234

2 files

0.0.233

2 files

0.0.232

2 files

0.0.231

2 files

0.0.230

2 files

0.0.229

2 files

0.0.228

2 files

0.0.227

2 files

0.0.226

2 files

0.0.225

2 files

0.0.224

2 files

0.0.223

2 files

0.0.222

2 files

0.0.221

2 files

0.0.220

2 files

0.0.219

2 files

0.0.218

2 files

0.0.217

2 files

0.0.216

2 files

0.0.215

2 files

0.0.214

2 files

0.0.213

2 files

0.0.212

2 files

0.0.211

2 files

0.0.210

2 files

0.0.209

2 files

0.0.208

2 files

0.0.207

2 files

0.0.206

2 files

0.0.205

2 files

0.0.204

2 files

0.0.203

2 files

0.0.202

2 files

0.0.201

2 files

0.0.200

2 files

0.0.199

2 files

0.0.198

2 files

0.0.197

2 files

0.0.196

2 files

0.0.195

2 files

0.0.194

2 files

0.0.193

2 files

0.0.192

2 files

0.0.191

2 files

0.0.190

2 files

0.0.189

2 files

0.0.188

2 files

0.0.187

2 files

0.0.186

2 files

0.0.185

2 files

0.0.184

2 files

0.0.183

2 files

0.0.182

2 files

0.0.181

2 files

0.0.180

2 files

0.0.179

2 files

0.0.178

2 files

0.0.177

2 files

0.0.176

2 files

0.0.175

2 files

0.0.174

2 files

0.0.173

2 files

0.0.172

2 files

0.0.171

2 files

0.0.170

2 files

0.0.169

2 files

0.0.168

2 files

0.0.167

2 files

0.0.166

2 files

0.0.165

2 files

0.0.164

2 files

0.0.163

2 files

0.0.162

2 files

0.0.161

2 files

0.0.160

2 files

0.0.159

2 files

0.0.158

2 files

0.0.157

2 files

0.0.156

2 files

0.0.155

2 files

0.0.154

2 files

0.0.153

2 files

0.0.152

2 files

0.0.151

2 files

0.0.150

2 files

0.0.149

2 files

0.0.148

2 files

0.0.147

2 files

0.0.146

2 files

0.0.145

2 files

0.0.144

2 files

0.0.143

2 files

0.0.142

2 files

0.0.141

2 files

0.0.140

2 files

0.0.139

2 files

0.0.138

2 files

0.0.137

2 files

0.0.136

2 files

0.0.135

2 files

0.0.134

2 files

0.0.133

2 files

0.0.132

2 files

0.0.131

2 files

0.0.130

2 files

0.0.129

2 files

0.0.128

2 files

0.0.127

2 files

0.0.126

2 files

0.0.125

2 files

0.0.124

2 files

0.0.123

2 files

0.0.122

2 files

0.0.121

2 files

0.0.120

2 files

0.0.119

2 files

0.0.118

2 files

0.0.117

2 files

0.0.116

2 files

0.0.115

2 files

0.0.114

2 files

0.0.113

2 files

0.0.112

2 files

0.0.111

2 files

0.0.110

2 files

0.0.109

2 files

0.0.108

2 files

0.0.107

2 files

0.0.106

2 files

0.0.105

2 files

0.0.104

2 files

0.0.103

2 files

0.0.102

2 files

0.0.101

2 files

0.0.100

2 files

0.0.99

2 files

0.0.98

2 files

0.0.97

2 files

0.0.96

2 files

0.0.95

2 files

0.0.94

2 files

0.0.93

2 files

0.0.92

2 files

0.0.91

2 files

0.0.90

2 files

0.0.89

2 files

0.0.88

2 files

0.0.87

2 files

0.0.86

2 files

0.0.85

2 files

0.0.84

2 files

0.0.83

2 files

0.0.82

2 files

0.0.81

2 files

0.0.80

2 files

0.0.79

2 files

0.0.78

2 files

0.0.77

2 files

0.0.76

2 files

0.0.75

2 files

0.0.74

2 files

0.0.73

2 files

0.0.72

2 files

0.0.71

2 files

0.0.70

2 files

0.0.69

2 files

0.0.68

2 files

0.0.67

2 files

0.0.66

2 files

0.0.65

2 files

0.0.64

2 files

0.0.63

2 files

0.0.62

2 files

0.0.61

2 files

0.0.60

2 files

0.0.59

2 files

0.0.58

2 files

0.0.57

2 files

0.0.56

2 files

0.0.55

2 files

0.0.54

2 files

0.0.53

2 files

0.0.52

2 files

0.0.51

2 files

0.0.50

2 files

0.0.49

2 files

0.0.48

2 files

0.0.47

2 files

0.0.46

2 files

0.0.45

2 files

0.0.44

2 files

0.0.43

2 files

0.0.42

2 files

0.0.41

2 files

0.0.40

2 files

0.0.39

2 files

0.0.38

2 files

0.0.37

2 files

0.0.36

2 files

0.0.35

2 files

0.0.34

2 files

0.0.33

2 files

0.0.32

2 files

0.0.31

2 files

0.0.30

2 files

0.0.29

2 files

0.0.28

2 files

0.0.27

2 files

0.0.26

2 files

0.0.25

2 files

0.0.24

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.12

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Supported by

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