[アップデート] AWS CodeBuild プロジェクトの最大タイムアウトが 36 時間までサポートされるようになってました
いわさです。
AWS CodeBuild は AWS マネージドなビルドサービスです。
実体としては CodeBuild が実行時に生成する仮想環境上で Buildspec.yml 上のタスクを実行出来るます。
ビルドだけでなくテストや DB マイグレーションを行ったり、あるいは想定された使い方ではないと思いますが定期バッチ的な使い方をする人も稀にいたりと、かなり自由な使い方が出来るサービスです。
そんな CodeBuild ですが、無限にビルド処理を出来るわけではなく実行時間の上限が定められています。
CodeBuildのデフォルトのタイムアウトは1時間ですが、8時間まで延長することができます。
従来は最大 8 時間までという制限がありましたが、先日 AWS API が更新され最大 36 時間までサポートされるようになりました。
AWS CLI では v1.32.108 以上から使えるようになっており、プロジェクトの設定および、ビルド実行時のオーバーライド設定どちらもサポートされています。
- create-project — AWS CLI 1.32.108 Command Reference
- start-build — AWS CLI 1.32.108 Command Reference
コンソールからも確認してみる
CodeBuild プロジェクトのビルド環境設定時にタイムアウト値は変更することが出来ます。
デフォルトの 1 時間のまま使っていた方も多いかもしれません。
マネジメントコンソール上でも次のようにタイムアウト上限に 36 時間まで設定出来るようになっています。
デフォルトは 1 時間のままです。
注意点としてキュータイムアウトは従来どおり最大 8 時間までとなっています。
CodeBuild は同時ビルド数の制限があり、その制限を超えてビルドを開始しようとするとビルドキューに入れられます。このビルドキューで待機出来る時間の上限がキューのタイムアウトです。
そもそもキュータイムアウトが発生している環境では今回のアップデートの恩恵を受けられないので注意しましょう。
今回単一のビルドの最大時間が拡張されましたが、CodeBuild には並列ビルド機能がありますのでビルド単位を分けて短く並列にビルド出来ないかも検討しましょう。
このあたりのビルド単位や構成が最適化出来ると、Lambda 環境を CodeBuild プロジェクトへ採用したりも出来るようになります。
なお、既存プロジェクトのタイムアウト設定値は次の環境パネルから確認が可能です。
次のプロジェクトでは 36 時間設定されていることが確認できますね。
さいごに
本日は AWS CodeBuild プロジェクトの最大タイムアウト時間が 36 時間まで拡張された気配を感じたので、マネジメントコンソールから確認してみました。
キュータイムアウトは据え置きでビルドタイムアウトのみのアップデートなのでご注意ください。
長時間のテストや依存モジュールを独自でビルドする大規模な環境など、どうしても 8 時間以上のビルド時間が必要な場合に使えるオプションとして覚えておきましょう。