📝

CDK で Fargate サービスを作成するチュートリアルをやってみた

2025/03/11に公開

Example: Create an AWS Fargate service using the AWS CDK - AWS Cloud Development Kit (AWS CDK) v2
上記チュートリアルをやってみました。

実行環境

  • Cloud9
  • 言語: TypeScript

TypeScript のインストール

デフォルトでは Cloud9 環境に TypeScript がインストールされていなかったため、以下のコマンドでインストールしました。

$ mkdir -p ~/.npm-global
$ npm config set prefix '~/.npm-global'
$ echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc
$ npm install -g typescript
$ tsc -v
Version 5.7.3

CDK プロジェクトの作成

ドキュメント通りにコマンドを実行します。

$ mkdir MyEcsConstruct
$ cd MyEcsConstruct
$ cdk init --language typescript

Fargate サービスの作成

デフォルトのlib/my_ecs_construct-stack.ts に「追記」の箇所を追記して以下のように定義します。

lib/my_ecs_construct-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as ec2 from "aws-cdk-lib/aws-ec2"; //追記
import * as ecs from "aws-cdk-lib/aws-ecs"; //追記
import * as ecs_patterns from "aws-cdk-lib/aws-ecs-patterns"; //追記

export class MyEcsConstructStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    //以下追記
    const vpc = new ec2.Vpc(this, "MyVpc", {
      maxAzs: 3 // Default is all AZs in region
    });

    const cluster = new ecs.Cluster(this, "MyCluster", {
      vpc: vpc
    });

    // Create a load-balanced Fargate service and make it public
    new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", {
      cluster: cluster, // Required
      cpu: 512, // Default is 256
      desiredCount: 6, // Default is 1
      taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") },
      memoryLimitMiB: 2048, // Default is 512
      publicLoadBalancer: true // Default is true
    });
  }
}

スタックテンプレートの作成およびデプロイを実行します。

$ cdk synth
$ cdk deploy

数分程度でデプロイが完了します。

動作確認

ECS コンソールにアクセスすると以下のリソースが作成されていることを確認できます。

  • ECS クラスター
  • ECS サービス
  • ECS タスク
  • タスク定義
  • ALB
  • ターゲットグループ




ECS サービスのロードバランサーを選択して ALB の DNS 名にブラウザからアクセスすればサンプルアプリが表示されます。

動作確認できたのでアプリを削除します。

$ cdk destroy

コンストラクトレベルについて

AWS CDK Constructs - AWS Cloud Development Kit (AWS CDK) v2

The ecsPatterns.ApplicationLoadBalancedFargateService class is an example of an L3 construct that represents an AWS Fargate service running on an Amazon Elastic Container Service (Amazon ECS) cluster and fronted by an application load balancer.

今回のチュートリアルで使用した ApplicationLoadBalancedFargateService は L3 コンストラクトと呼ばれるレベルです。

L3 コンストラクトでは特定のユースケースに合わせた AWS アーキテクチャ全体が作成されるため、今回のようにシンプルなコードでも ALB を使用する ECS サービスを簡単に構築できます。

各レベルの違いについては上記ドキュメントや以下のブログもご参照ください。
今から始める CDK 入門 #2

まとめ

今回は CDK で Fargate サービスを作成するチュートリアルをやってみました。
どなたかの参考になれば幸いです。

参考資料

Discussion