[アップデート] TerraformでECS FargateのCPUアーキテクチャにARM64を指定できるようになりました
こんにちは!コンサル部のinomaso(@inomasosan)です。
2021/11/23のAWSアップデートでFargateがGraviton2に対応しました。
このアップデートを受けTerraformでもAWSプロバイダーのv3.69.0より、CPUアーキテクチャにARM64を指定できるようになりました!
概要
2021/12/10にv3.69.0で#22016のプルリクがマージされました。
このアップデートによりaws_ecs_task_definition
にruntime_platform
が追加され、Fargateのタスクが実行されるオペレーティングシステムにLinuxやWindows Server 2019、CPUアーキテクチャにX86_64やARM64を指定できるようになりました。
以下、Pull Requestに記載されているサンプルコードとなります。
runtime_platform { operating_system_family = "WINDOWS_SERVER_2019_CORE" cpu_architecture = "X86_64" }
やってみた
ARM64に対応したコンテナイメージを起動できるか試してみました。
検証環境
今回実行した環境は以下の通りです。
項目 | バージョン |
---|---|
macOS BigSur | 11.6.1 |
Terraform | 1.0.7 |
AWSプロバイダー | 3.69.0 |
ARM64イメージアーキテクチャを明示的に指定
弊社の以下ブログを参考に、Docker Hubからイメージのアーキテクチャを指定します。
今回はDIGESTを指定で、nginxのARM64イメージアーキテクチャをFargateで起動させます。
Terraformコード
ECSタスク定義
runtime_platform
にFargateのオペレーティングシステムとCPUアーキテクチャを指定します。
resource "aws_ecs_task_definition" "task" { family = "nginx-task" #0.25vCPU cpu = "256" #0.5GB memory = "512" network_mode = "awsvpc" requires_compatibilities = ["FARGATE"] container_definitions = file("./container_definitions.json") runtime_platform { operating_system_family = "LINUX" cpu_architecture = "ARM64" } }
コンテナ定義
image
に先ほど調べたDIGESTを、:@sha256:
で指定します。
[ { "name": "nginx-container", "image": "nginx:latest@sha256:f3d58e8e62f8e897e13e60fcef9802a6de34c6adc83aa18ca5397fa7d6121a0b", "essential": true, "memory": 128, "portMappings": [ { "protocol": "tcp", "containerPort": 80 } ] } ]
確認
コンテナ起動が完了し、nginxのページが表示されることを確認できました。
またAWSマネージメントコンソール上からタスク定義を確認したところruntimePlatform
は意図した通りに定義されていました。
"runtimePlatform": { "cpuArchitecture": "ARM64", "operatingSystemFamily": "LINUX" }, "requiresCompatibilities": [ "FARGATE" ],
参考URL
まとめ
Terraformを利用中でARM64イメージアーキテクチャを検討していた方にとって、待望のアップデートだったのではないでしょうか。
この記事が、どなたかのお役に立てば幸いです。それでは!