CDK で Fargate サービスを作成するチュートリアルをやってみた
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
に「追記」の箇所を追記して以下のように定義します。
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