🦁
[AWSアップデート]ECS に EBS をアタッチできるようになった!
初めに
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 をアタッチする上での注意点
以下を参照する。
ECSにアタッチ可能なボリューム一覧と特徴
以下を参照する。
EBSのアタッチ手順
手順の概要は以下。本ページでは、Fargateを用いた手順を紹介する。
- イメージの作成(作成済みであればスキップ)
- IAMロールの作成
- ECSタスク定義の作成
- ECSクラスターの作成
- ECSサービスの作成
- 確認作業
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