🦁

[AWSアップデート]ECS に EBS をアタッチできるようになった!

2024/02/18に公開

初めに

2024/1/11のAWSアップデート( https://aws.amazon.com/jp/about-aws/whats-new/2024/01/amazon-ecs-fargate-integrate-ebs/ )により、ECS に EBS をアタッチできるようになった。本ページでは以下についてまとめる。

  • アップデート概要
  • EBSのアタッチ手順

アップデート概要

EC2やFargateで実行しているECSタスクに、EBSボリュームをアタッチできるようになった。

ECS に EBS をアタッチする上での注意点

以下を参照する。
https://zenn.dev/proyogram/articles/c04c3f8438542d

ECSにアタッチ可能なボリューム一覧と特徴

以下を参照する。
https://zenn.dev/proyogram/articles/9475c03f8b9551

EBSのアタッチ手順

手順の概要は以下。本ページでは、Fargateを用いた手順を紹介する。

  1. イメージの作成(作成済みであればスキップ)
  2. IAMロールの作成
  3. ECSタスク定義の作成
  4. ECSクラスターの作成
  5. ECSサービスの作成
  6. 確認作業

1. イメージの作成(作成済みであればスキップ)

■ 作成手順

項目 手順 画面
ECRでリポジトリの作成 ECRコンソールへ移動し、「リポジトリを作成」>「リポジトリ名」にnginx_testを指定>「リポジトリを作成」を選択。
CLI上でImageの作成 CloudShellを開き、$docker pull nginx を実行。 CloudShellでdockerが使えるようになったため、CloudShellを用いる。
ECRへImageのPush ECRの「プッシュコマンド」を参考にECRへ作成したImageをPushする。Pushコマンド3番の $docker tag nginx_test:latest <後略>$docker tag nginx:latest <後略> に変更。

2. IAMロールの作成

■ 作成するIAMロール概要
以降の手順で使用するIAMロールは3つ。そのうち、2つは事前に作成する。
「ECS実行ロール」はタスク定義作成時に自動で作成してくれるため、今回はそれを使用。詳細に設定したい場合は、こちらを参照。

IAMロール 事前作成 設定箇所 説明
タスクロール タスク定義 タスクが実行するために必要なロール
実行ロール × タスク定義 ECRへのアクセスなど、タスク起動時に必要なロール
インフラストラクチャロール サービス 今回のアップデートで新たに追加されたECSからEBSボリュームへのアクセスを許可するロール

■ 作成手順

項目 手順
ECSタスクロールの作成 AWSドキュメント」を参考に作成。 ポリシーは、ドキュメントに記載の「ECS Exec に必要な IAM アクセス許可」を作成しアタッチ。
ECSインフラロールの作成 AWSドキュメント」を参考に作成。ポリシーは、AWS管理ポリシーの「AmazonECSInfrastructureRolePolicyForVolumes」をアタッチ。

3. ECSタスク定義の作成

■ 作成手順

項目 手順 画面
ECSタスク定義の作成を開始 ECSのコンソール上で「タスク定義」>「新しいタスク定義の作成」を選択し、タスク定義の作成を開始。以下、セクション毎の設定項目を記述する。
「タスク定義の設定」のセクション タスク定義ファミリー名を指定。
「インフラストラクチャの要件」のセクション タスクロールに2.で作成したIAMロールを指定。タスク実行ロールは「新しいロールの作成」を指定。
「コンテナ」のセクション コンテナ名を指定。1.で作成したイメージのURIを指定。
「ストレージ」のセクション 「ボリュームの追加」を選択し、「ボリューム名」「デプロイ時に設定」を指定。「マウントポイントの追加」を選択し、コンテナマウントポイントを指定。
タスク定義の作成を実行 「作成」を選択し、タスク定義を作成。

4. ECSクラスターの作成

■ 作成手順

項目 手順 画面
ECSクラスターの作成 ECSのコンソール上で「クラスター」>「クラスターの作成」を選択。「クラスター名」を指定。「作成」を実行。

5. ECSサービスの作成

■ 作成手順

項目 手順 画面
クラスターからサービスの作成を開始 4.で作成したクラスターを選択し、「サービス」>「作成」により、サービスの作成を開始。以下、セクション毎の設定項目を記述する。 ※「ネットワーク」のセクションは省略する。
「環境」のセクション 「起動タイプ」を選択する。
「デプロイ設定」のセクション 「ファミリー」に3.で作成したタスク定義ファミリーを指名。「サービス名」を指定。
「ボリューム」のセクション 「EBSボリュームタイプ」等のスペックを指定。 「インフラストラクチャロール」に2.で作成したIAMロールを指定。今回、暗号化は「なし」とする。
サービスの作成を実行 「作成」を選択し、クラスターを作成。

6. 確認作業

■ 作成手順

項目 手順 画面
EBSボリュームがECSタスクにアタッチされているか 4.で作成したクラスターを選択し、「タスク」タブから起動したタスクを選択。「ボリューム」タブを選択すると、指定したEBSボリュームが紐づいていることが確認できる。

まとめ

ECSのアップデートにより、EBSボリュームをECSタスクにアタッチできるようになった。これにより、大容量なデータや低レイテンシーが求められるワークロード向けにEBSボリュームを選択できるようになった。ECSにはその他アタッチ可能なボリュームが複数あり、今後もそれぞれの特徴を理解した上で選定する必要がある。

Discussion