ECS Express Mode のサービス作成時に ARM64 を指定できるようになったので試してみた

ECS Express Mode のサービス作成時に ARM64 を指定できるようになったので試してみた

ECS Express Mode では、初回サービスの作成時に Fargate タスクの CPU アーキテクチャとして ARM64 を指定できるようになりました。本記事では、AWS CLI から ARM64 を指定してサービスを作成し、タスクが ARM64 で起動することを確認します。
2026.09.17

はじめに

2026年9月11日リリースの AWS CLI v2.36.44 で、ECS Express Mode のサービス作成時に CPU アーキテクチャとして ARM64 を指定できるようになりました。

マネジメントコンソールのサービス作成画面でも、CPU アーキテクチャを選択可能になりました。

ECS Express Mode のサービス作成画面にある CPU アーキテクチャの選択欄

CLI での検証

本記事の CLI 操作には AWS CLI v2.36.46 を使用しました。

$ aws --version
aws-cli/2.36.46 Python/3.14.6 Linux/...

--cpu-architecture は v2.36.44 で追加されたため、CLI で試す場合は v2.36.44 以降が必要です。以下の CLI 操作はリージョン ap-northeast-1、クラスター default で実施しました。

ARM64 でサービスを作成

コンテナイメージには public.ecr.aws/nginx/nginx:stable-alpine を使いました。amd64 と arm64 の両アーキテクチャに対応したマルチアーキテクチャイメージでした。

タスク定義は用意せず、サービスを作成しました。ネットワーク関連のパラメータ(VPC やサブネットの指定など)は環境ごとに異なったため、CLI リファレンスを参照して指定しました。

aws ecs create-express-gateway-service \
  --service-name express-arm64-explicit \
  --primary-container "image=public.ecr.aws/nginx/nginx:stable-alpine,containerPort=80" \
  --cpu-architecture ARM64 \
  --region ap-northeast-1

作成したサービスを確認すると、cpuArchitecture が指定どおりになっていました。

{
    "cpu": "1024",
    "memory": "2048",
    "cpuArchitecture": "ARM64",
    "primaryContainer": {
        "image": "public.ecr.aws/nginx/nginx:stable-alpine"
    }
}

起動した Fargate タスクを describe-tasks で確認すると、ecs.cpu-architecture 属性は arm64 でした。

"attributes": [
  {
    "name": "ecs.cpu-architecture",
    "value": "arm64"
  }
]

サービスエンドポイントのレスポンスヘッダから、nginx が正常に応答していることを確認できました。

HTTP/2 200
server: nginx/1.30.4

カスタムタスク定義

サービス追加時に ARM64 を利用するには、カスタムタスク定義が必要です。

検証では、executionRoleArn にタスク実行ロールの ARN を指定しました。awslogs-create-grouptrue に指定したため、ロググループは初回起動時に自動作成されました。

{
  "family": "express-arm64-custom-td",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "runtimePlatform": {
    "cpuArchitecture": "ARM64",
    "operatingSystemFamily": "LINUX"
  },
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "Main",
      "image": "public.ecr.aws/nginx/nginx:stable-alpine",
      "essential": true,
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp",
          "name": "http"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/express-arm64-custom-td",
          "awslogs-region": "ap-northeast-1",
          "awslogs-stream-prefix": "main",
          "awslogs-create-group": "true"
        }
      }
    }
  ]
}

まとめ

従来、ECS Express Mode を新規に作成する場合、初回サービスは x86_64 で起動していたため、ARM64 を利用するには、ARM64 を指定したカスタムタスク定義でサービスを作成し、初回サービスと入れ替える手間がありました。今回のアップデートにより、初回サービスの作成時から ARM64 を利用できるようになりました。

開発環境が ARM(Mac など)でクロスビルドを避けたい場合や、コスト削減のため ARM アーキテクチャに統一したいワークロードで ECS Express Mode を新規に構築する際は、本アップデートをお試しください。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事