[アップデート] しばらく見ないうちに AWS CodeBuild のリザーブドキャパシティフリートの設定方法が柔軟になっていました

[アップデート] しばらく見ないうちに AWS CodeBuild のリザーブドキャパシティフリートの設定方法が柔軟になっていました

Clock Icon2025.04.27

いわさです。

AWS CodeBuild は通常はビルドリクエストが発生したタイミングでビルド環境を構築し、ビルドが終わったら破棄されます。
これをオンデマンドフリートと呼びます。
一方で、事前にビルド環境をアイドル状態で用意しておき、ビルドのリクエストがあったタイミングですぐに開始させることも出来ます。これをリザーブドキャパシティフリートと呼びます。
迅速にビルドを開始できるのがメリットなのですが、一方で常時アイドル状態で環境を用意しておく必要があるので料金が発生し続けるという点もあります。

オンデマンドフリートは特に準備が不要で、リザーブドキャパシティフリートは事前にコンピューティングフリートを作成したうえで次のように CodeBuild プロジェクトで指定します。

image.png

先日リザーブドキャパシティフリートに小さなアップデートがあったので確認してみたところ、いつの間にかこのインスタンススペックを指定する方法が全然違うものになっていることに気が付きましたので、アップデート紹介を兼ねて最新のリザーブドキャパシティフリートの作成方法を紹介します。

従来

このリザーブドキャパシティフリートは 2024 年 1 月ごろに登場した新しい機能で、その当時は次のようにフリート作成時に次のような形でビルド環境のスペックを指定していました。

767472F9-F0A0-4C40-BA58-1EBB1F4C85B4.png

AWS API でいうとcomputeTypeBUILD_GENERAL1_SMALLなど、事前定義されたタイプを指定しています。

% cat hoge.json
{
    "name": "hoge0427fleet3",
    "baseCapacity": 1,
    "environmentType": "LINUX_CONTAINER",
    "computeType": "BUILD_GENERAL1_SMALL",
    "overflowBehavior": "QUEUE"
}
% aws codebuild create-fleet --cli-input-json file://hoge.json --profile hoge
{
    "fleet": {
        "arn": "arn:aws:codebuild:ap-northeast-1:123456789012:fleet/hoge0427fleet3:8e524f22-7ead-42a2-8e8d-71965514800a",
        "name": "hoge0427fleet3",
        "id": "8e524f22-7ead-42a2-8e8d-71965514800a",
        "created": "2025-04-27T06:33:08.381000+09:00",
        "lastModified": "2025-04-27T06:33:08.381000+09:00",
        "status": {
            "statusCode": "CREATING"
        },
        "baseCapacity": 1,
        "environmentType": "LINUX_CONTAINER",
        "computeType": "BUILD_GENERAL1_SMALL",
        "overflowBehavior": "QUEUE"
    }
}

現在(2025 年 4 月 27 日時点)

現在はマネジメントコンソールからは次のようにコンピューティング選択モードを選択できるようになっています。

image.png

それぞれについて解説します。

ガイド付き選択(属性ベース)

まずガイド付き選択ですが、従来のように事前定義されたセットから選択する形ではなく、vCPU / メモリ / ディスクを指定してフリートを構築することができるようになっています。

6F6BBBC7-F93D-475D-ADF7-5A4C30F4791C.png

こちらはどうやら 2024 年 11 月の次のアップデートで実装された機能のようです。
18 の新しいコンピューティングタイプが追加され、さらに vCPU、メモリサイズ、ディスク容量の属性を指定することで、新しいコンピューティングタイプにアクセスできるようになりました。

https://aws.amazon.com/about-aws/whats-new/2024/11/aws-codebuild-compute-types-reserved-capacity/

試しに vCPU を変更してみると、reserved.x86-64.16cpu.32gibに変更されました。
vCPU の変更にあわせてメモリとディスクも自動で変更されています。あくまでも事前に用意されているいくつかのオプションの中から選択する形なので、そこからはずれる組み合わせを選択することは出来ません。

8ED61FE7-C95C-41F5-B521-BDEA7F63021C.png

裏側では従来と同じCreateFleetが実行されているのですが、computeTypeATTRIBUTE_BASED_COMPUTEを指定する形になっています。

{
    "eventVersion": "1.11",
    "eventSource": "codebuild.amazonaws.com",
    "eventName": "CreateFleet",
    "awsRegion": "ap-northeast-1",
    "requestParameters": {
        "computeType": "ATTRIBUTE_BASED_COMPUTE",
        "overflowBehavior": "QUEUE",
        "environmentType": "LINUX_CONTAINER",
        "proxyConfiguration": {},
        "scalingConfiguration": {},
        "name": "hoge0427fleet",
        "baseCapacity": 1,
        "vpcConfig": {},
        "acceptXcodeEndUserLicenseAgreement": false,
        "tags": "HIDDEN_DUE_TO_SECURITY_REASONS",
        "acceptMacOSEndUserLicenseAgreement": false
    },
:

CloudTrail のログ上だと確認できなかったのですが、computeConfigurationで指定された vCPU / メモリ / ディスクを満たす最も安価なインスタンスが選択されます。

カスタムインスタンス

カスタムインスタンスは先日のアップデートで追加された新しい選択モードです。

https://aws.amazon.com/about-aws/whats-new/2025/04/aws-codebuild-ec2-instance-type-configurable-storage-size/

このアップデートでは AWS 利用者には慣れているインスタンスタイプでの指定となっています。
さらにオプションで追加の EBS ボリュームを指定することもできるようになりました。

8F834185-ADDC-4B73-9A6D-E762E6B5B4BF.png

オペレーティングシステム/アーキテクチャに対応するインスタンスタイプがリストされるので選択します。
「GPU 強化コンピューティングを使用」などをチェックするとリストを絞り込むことが出来ます。

AB1CF6CE-9788-4969-903A-CC115C4D4F17.png

また、カスタムインスタンスを選択した時、インスタンスタイプによって vPCU とメモリが決定されるのですが、ディスクは 64 GB がデフォルトとなっています。
追加の EBS ボリュームを設定することでディスクサイズの拡張が可能です。以下は 32 GB を追加指定したことで、96 GB のストレージを確保することができるようになりました。

CD540763-159F-4D3F-813B-B5E89462B8C3.png

さいごに

本日は、しばらく見ないうちに AWS CodeBuild のリザーブドキャパシティフリートの設定方法が柔軟になっていたので最新の設定方法を確認してみました。

なお、カスタムインスタンスの追加ストレージは追加料金は、東京リージョンであれば追加分 $0.000000037/分/GB の単価となっています。
CodeBuild の料金ページも更新されていたので、こちらも併せてご確認ください。

https://aws.amazon.com/codebuild/pricing/?nc1=h_ls

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.