From 83e421e7904f6df4b0897a576fe888f17dc3e6fa Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Tue, 26 May 2026 15:52:21 -0500 Subject: [PATCH 01/30] adding a placeholder cdk install guide file --- content/install-guides/aws-cdk.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 content/install-guides/aws-cdk.md diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md new file mode 100644 index 0000000000..a34ca43e84 --- /dev/null +++ b/content/install-guides/aws-cdk.md @@ -0,0 +1,22 @@ +--- +additional_search_terms: +- cloud +- deploy + + +layout: installtoolsall +minutes_to_complete: 15 +author: Anupras Mohapatra +multi_install: false +multitool_install_part: false +official_docs: https://docs.aws.amazon.com/cdk/v2/guide/home.html +test_images: +- ubuntu:latest +test_maintenance: true +title: AWS CDK +tool_install: true +weight: 1 +--- + +The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy Arm-based cloud infrastructure in code. + From 81009a186d829201980c885a05af6255fd32c311 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Tue, 26 May 2026 16:01:42 -0500 Subject: [PATCH 02/30] adding some introductory sentences --- content/install-guides/aws-cdk.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index a34ca43e84..fd1ae2abe7 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -13,10 +13,12 @@ official_docs: https://docs.aws.amazon.com/cdk/v2/guide/home.html test_images: - ubuntu:latest test_maintenance: true +draft: true title: AWS CDK tool_install: true weight: 1 --- -The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy Arm-based cloud infrastructure in code. +The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy cloud infrastructure in code. You can use AWS CDK to +In this guide, you'll learn how to install the AWS CDK CLI and build an app that uses. \ No newline at end of file From 8b73be1569cd4bce718947713e936c67edae407b Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Wed, 27 May 2026 16:09:20 -0500 Subject: [PATCH 03/30] baseline draft for install guide --- content/install-guides/aws-cdk.md | 57 ++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index fd1ae2abe7..786d603ef1 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -2,8 +2,6 @@ additional_search_terms: - cloud - deploy - - layout: installtoolsall minutes_to_complete: 15 author: Anupras Mohapatra @@ -19,6 +17,57 @@ tool_install: true weight: 1 --- -The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy cloud infrastructure in code. You can use AWS CDK to +The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy cloud infrastructure programmatically. + +In this guide, you'll set up the AWS CDK by installing the CDK CLI and verify that the CLI installation was successful. + +## Before you begin + +Confirm you are using an Arm computer by running: + +```bash { target="ubuntu:latest" } +uname -m +``` + +If you are on Arm Linux the output should be: + +```output +aarch64 +``` + +If you are on macOS with Apple Silicon the output should be: + +```output +arm64 +``` +Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys) and [AWS CLI](/install-guides/aws-cli) install guides. + +You'll also need to install Node.js 22 or later, and prerequisites specific to the programming languages you want to use. For more information about language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. + +## Install the AWS CDK CLI + +Use `npm` to install the AWS CDK CLI: + +```bash +npm install -g aws-cdk +``` + +## Verify the installation + +After installing the CDK CLI, check the version of the AWS CDK CLI that you installed: + +```bash +cdk --version +``` + +The output is similar to: + +```output + +``` +## Next steps + +You've now installed the AWS CDK CLI and verified that the installation was successful. + +Next, you can use the CLI to deploy AWS Graviton-based Amazon EC2 instances. For a walkthrough, see the Learning Path [learning path](). -In this guide, you'll learn how to install the AWS CDK CLI and build an app that uses. \ No newline at end of file From 4ebbb8009e29c24c1b3e8dab81da525ff351fec9 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Wed, 27 May 2026 16:52:46 -0500 Subject: [PATCH 04/30] adding output --- content/install-guides/aws-cdk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index 786d603ef1..19dfbfb162 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -63,7 +63,7 @@ cdk --version The output is similar to: ```output - +2.1125.0 (build 71fd29e) ``` ## Next steps From 07a1e3b5bc236528ed51208592c293a39ae0b9f4 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Wed, 27 May 2026 17:03:42 -0500 Subject: [PATCH 05/30] tweaks --- content/install-guides/aws-cdk.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index 19dfbfb162..04d62fee8c 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -17,7 +17,7 @@ tool_install: true weight: 1 --- -The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy cloud infrastructure programmatically. +The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy cloud infrastructure such as AWS Graviton-based Amazon EC2 instances programmatically. In this guide, you'll set up the AWS CDK by installing the CDK CLI and verify that the CLI installation was successful. @@ -42,7 +42,7 @@ arm64 ``` Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys) and [AWS CLI](/install-guides/aws-cli) install guides. -You'll also need to install Node.js 22 or later, and prerequisites specific to the programming languages you want to use. For more information about language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. +You'll also need to install Node.js 22 or later, and prerequisites specific to the programming languages you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. ## Install the AWS CDK CLI @@ -69,5 +69,4 @@ The output is similar to: You've now installed the AWS CDK CLI and verified that the installation was successful. -Next, you can use the CLI to deploy AWS Graviton-based Amazon EC2 instances. For a walkthrough, see the Learning Path [learning path](). - +Next, you can use the CLI to deploy AWS Graviton-based Amazon EC2 instances. From bbf1854f8c639bb6543c3a803aea719795ca3f73 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Thu, 28 May 2026 09:57:30 -0500 Subject: [PATCH 06/30] replicating some language from other guides --- content/install-guides/aws-cdk.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index 04d62fee8c..f43678db0a 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -40,6 +40,8 @@ If you are on macOS with Apple Silicon the output should be: ```output arm64 ``` +If you see a different result, you are not using an Arm computer running 64-bit Linux. + Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys) and [AWS CLI](/install-guides/aws-cli) install guides. You'll also need to install Node.js 22 or later, and prerequisites specific to the programming languages you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. From 1fb11b419786413ce459afa0db2fd6e066946183 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Thu, 28 May 2026 16:12:25 -0500 Subject: [PATCH 07/30] adding more explanation --- content/install-guides/aws-cdk.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index f43678db0a..40482e3826 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -13,13 +13,16 @@ test_images: test_maintenance: true draft: true title: AWS CDK +description: Install the AWS CDK CLI on Arm Linux and macOS using npm, then verify the setup with the `cdk` command. tool_install: true weight: 1 --- -The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy cloud infrastructure such as AWS Graviton-based Amazon EC2 instances programmatically. +The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. -In this guide, you'll set up the AWS CDK by installing the CDK CLI and verify that the CLI installation was successful. +With the CDK, you can write applications in a supported programming language of your choice. You can then use the AWS CDK CLI to translate the code into an AWS CloudFormation template and deploy to the cloud. + +The CDK CLI supports different operating systems and the Arm architecture. In this guide, you'll learn how to install the CDK CLI and verify that the CLI installation was successful. ## Before you begin @@ -40,11 +43,11 @@ If you are on macOS with Apple Silicon the output should be: ```output arm64 ``` -If you see a different result, you are not using an Arm computer running 64-bit Linux. +If you see a different result, you are not using an Arm computer. Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys) and [AWS CLI](/install-guides/aws-cli) install guides. -You'll also need to install Node.js 22 or later, and prerequisites specific to the programming languages you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. +To install AWS CDK CLI, you'll need Node.js 22 or later. You'll also need to install prerequisites specific to the programming languages you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. ## Install the AWS CDK CLI @@ -56,7 +59,7 @@ npm install -g aws-cdk ## Verify the installation -After installing the CDK CLI, check the version of the AWS CDK CLI that you installed: +After installing the AWS CDK CLI, check the version of the CLI: ```bash cdk --version @@ -71,4 +74,4 @@ The output is similar to: You've now installed the AWS CDK CLI and verified that the installation was successful. -Next, you can use the CLI to deploy AWS Graviton-based Amazon EC2 instances. +Next, you can use the CDK CLI to create an application and deploy it to AWS. From 95423363daf69f2557d75738217eaf856ed1cb44 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Thu, 28 May 2026 16:49:28 -0500 Subject: [PATCH 08/30] create a skeleton for aws cdk learning path --- .../aws-cdk/_index.md | 54 +++++++++++++++++++ .../aws-cdk/_next-steps.md | 8 +++ .../aws-cdk/app.md | 6 +++ .../aws-cdk/cdk.md | 6 +++ 4 files changed, 74 insertions(+) create mode 100644 content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md create mode 100644 content/learning-paths/servers-and-cloud-computing/aws-cdk/_next-steps.md create mode 100644 content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md create mode 100644 content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md new file mode 100644 index 0000000000..be73a50508 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md @@ -0,0 +1,54 @@ +--- +title: Deploy applications on Arm servers using the AWS CDK +description: Learn how to define and deploy AWS infrastructure for Arm-based applications using the AWS Cloud Development Kit. + +minutes_to_complete: 45 + +who_is_this_for: This is an introductory topic for software developers who want to use the AWS Cloud Development Kit to deploy applications on Arm-based AWS infrastructure. + +learning_objectives: + - Create an example AWS CDK application + - Define AWS infrastructure using the AWS CDK + - Deploy application resources on Arm-based AWS infrastructure + +prerequisites: + - An Amazon Web Services (AWS) account + - A local computer with the AWS CLI, AWS CDK CLI, and Node.js installed + - Familiarity with the Linux command line + +author: Anupras Mohapatra + +### Tags +skilllevels: Introductory +subjects: Containers and Virtualization +cloud_service_providers: + - AWS +armips: + - Neoverse +operatingsystems: + - Linux +tools_software_languages: + - AWS CDK + - AWS CLI + - Node.js + +further_reading: + - resource: + title: AWS CDK Developer Guide + link: https://docs.aws.amazon.com/cdk/v2/guide/home.html + type: documentation + - resource: + title: AWS CDK CLI install guide + link: /install-guides/aws-cdk/ + type: install-guide + - resource: + title: AWS CLI install guide + link: /install-guides/aws-cli/ + type: install-guide + +### FIXED, DO NOT MODIFY +# ================================================================================ +weight: 1 # _index.md always has weight of 1 to order correctly +layout: "learningpathall" # All files under learning paths have this same wrapper +learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content. +--- diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_next-steps.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_next-steps.md new file mode 100644 index 0000000000..c3db0de5a2 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_next-steps.md @@ -0,0 +1,8 @@ +--- +# ================================================================================ +# FIXED, DO NOT MODIFY THIS FILE +# ================================================================================ +weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation. +title: "Next Steps" # Always the same, html page title. +layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing. +--- diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md new file mode 100644 index 0000000000..bb65e39ddd --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -0,0 +1,6 @@ +--- +title: "Create an example AWS CDK application" +weight: 2 + +layout: "learningpathall" +--- diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md new file mode 100644 index 0000000000..8952e6fd53 --- /dev/null +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -0,0 +1,6 @@ +--- +title: "Deploy with the AWS CDK" +weight: 3 + +layout: "learningpathall" +--- From 1c8d617167c8d16364d7844ffa7e5bd2740fa6be Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Fri, 29 May 2026 11:38:58 -0500 Subject: [PATCH 09/30] adding steps for creating a cdk project/app and a skeleton for synthesis and deployment --- .../aws-cdk/_index.md | 8 +- .../aws-cdk/app.md | 115 ++++++++++++++++++ .../aws-cdk/cdk.md | 33 ++++- 3 files changed, 153 insertions(+), 3 deletions(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md index be73a50508..e4ade87b12 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md @@ -2,19 +2,23 @@ title: Deploy applications on Arm servers using the AWS CDK description: Learn how to define and deploy AWS infrastructure for Arm-based applications using the AWS Cloud Development Kit. +draft: true +cascade: + draft: true + minutes_to_complete: 45 who_is_this_for: This is an introductory topic for software developers who want to use the AWS Cloud Development Kit to deploy applications on Arm-based AWS infrastructure. learning_objectives: - - Create an example AWS CDK application + - Create an example AWS CDK application in JavaScript - Define AWS infrastructure using the AWS CDK - Deploy application resources on Arm-based AWS infrastructure prerequisites: - An Amazon Web Services (AWS) account - A local computer with the AWS CLI, AWS CDK CLI, and Node.js installed - - Familiarity with the Linux command line + - Familiarity with the Linux command line and JavaScript author: Anupras Mohapatra diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index bb65e39ddd..3dd9663868 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -4,3 +4,118 @@ weight: 2 layout: "learningpathall" --- + +## Set up a sample AWS CDK application + +The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. + +To deploy an application using the CDK, you'll create the application in a supported programming language. You'll then use the CDK CLI to synthesize the application to an AWS CloudFormation template that's deploys resources on AWS. + +### Before you begin + +Make sure that you've completed all prerequisite steps and installed the AWS CDK CLI. For more information, see the [AWS CDK install guide](/install-guides/aws-cdk). + +### Initialize a CDK project + +In this Learning Path, you'll use Amazon Elastic Container Service (ECS) to deploy containers on AWS Graviton-based Amazon EC2 instances. + +Create a directory for your CDK project and navigate to it: + +```bash +mkdir arm-cdk-app +cd arm-cdk-app/ +``` + +After navigating into the project directory, initialize a JavaScript CDK project: + +```bash +cdk init --language javascript +``` + +The output is similar to: + +```output +Applying project template app for javascript +# Welcome to your CDK JavaScript project + +This is a blank project for CDK development with JavaScript. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. The build step is not required when using JavaScript. + +## Useful commands + +* `npm run test` perform the jest unit tests +* `npx cdk deploy` deploy this stack to your default AWS account/region +* `npx cdk diff` compare deployed stack with current state +* `npx cdk synth` emits the synthesized CloudFormation template + +... +``` + +### Use the AWS CDK with JavaScript to define a sample application + +In the project, you'll find a file called `arm-cdk-app-stack.js` in the `lib ` directory. This stack definition is what AWS CDK uses to deploy resources. + +Update `lib/arm-cdk-app-stack.js` with the following: + +```javascript +const cdk = require('aws-cdk-lib'); +const ec2 = require('aws-cdk-lib/aws-ec2'); +const ecs = require('aws-cdk-lib/aws-ecs'); +const ecsPatterns = require('aws-cdk-lib/aws-ecs-patterns'); + +class ArmCdkAppStack extends cdk.Stack { + constructor(scope, id, props) { + super(scope, id, props); + + //creates a VPC + const vpc = new ec2.Vpc(this, 'Vpc', { + maxAzs: 2, + }); + + //creates a cluster + const cluster = new ecs.Cluster(this, 'Cluster', { + vpc, + }); + + //adds Graviton-based c6g.large instance to the cluster + cluster.addCapacity('GravitonCapacity', { + minCapacity: 1, + desiredCapacity: 1, + instanceType: new ec2.InstanceType('c6g.large'), + machineImage: ecs.EcsOptimizedImage.amazonLinux2(ecs.AmiHardwareType.ARM), + }); + + //creates a task definition + const taskDefinition = new ecs.Ec2TaskDefinition(this, 'TaskDef'); + + //adds container to task definition that uses a hello-world container image + const container = taskDefinition.addContainer('DefaultContainer', { + image: ecs.ContainerImage.fromRegistry('hello-world'), + memoryLimitMiB: 512, + }); + + container.addPortMappings({ + containerPort: 80, + }); + + //deploys a load balanced service with one instantiation of the containerized app + new ecsPatterns.ApplicationLoadBalancedEc2Service(this, 'Service', { + cluster, + taskDefinition, + desiredCount: 1, + publicLoadBalancer: true, + }); + } +} + +module.exports = { ArmCdkAppStack }; +``` + +The application uses Amazon ECS to deploy a `hello-world` container image on an AWS Graviton-based `c6g.large` instance. + +## What you've accomplished and what's next + +You've now set up a sample application using AWS CDK. + +Next, you'll use AWS CDK to synthesize and deploy the application. \ No newline at end of file diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 8952e6fd53..e3933288db 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -1,6 +1,37 @@ --- -title: "Deploy with the AWS CDK" +title: "Deploy the example AWS CDK application" weight: 3 layout: "learningpathall" --- + +## Synthesize the AWS CDK application + +After creating an application using AWS CDK, you'll need to synthesize it: + +```bash +cdk synth +``` +This step checks for errors in the application code and then translates the code into an AWS CloudFormation template. + +You can find the generated JSON template at `cdk.out/ArmCdkAppStack.template.json`. + +## Deploy the CDK stack + +After completing synthesis, you're ready to deploy the application. AWS CDK will deploy the application through the generated AWS CloudFormation stack. + +Deploy the application: + +```bash +cdk deploy +``` + +The output is similar to: + +```output + +``` + +## Validate the deployment + +## What you've accomplished From 651d30b3699b91230898898bc62b50983db398a0 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Fri, 29 May 2026 16:39:23 -0500 Subject: [PATCH 10/30] removing the uname steps because they're not relevant for this --- content/install-guides/aws-cdk.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index 40482e3826..106fea8c51 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -26,25 +26,6 @@ The CDK CLI supports different operating systems and the Arm architecture. In th ## Before you begin -Confirm you are using an Arm computer by running: - -```bash { target="ubuntu:latest" } -uname -m -``` - -If you are on Arm Linux the output should be: - -```output -aarch64 -``` - -If you are on macOS with Apple Silicon the output should be: - -```output -arm64 -``` -If you see a different result, you are not using an Arm computer. - Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys) and [AWS CLI](/install-guides/aws-cli) install guides. To install AWS CDK CLI, you'll need Node.js 22 or later. You'll also need to install prerequisites specific to the programming languages you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. From c6e8259f93340310423e4781b31dea28c599469b Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Fri, 29 May 2026 16:54:57 -0500 Subject: [PATCH 11/30] adding a placeholder section summary --- content/install-guides/aws-cdk.md | 2 +- .../learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index 106fea8c51..cb906b7202 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -55,4 +55,4 @@ The output is similar to: You've now installed the AWS CDK CLI and verified that the installation was successful. -Next, you can use the CDK CLI to create an application and deploy it to AWS. +Next, you can use the AWS CDK to create an application and deploy it to AWS. diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index e3933288db..2c2e947717 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -35,3 +35,7 @@ The output is similar to: ## Validate the deployment ## What you've accomplished + +You've now synthesized and deployed a sample application using Amazon ECS and the AWS CDK. + +You can use this workflow to programmatically deploy and manage containerized applications on AWS Graviton-based compute. \ No newline at end of file From aa391db51c18939af097cb33ff8b08b3bc1e4826 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 1 Jun 2026 11:37:50 -0500 Subject: [PATCH 12/30] updating app to be simpler and to use Fargate --- content/install-guides/aws-cdk.md | 2 +- .../aws-cdk/app.md | 51 +++++-------------- .../aws-cdk/cdk.md | 11 +++- 3 files changed, 24 insertions(+), 40 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index cb906b7202..ed620642b7 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -18,7 +18,7 @@ tool_install: true weight: 1 --- -The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. +The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. With the CDK, you can write applications in a supported programming language of your choice. You can then use the AWS CDK CLI to translate the code into an AWS CloudFormation template and deploy to the cloud. diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 3dd9663868..856a3c4143 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -7,7 +7,7 @@ layout: "learningpathall" ## Set up a sample AWS CDK application -The AWS Cloud Development Kit (CDK) is an open-source software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. +The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. To deploy an application using the CDK, you'll create the application in a supported programming language. You'll then use the CDK CLI to synthesize the application to an AWS CloudFormation template that's deploys resources on AWS. @@ -60,50 +60,25 @@ Update `lib/arm-cdk-app-stack.js` with the following: ```javascript const cdk = require('aws-cdk-lib'); -const ec2 = require('aws-cdk-lib/aws-ec2'); const ecs = require('aws-cdk-lib/aws-ecs'); const ecsPatterns = require('aws-cdk-lib/aws-ecs-patterns'); +const ecrAssets = require('aws-cdk-lib/aws-ecr-assets'); class ArmCdkAppStack extends cdk.Stack { constructor(scope, id, props) { super(scope, id, props); - - //creates a VPC - const vpc = new ec2.Vpc(this, 'Vpc', { - maxAzs: 2, - }); - - //creates a cluster - const cluster = new ecs.Cluster(this, 'Cluster', { - vpc, - }); - - //adds Graviton-based c6g.large instance to the cluster - cluster.addCapacity('GravitonCapacity', { - minCapacity: 1, - desiredCapacity: 1, - instanceType: new ec2.InstanceType('c6g.large'), - machineImage: ecs.EcsOptimizedImage.amazonLinux2(ecs.AmiHardwareType.ARM), - }); - - //creates a task definition - const taskDefinition = new ecs.Ec2TaskDefinition(this, 'TaskDef'); - //adds container to task definition that uses a hello-world container image - const container = taskDefinition.addContainer('DefaultContainer', { - image: ecs.ContainerImage.fromRegistry('hello-world'), + new ecsPatterns.ApplicationLoadBalancedFargateService(this, 'Service', { + taskImageOptions: { + image: ecs.ContainerImage.fromRegistry("nginx:latest"), + containerPort: 8080, + }, + runtimePlatform: { + cpuArchitecture: ecs.CpuArchitecture.ARM64, + operatingSystemFamily: ecs.OperatingSystemFamily.LINUX, + }, + cpu: 256, memoryLimitMiB: 512, - }); - - container.addPortMappings({ - containerPort: 80, - }); - - //deploys a load balanced service with one instantiation of the containerized app - new ecsPatterns.ApplicationLoadBalancedEc2Service(this, 'Service', { - cluster, - taskDefinition, - desiredCount: 1, publicLoadBalancer: true, }); } @@ -112,7 +87,7 @@ class ArmCdkAppStack extends cdk.Stack { module.exports = { ArmCdkAppStack }; ``` -The application uses Amazon ECS to deploy a `hello-world` container image on an AWS Graviton-based `c6g.large` instance. +The application defines a load balanced Fargate service that runs an nginx web server on an Arm-based platform. ## What you've accomplished and what's next diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 2c2e947717..829a67800c 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -34,8 +34,17 @@ The output is similar to: ## Validate the deployment + +## Clean up resources + +After you've validated the deployment, clean up the AWS resources that you created with AWS CDK: + +```bash +cdk destroy +``` + ## What you've accomplished -You've now synthesized and deployed a sample application using Amazon ECS and the AWS CDK. +You've now synthesized and deployed a sample application using Amazon ECS and the AWS CDK that runs on an Arm platform. After validating deployment, you cleaned up resources. You can use this workflow to programmatically deploy and manage containerized applications on AWS Graviton-based compute. \ No newline at end of file From 053aba46b3bd8446a73581571ed5b9b1bf1ac267 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 1 Jun 2026 11:42:57 -0500 Subject: [PATCH 13/30] placeholder for validating deployment --- .../learning-paths/servers-and-cloud-computing/aws-cdk/app.md | 2 +- .../learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 856a3c4143..10c14fd413 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -17,7 +17,7 @@ Make sure that you've completed all prerequisite steps and installed the AWS CDK ### Initialize a CDK project -In this Learning Path, you'll use Amazon Elastic Container Service (ECS) to deploy containers on AWS Graviton-based Amazon EC2 instances. +In this Learning Path, you'll use Amazon Elastic Container Service (ECS) to deploy containers on AWS Graviton-based compute. Create a directory for your CDK project and navigate to it: diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 829a67800c..bd36987c01 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -34,6 +34,9 @@ The output is similar to: ## Validate the deployment +Paste the URL from the deployment output into a web browser of your choice. + +The output is similar to: ## Clean up resources From 4099ede5e36af16a3f4a602ab1adac5b3be428a2 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Fri, 5 Jun 2026 16:30:22 -0500 Subject: [PATCH 14/30] resolving conflict --- assets/contributors.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/contributors.csv b/assets/contributors.csv index 0dee5589bd..605837f5d6 100644 --- a/assets/contributors.csv +++ b/assets/contributors.csv @@ -125,3 +125,4 @@ Akash Malik,Arm,akashmalik19973,akash-malik-a65bab219,, Matt Cossins,Arm,matt-cossins,,, Sue Wu,Arm,,,, Sabika Tasneem,Memgraph,,,, +Anupras Mohapatra,Arm,,https://www.linkedin.com/in/~anupras,, \ No newline at end of file From 81d7dc37c94c6a619f27f9c0773a3b5d70c6833f Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Fri, 5 Jun 2026 16:49:35 -0500 Subject: [PATCH 15/30] adding a more concrete next step linking iinstall guide to lp --- content/install-guides/aws-cdk.md | 2 +- .../servers-and-cloud-computing/aws-cdk/_index.md | 2 +- .../servers-and-cloud-computing/aws-cdk/app.md | 4 ++-- .../servers-and-cloud-computing/aws-cdk/cdk.md | 6 ++++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index ed620642b7..6171389efc 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -55,4 +55,4 @@ The output is similar to: You've now installed the AWS CDK CLI and verified that the installation was successful. -Next, you can use the AWS CDK to create an application and deploy it to AWS. +Next, you can use the AWS CDK to create and deploy applications on Arm-based AWS infrastructure. To learn how you can use the CDK and Amazon ECS to run containers on Arm-based compute, see [Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK](earning-paths/servers-and-cloud-computing/aws-cdk/) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md index e4ade87b12..1baee86a73 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md @@ -1,5 +1,5 @@ --- -title: Deploy applications on Arm servers using the AWS CDK +title: Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK description: Learn how to define and deploy AWS infrastructure for Arm-based applications using the AWS Cloud Development Kit. draft: true diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 10c14fd413..db77710049 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -54,7 +54,7 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app. The build ste ### Use the AWS CDK with JavaScript to define a sample application -In the project, you'll find a file called `arm-cdk-app-stack.js` in the `lib ` directory. This stack definition is what AWS CDK uses to deploy resources. +In the project, you'll find a file called `arm-cdk-app-stack.js` in the `lib ` directory. This stack definition is what the AWS CDK uses to deploy resources. Update `lib/arm-cdk-app-stack.js` with the following: @@ -87,7 +87,7 @@ class ArmCdkAppStack extends cdk.Stack { module.exports = { ArmCdkAppStack }; ``` -The application defines a load balanced Fargate service that runs an nginx web server on an Arm-based platform. +The application defines a load balanced Fargate service that runs an NGINX web server on an Arm-based platform. ## What you've accomplished and what's next diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index bd36987c01..88fb863bb9 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -36,8 +36,14 @@ The output is similar to: Paste the URL from the deployment output into a web browser of your choice. +```text + +``` + The output is similar to: + + ## Clean up resources After you've validated the deployment, clean up the AWS resources that you created with AWS CDK: From fb9d2cb9286469d856737d4e2f77aef6ea32f399 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Fri, 5 Jun 2026 16:51:43 -0500 Subject: [PATCH 16/30] removing LI link --- assets/contributors.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/contributors.csv b/assets/contributors.csv index 605837f5d6..f7fc991655 100644 --- a/assets/contributors.csv +++ b/assets/contributors.csv @@ -125,4 +125,4 @@ Akash Malik,Arm,akashmalik19973,akash-malik-a65bab219,, Matt Cossins,Arm,matt-cossins,,, Sue Wu,Arm,,,, Sabika Tasneem,Memgraph,,,, -Anupras Mohapatra,Arm,,https://www.linkedin.com/in/~anupras,, \ No newline at end of file +Anupras Mohapatra,Arm,,,, \ No newline at end of file From 66d3a85f66ec1e5cbd847ee29ebe79cd22e0f3e3 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 8 Jun 2026 09:59:54 -0500 Subject: [PATCH 17/30] edit --- content/install-guides/aws-cdk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index 6171389efc..78716f6009 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -55,4 +55,4 @@ The output is similar to: You've now installed the AWS CDK CLI and verified that the installation was successful. -Next, you can use the AWS CDK to create and deploy applications on Arm-based AWS infrastructure. To learn how you can use the CDK and Amazon ECS to run containers on Arm-based compute, see [Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK](earning-paths/servers-and-cloud-computing/aws-cdk/) +Next, you can use the AWS CDK to create and deploy applications on Arm-based AWS infrastructure. To learn how you can use the CDK and Amazon ECS to run containers on Arm-based compute, see [Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK](earning-paths/servers-and-cloud-computing/aws-cdk/). From 4d944bae5411a3c833de95847a1446792f73cf63 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Wed, 10 Jun 2026 13:47:19 -0500 Subject: [PATCH 18/30] adding an nginx output screenshot --- .../servers-and-cloud-computing/aws-cdk/cdk.md | 4 ++-- .../aws-cdk/nginx-output.png | Bin 0 -> 60129 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 content/learning-paths/servers-and-cloud-computing/aws-cdk/nginx-output.png diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 88fb863bb9..5cb2263c35 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -40,9 +40,9 @@ Paste the URL from the deployment output into a web browser of your choice. ``` -The output is similar to: +You'll see the following welcome message: - +![Screenshot of the NGINX welcome page confirming the AWS CDK deployment is serving traffic from the Arm-based EC2 instance#center](nginx-output.png "NGINX welcome page") ## Clean up resources diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/nginx-output.png b/content/learning-paths/servers-and-cloud-computing/aws-cdk/nginx-output.png new file mode 100644 index 0000000000000000000000000000000000000000..f3f2f158f62720c5ad62e61e86351c0978382a12 GIT binary patch literal 60129 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 literal 0 HcmV?d00001 From 534be3d0b134cc85e59f57b0d5c332fc0edaf213 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Wed, 10 Jun 2026 15:54:24 -0500 Subject: [PATCH 19/30] updates --- content/install-guides/aws-cdk.md | 6 ++--- .../aws-cdk/app.md | 16 ++++-------- .../aws-cdk/cdk.md | 26 +++++++++---------- 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index 78716f6009..e5decc07d7 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -18,7 +18,7 @@ tool_install: true weight: 1 --- -The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. +The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework. You can use the AWS CDK to define and deploy applications on Arm-based cloud infrastructure powered by AWS Graviton. With the CDK, you can write applications in a supported programming language of your choice. You can then use the AWS CDK CLI to translate the code into an AWS CloudFormation template and deploy to the cloud. @@ -28,7 +28,7 @@ The CDK CLI supports different operating systems and the Arm architecture. In th Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys) and [AWS CLI](/install-guides/aws-cli) install guides. -To install AWS CDK CLI, you'll need Node.js 22 or later. You'll also need to install prerequisites specific to the programming languages you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. +To install the AWS CDK CLI, you'll need Node.js 22 or later. You'll also need to install prerequisites specific to the programming languages that you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. ## Install the AWS CDK CLI @@ -55,4 +55,4 @@ The output is similar to: You've now installed the AWS CDK CLI and verified that the installation was successful. -Next, you can use the AWS CDK to create and deploy applications on Arm-based AWS infrastructure. To learn how you can use the CDK and Amazon ECS to run containers on Arm-based compute, see [Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK](earning-paths/servers-and-cloud-computing/aws-cdk/). +Next, you can use the AWS CDK to create and deploy applications on Arm-based compute powered by AWS Graviton. To learn how you can use the CDK and Amazon Elastic Container Service (ECS) to run containers on Arm-based compute, see [Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK](earning-paths/servers-and-cloud-computing/aws-cdk/). diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index db77710049..447b85ba84 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -7,9 +7,9 @@ layout: "learningpathall" ## Set up a sample AWS CDK application -The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework that you can use to define and deploy applications on Arm-based cloud infrastructure on AWS. +The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework. You can use the AWS CDK to define and deploy applications on Arm-based cloud infrastructure powered by AWS Graviton. -To deploy an application using the CDK, you'll create the application in a supported programming language. You'll then use the CDK CLI to synthesize the application to an AWS CloudFormation template that's deploys resources on AWS. +In this section, you'll initialize a CDK project and create a web server application in JavaScript to be deployed on AWS using Amazon Elastic Container Service (Amazon ECS). ### Before you begin @@ -17,8 +17,6 @@ Make sure that you've completed all prerequisite steps and installed the AWS CDK ### Initialize a CDK project -In this Learning Path, you'll use Amazon Elastic Container Service (ECS) to deploy containers on AWS Graviton-based compute. - Create a directory for your CDK project and navigate to it: ```bash @@ -54,9 +52,9 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app. The build ste ### Use the AWS CDK with JavaScript to define a sample application -In the project, you'll find a file called `arm-cdk-app-stack.js` in the `lib ` directory. This stack definition is what the AWS CDK uses to deploy resources. +In the project, you'll find a file called `arm-cdk-app-stack.js` in the `lib ` directory. AWS CDK uses this stack definition to deploy all necessary AWS resources. -Update `lib/arm-cdk-app-stack.js` with the following: +Update `lib/arm-cdk-app-stack.js` to define a load balanced Amazon ECS service that runs an NGINX web server on an Arm-based AWS Fargate runtime platform: ```javascript const cdk = require('aws-cdk-lib'); @@ -71,14 +69,12 @@ class ArmCdkAppStack extends cdk.Stack { new ecsPatterns.ApplicationLoadBalancedFargateService(this, 'Service', { taskImageOptions: { image: ecs.ContainerImage.fromRegistry("nginx:latest"), - containerPort: 8080, + containerPort: 80, }, runtimePlatform: { cpuArchitecture: ecs.CpuArchitecture.ARM64, operatingSystemFamily: ecs.OperatingSystemFamily.LINUX, }, - cpu: 256, - memoryLimitMiB: 512, publicLoadBalancer: true, }); } @@ -87,8 +83,6 @@ class ArmCdkAppStack extends cdk.Stack { module.exports = { ArmCdkAppStack }; ``` -The application defines a load balanced Fargate service that runs an NGINX web server on an Arm-based platform. - ## What you've accomplished and what's next You've now set up a sample application using AWS CDK. diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 5cb2263c35..7eb1170b73 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -12,7 +12,8 @@ After creating an application using AWS CDK, you'll need to synthesize it: ```bash cdk synth ``` -This step checks for errors in the application code and then translates the code into an AWS CloudFormation template. + +The CDK checks for errors in the application code and then translates the code into an AWS CloudFormation template. You can find the generated JSON template at `cdk.out/ArmCdkAppStack.template.json`. @@ -25,28 +26,25 @@ Deploy the application: ```bash cdk deploy ``` - -The output is similar to: +The last couple lines of the output include a URL to the web server and the load balancer's DNS name, and is similar to: ```output - +Outputs: +ArmCdkAppStack.MyWebServerLoadBalancerDNSXXXXXXX = Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-east-1.elb.amazonaws.com +ArmCdkAppStack.MyWebServerServiceURLYYYYYYYY = http://Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-east-1.elb.amazonaws.com ``` -## Validate the deployment +## Verify application deployment Paste the URL from the deployment output into a web browser of your choice. -```text - -``` - You'll see the following welcome message: -![Screenshot of the NGINX welcome page confirming the AWS CDK deployment is serving traffic from the Arm-based EC2 instance#center](nginx-output.png "NGINX welcome page") +![Screenshot of the NGINX welcome page confirming the web server was deployed on Arm-based compute successfully.#center](nginx-output.png "NGINX welcome page indicating successful deployment") -## Clean up resources +## Clean up AWS resources -After you've validated the deployment, clean up the AWS resources that you created with AWS CDK: +After you've validated the deployment, clean up the AWS resources that you created with AWS CDK to avoid incurring costs: ```bash cdk destroy @@ -54,6 +52,6 @@ cdk destroy ## What you've accomplished -You've now synthesized and deployed a sample application using Amazon ECS and the AWS CDK that runs on an Arm platform. After validating deployment, you cleaned up resources. +You've now synthesized and deployed a sample containerized application on Arm-based compute using Amazon ECS and the AWS CDK. After verifying that the deployment was successful, you cleaned up resources. -You can use this workflow to programmatically deploy and manage containerized applications on AWS Graviton-based compute. \ No newline at end of file +You can use this workflow to programmatically deploy and manage containerized applications on Arm-based compute powered by AWS Graviton processors. \ No newline at end of file From f3081f3db7f782658993fa4488cab09b937f7a4f Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Wed, 10 Jun 2026 15:56:59 -0500 Subject: [PATCH 20/30] index edits --- .../servers-and-cloud-computing/aws-cdk/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md index 1baee86a73..ff053c1031 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md @@ -1,6 +1,6 @@ --- title: Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK -description: Learn how to define and deploy AWS infrastructure for Arm-based applications using the AWS Cloud Development Kit. +description: Learn how to define and deploy a containerized application on Arm-based compute using the AWS Cloud Development Kit. draft: true cascade: @@ -8,12 +8,12 @@ cascade: minutes_to_complete: 45 -who_is_this_for: This is an introductory topic for software developers who want to use the AWS Cloud Development Kit to deploy applications on Arm-based AWS infrastructure. +who_is_this_for: This is an introductory topic for software developers who want to use the AWS Cloud Development Kit (AWS CDK) to deploy applications on Arm-based AWS infrastructure. learning_objectives: - Create an example AWS CDK application in JavaScript - Define AWS infrastructure using the AWS CDK - - Deploy application resources on Arm-based AWS infrastructure + - Deploy application resources on Arm-based AWS compute prerequisites: - An Amazon Web Services (AWS) account From ef275ebf8937dc1e1404d60d045291164a5fbcc4 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Thu, 11 Jun 2026 16:15:58 -0500 Subject: [PATCH 21/30] wording updates --- content/install-guides/aws-cdk.md | 12 +++++----- .../aws-cdk/app.md | 15 ++++++------- .../aws-cdk/cdk.md | 22 +++++++++---------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index e5decc07d7..fa6cf59078 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -12,21 +12,21 @@ test_images: - ubuntu:latest test_maintenance: true draft: true -title: AWS CDK +title: AWS CDK CLI description: Install the AWS CDK CLI on Arm Linux and macOS using npm, then verify the setup with the `cdk` command. tool_install: true weight: 1 --- -The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework. You can use the AWS CDK to define and deploy applications on Arm-based cloud infrastructure powered by AWS Graviton. +The AWS Cloud Development Kit (CDK) is an open-source infrastructure as code (IaC) software development framework. You can use the AWS CDK to define and deploy applications on Arm-based cloud infrastructure powered by AWS Graviton. -With the CDK, you can write applications in a supported programming language of your choice. You can then use the AWS CDK CLI to translate the code into an AWS CloudFormation template and deploy to the cloud. +With the CDK, you can write applications in a supported programming language of your choice. You can then use the AWS CDK CLI to translate the code into an AWS CloudFormation template and deploy the application. -The CDK CLI supports different operating systems and the Arm architecture. In this guide, you'll learn how to install the CDK CLI and verify that the CLI installation was successful. +In this guide, you'll learn how to install the CDK CLI and verify that the CLI installation was successful. ## Before you begin -Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys) and [AWS CLI](/install-guides/aws-cli) install guides. +Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys/) and [AWS CLI](/install-guides/aws-cli/) install guides. To install the AWS CDK CLI, you'll need Node.js 22 or later. You'll also need to install prerequisites specific to the programming languages that you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. @@ -55,4 +55,4 @@ The output is similar to: You've now installed the AWS CDK CLI and verified that the installation was successful. -Next, you can use the AWS CDK to create and deploy applications on Arm-based compute powered by AWS Graviton. To learn how you can use the CDK and Amazon Elastic Container Service (ECS) to run containers on Arm-based compute, see [Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK](earning-paths/servers-and-cloud-computing/aws-cdk/). +Next, you can use the AWS CDK to create and deploy applications on Arm-based compute powered by AWS Graviton. To learn how you can use the CDK and Amazon Elastic Container Service (ECS) to run containers on Arm-based compute, see [Deploy containers on Arm-based compute using Amazon ECS and the AWS CDK](/learning-paths/servers-and-cloud-computing/aws-cdk/). diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 447b85ba84..0566f7b6e3 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -1,5 +1,5 @@ --- -title: "Create an example AWS CDK application" +title: "Create a sample AWS CDK application" weight: 2 layout: "learningpathall" @@ -7,9 +7,9 @@ layout: "learningpathall" ## Set up a sample AWS CDK application -The AWS Cloud Development Kit (CDK) is an open-source Infrastructure as Code (IaC)software development framework. You can use the AWS CDK to define and deploy applications on Arm-based cloud infrastructure powered by AWS Graviton. +The AWS Cloud Development Kit (CDK) is an open-source infrastructure as code (IaC)software development framework. -In this section, you'll initialize a CDK project and create a web server application in JavaScript to be deployed on AWS using Amazon Elastic Container Service (Amazon ECS). +In this section, you'll create a JavaScript CDK application that defines an Amazon Elastic Container Service (ECS) service running on Arm-based AWS Fargate compute. ### Before you begin @@ -52,15 +52,14 @@ The `cdk.json` file tells the CDK Toolkit how to execute your app. The build ste ### Use the AWS CDK with JavaScript to define a sample application -In the project, you'll find a file called `arm-cdk-app-stack.js` in the `lib ` directory. AWS CDK uses this stack definition to deploy all necessary AWS resources. +In the project, you'll find a file called `arm-cdk-app-stack.js` in the `lib` directory. AWS CDK uses this stack definition to deploy all necessary AWS resources. -Update `lib/arm-cdk-app-stack.js` to define a load balanced Amazon ECS service that runs an NGINX web server on an Arm-based AWS Fargate runtime platform: +Update `lib/arm-cdk-app-stack.js` to define a load-balanced Amazon ECS service that runs an NGINX web server on an Arm-based AWS Fargate runtime platform: ```javascript const cdk = require('aws-cdk-lib'); const ecs = require('aws-cdk-lib/aws-ecs'); const ecsPatterns = require('aws-cdk-lib/aws-ecs-patterns'); -const ecrAssets = require('aws-cdk-lib/aws-ecr-assets'); class ArmCdkAppStack extends cdk.Stack { constructor(scope, id, props) { @@ -68,8 +67,8 @@ class ArmCdkAppStack extends cdk.Stack { new ecsPatterns.ApplicationLoadBalancedFargateService(this, 'Service', { taskImageOptions: { - image: ecs.ContainerImage.fromRegistry("nginx:latest"), - containerPort: 80, + image: ecs.ContainerImage.fromRegistry("nginx:latest"), + containerPort: 80, }, runtimePlatform: { cpuArchitecture: ecs.CpuArchitecture.ARM64, diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 7eb1170b73..b60f773649 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -1,5 +1,5 @@ --- -title: "Deploy the example AWS CDK application" +title: "Synthesize and deploy the sample AWS CDK application" weight: 3 layout: "learningpathall" @@ -7,26 +7,25 @@ layout: "learningpathall" ## Synthesize the AWS CDK application -After creating an application using AWS CDK, you'll need to synthesize it: +Before you can deploy an application using the AWS CDK, you need to synthesize it. During synthesis, the AWS CDK checks for errors in the application code and then translates the code into an AWS CloudFormation template. + +Synthesize the application: ```bash cdk synth ``` +You can find the generated JSON template at `cdk.out/ArmCdkAppStack.template.json`. -The CDK checks for errors in the application code and then translates the code into an AWS CloudFormation template. - -You can find the generated JSON template at `cdk.out/ArmCdkAppStack.template.json`. - -## Deploy the CDK stack +## Deploy the AWS CDK application -After completing synthesis, you're ready to deploy the application. AWS CDK will deploy the application through the generated AWS CloudFormation stack. +After completing synthesis, you're ready to deploy the application. AWS CDK deploys the application through the generated AWS CloudFormation stack. Deploy the application: ```bash cdk deploy ``` -The last couple lines of the output include a URL to the web server and the load balancer's DNS name, and is similar to: +The last couple lines of the output include a URL to the web server and the load balancer's DNS name: ```output Outputs: @@ -36,11 +35,11 @@ ArmCdkAppStack.MyWebServerServiceURLYYYYYYYY = http://Hello-MyWeb-ZZZZZZZZZZZZZ- ## Verify application deployment -Paste the URL from the deployment output into a web browser of your choice. +Open the URL from the deployment output in a web browser of your choice. You'll see the following welcome message: -![Screenshot of the NGINX welcome page confirming the web server was deployed on Arm-based compute successfully.#center](nginx-output.png "NGINX welcome page indicating successful deployment") +![Screenshot of the application showing the NGINX welcome page and confirming the web server was deployed on Arm-based compute successfully.#center](nginx-output.png "NGINX welcome page indicating successful deployment") ## Clean up AWS resources @@ -49,6 +48,7 @@ After you've validated the deployment, clean up the AWS resources that you creat ```bash cdk destroy ``` +You'll be prompted to confirm whether you want to delete the resources. Enter `y`. ## What you've accomplished From 68ee982fe48c2a6d5e3f603b8e2900941eef9b7e Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Thu, 11 Jun 2026 16:29:52 -0500 Subject: [PATCH 22/30] edit to deletion prompt description --- .../learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index b60f773649..6bbc1b1765 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -48,7 +48,7 @@ After you've validated the deployment, clean up the AWS resources that you creat ```bash cdk destroy ``` -You'll be prompted to confirm whether you want to delete the resources. Enter `y`. +When AWS CDK asks whether to delete `ArmCDKAppStack`, enter `y`. ## What you've accomplished From e16b0c43ae8d512aa0838e69da68c29701d1da07 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Fri, 12 Jun 2026 16:59:03 -0500 Subject: [PATCH 23/30] first pass feedback updates --- .../aws-cdk/app.md | 2 +- .../aws-cdk/cdk.md | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 0566f7b6e3..e3b7cd6b03 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -7,7 +7,7 @@ layout: "learningpathall" ## Set up a sample AWS CDK application -The AWS Cloud Development Kit (CDK) is an open-source infrastructure as code (IaC)software development framework. +The AWS Cloud Development Kit (CDK) is an open-source infrastructure as code (IaC) software development framework. In this section, you'll create a JavaScript CDK application that defines an Amazon Elastic Container Service (ECS) service running on Arm-based AWS Fargate compute. diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 6bbc1b1765..d91a8e5cf9 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -9,23 +9,34 @@ layout: "learningpathall" Before you can deploy an application using the AWS CDK, you need to synthesize it. During synthesis, the AWS CDK checks for errors in the application code and then translates the code into an AWS CloudFormation template. -Synthesize the application: +Within the project directory, synthesize the application: ```bash cdk synth ``` You can find the generated JSON template at `cdk.out/ArmCdkAppStack.template.json`. +## Bootstrap the AWS CDK application environment + +After synthesizing your application, you need to bootstrap the environment. In this step, the AWS CDK creates resources such as AWS Identity and Access Management (IAM) roles. + +Within the project directory, bootstrap the environment: + +```bash +cdk bootstrap +``` + ## Deploy the AWS CDK application -After completing synthesis, you're ready to deploy the application. AWS CDK deploys the application through the generated AWS CloudFormation stack. +After bootstrapping the environment, you're ready to deploy the application. AWS CDK deploys the application using the AWS CloudFormation stack generated during synthesis and IAM roles created during bootstrap. Deploy the application: ```bash cdk deploy ``` -The last couple lines of the output include a URL to the web server and the load balancer's DNS name: + +The deployment can take a couple minutes to complete. When the deployment completes, the last couple lines of the output will include a URL to the web server and the load balancer's DNS name: ```output Outputs: @@ -50,6 +61,8 @@ cdk destroy ``` When AWS CDK asks whether to delete `ArmCDKAppStack`, enter `y`. +The cleanup process can take a couple minutes to complete. + ## What you've accomplished You've now synthesized and deployed a sample containerized application on Arm-based compute using Amazon ECS and the AWS CDK. After verifying that the deployment was successful, you cleaned up resources. From f8f590e08b404fb27cb340baf2947b67456f6b8f Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 15 Jun 2026 10:06:02 -0500 Subject: [PATCH 24/30] more feedback-related updates --- content/install-guides/aws-cdk.md | 28 +++++++++++++++++-- .../aws-cdk/app.md | 14 +++++++++- .../aws-cdk/cdk.md | 5 ++++ 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/content/install-guides/aws-cdk.md b/content/install-guides/aws-cdk.md index fa6cf59078..d58b11865a 100644 --- a/content/install-guides/aws-cdk.md +++ b/content/install-guides/aws-cdk.md @@ -26,9 +26,33 @@ In this guide, you'll learn how to install the CDK CLI and verify that the CLI i ## Before you begin -Before you can use the AWS CDK, you need to set up AWS credentials and install the AWS CLI. For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys/) and [AWS CLI](/install-guides/aws-cli/) install guides. +Make sure that you have the AWS CLI installed: -To install the AWS CDK CLI, you'll need Node.js 22 or later. You'll also need to install prerequisites specific to the programming languages that you want to use. For more information about Node.js and language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. +```bash +aws --version +``` + +The output is similar to: + +```output +aws-cli/2.34.56 Python/3.14.5 Darwin/25.5.0 exe/arm64 +``` +For more information about setting up AWS credentials and installing the AWS CLI, see the [AWS Credentials](/install-guides/aws_access_keys/) and [AWS CLI](/install-guides/aws-cli/) install guides. + +Make sure you have Node.js 22 or later installed: + +```bash +node --version +``` + +The output is similar to: + +```output +v26.2.0 +``` +If you don't have Node.js installed, or if the installed version is earlier than Node.js 22, download a suitable version from the [Node.js website](https://nodejs.org/en/download). + +You'll also need to install prerequisites specific to the programming languages that you want to use. For more information about language-specific prerequisites, see [Install Node.js and programming language prerequisites](https://docs.aws.amazon.com/cdk/v2/guide/prerequisites.html#prerequisites-node) in the AWS CDK documentation. ## Install the AWS CDK CLI diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index e3b7cd6b03..a5569de4f3 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -13,7 +13,19 @@ In this section, you'll create a JavaScript CDK application that defines an Amaz ### Before you begin -Make sure that you've completed all prerequisite steps and installed the AWS CDK CLI. For more information, see the [AWS CDK install guide](/install-guides/aws-cdk). +Make sure that you've installed the AWS CDK CLI: + +```bash +cdk --version +``` + +The output is similar to: + +```output +2.1125.0 (build 71fd29e) +``` + +For instructions to set up and install the AWS CDK CLI, see the [AWS CDK install guide](/install-guides/aws-cdk). ### Initialize a CDK project diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index d91a8e5cf9..5607823f6e 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -35,6 +35,11 @@ Deploy the application: ```bash cdk deploy ``` +By default, the AWS CDK CLI will prompt you to approve IAM-related changes during deployment. To deploy the application without the need for approval, run: + +```bash +cdk deploy --require-approval never +``` The deployment can take a couple minutes to complete. When the deployment completes, the last couple lines of the output will include a URL to the web server and the load balancer's DNS name: From 11159742b76b0fd35615aca8cd52d2561adbeff5 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 15 Jun 2026 10:19:11 -0500 Subject: [PATCH 25/30] adding metadata descriptions --- .../servers-and-cloud-computing/aws-cdk/_index.md | 2 +- .../learning-paths/servers-and-cloud-computing/aws-cdk/app.md | 3 ++- .../learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md index ff053c1031..c4d5206a34 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md @@ -13,7 +13,7 @@ who_is_this_for: This is an introductory topic for software developers who want learning_objectives: - Create an example AWS CDK application in JavaScript - Define AWS infrastructure using the AWS CDK - - Deploy application resources on Arm-based AWS compute + - Deploy application resources on Arm-based AWS compute using Amazon ECS and the AWS CDK prerequisites: - An Amazon Web Services (AWS) account diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index a5569de4f3..8a959e0572 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -1,5 +1,6 @@ --- title: "Create a sample AWS CDK application" +description: Create a JavaScript AWS CDK application that defines an Amazon ECS service running on Arm-based AWS Fargate compute. weight: 2 layout: "learningpathall" @@ -98,4 +99,4 @@ module.exports = { ArmCdkAppStack }; You've now set up a sample application using AWS CDK. -Next, you'll use AWS CDK to synthesize and deploy the application. \ No newline at end of file +Next, you'll use AWS CDK to synthesize and deploy the application. diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index 5607823f6e..e640bbd5ef 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -1,5 +1,6 @@ --- title: "Synthesize and deploy the sample AWS CDK application" +description: Synthesize, deploy, verify, and clean up a sample AWS CDK application running on Arm-based AWS Fargate compute. weight: 3 layout: "learningpathall" @@ -72,4 +73,4 @@ The cleanup process can take a couple minutes to complete. You've now synthesized and deployed a sample containerized application on Arm-based compute using Amazon ECS and the AWS CDK. After verifying that the deployment was successful, you cleaned up resources. -You can use this workflow to programmatically deploy and manage containerized applications on Arm-based compute powered by AWS Graviton processors. \ No newline at end of file +You can use this workflow to programmatically deploy and manage containerized applications on Arm-based compute powered by AWS Graviton processors. From da58dd14bd3f2f4a891c1a84d3244a0951e72a03 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 15 Jun 2026 10:25:17 -0500 Subject: [PATCH 26/30] adding a link to Graviton material --- .../learning-paths/servers-and-cloud-computing/aws-cdk/app.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 8a959e0572..0daee4fb89 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -12,6 +12,8 @@ The AWS Cloud Development Kit (CDK) is an open-source infrastructure as code (Ia In this section, you'll create a JavaScript CDK application that defines an Amazon Elastic Container Service (ECS) service running on Arm-based AWS Fargate compute. +Arm-based AWS compute is powered by AWS Graviton processors. For more information about AWS Graviton, see [AWS Graviton processors](https://aws.amazon.com/ec2/graviton/). + ### Before you begin Make sure that you've installed the AWS CDK CLI: From 967f4f4eb724dcbf25d417a7804552ebccc7e146 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 15 Jun 2026 10:38:52 -0500 Subject: [PATCH 27/30] updating link --- .../learning-paths/servers-and-cloud-computing/aws-cdk/app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 0daee4fb89..5ac8682162 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -12,7 +12,7 @@ The AWS Cloud Development Kit (CDK) is an open-source infrastructure as code (Ia In this section, you'll create a JavaScript CDK application that defines an Amazon Elastic Container Service (ECS) service running on Arm-based AWS Fargate compute. -Arm-based AWS compute is powered by AWS Graviton processors. For more information about AWS Graviton, see [AWS Graviton processors](https://aws.amazon.com/ec2/graviton/). +Arm-based AWS compute is powered by AWS Graviton processors. For more information about AWS Graviton, see [Level up your compute with AWS Graviton](https://aws.amazon.com/ec2/graviton/level-up-with-graviton/). ### Before you begin From 512cbd2609df16c620be450156e8f3eb67ebcd88 Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 15 Jun 2026 10:57:20 -0500 Subject: [PATCH 28/30] encasing duration in note --- .../aws-cdk/cdk.md | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md index e640bbd5ef..652974dd24 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/cdk.md @@ -36,13 +36,19 @@ Deploy the application: ```bash cdk deploy ``` -By default, the AWS CDK CLI will prompt you to approve IAM-related changes during deployment. To deploy the application without the need for approval, run: +By default, the AWS CDK CLI will prompt you to approve IAM-related changes during deployment. + +For the AWS CDK CLI to deploy the application without the need for approval, set the `--require-approval` flag to `never` during deployment: ```bash cdk deploy --require-approval never ``` -The deployment can take a couple minutes to complete. When the deployment completes, the last couple lines of the output will include a URL to the web server and the load balancer's DNS name: +{{% notice Note %}} +The deployment can take a couple minutes to complete. +{{% /notice %}} + +When the deployment completes, the last couple lines of the output will include a URL to the web server and the load balancer's DNS name: ```output Outputs: @@ -65,9 +71,17 @@ After you've validated the deployment, clean up the AWS resources that you creat ```bash cdk destroy ``` -When AWS CDK asks whether to delete `ArmCDKAppStack`, enter `y`. +By default, the AWS CDK CLI will prompt you to approve the deletion of `ArmCDKAppStack`. + +For the AWS CDK CLI to clean up resources without the need for approval, use the `--force` or `-f` flag: + +```bash +cdk destroy -f +``` +{{% notice Note %}} The cleanup process can take a couple minutes to complete. +{{% /notice %}} ## What you've accomplished From 1e399549206cee5d269902c1f00ae6b59966bc2e Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Mon, 15 Jun 2026 11:07:49 -0500 Subject: [PATCH 29/30] updates to index.md --- .../servers-and-cloud-computing/aws-cdk/_index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md index c4d5206a34..86736128e9 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/_index.md @@ -32,9 +32,11 @@ armips: operatingsystems: - Linux tools_software_languages: - - AWS CDK + - AWS CDK CLI + - Amazon Elastic Container Service (Amazon ECS) - AWS CLI - Node.js + - JavaScript further_reading: - resource: From 9f4a8b2f88ebb5ec40d47f9df605a5e747d390ed Mon Sep 17 00:00:00 2001 From: anupras-mohapatra-arm Date: Tue, 16 Jun 2026 10:21:42 -0500 Subject: [PATCH 30/30] adding node js check to lp as well --- .../servers-and-cloud-computing/aws-cdk/app.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md index 5ac8682162..254c23be5e 100644 --- a/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md +++ b/content/learning-paths/servers-and-cloud-computing/aws-cdk/app.md @@ -30,6 +30,17 @@ The output is similar to: For instructions to set up and install the AWS CDK CLI, see the [AWS CDK install guide](/install-guides/aws-cdk). +Make sure you've installed Node.js: + +```bash +node --version +``` + +The output is similar to: +```output +v26.2.0 +``` + ### Initialize a CDK project Create a directory for your CDK project and navigate to it: