AWS Deadline Cloud の CMF で 3ds Max 2024 を動かしてみた

AWS Deadline Cloud の CMF で 3ds Max 2024 を動かしてみた

AWS Deadline Cloud の CMF で Autodesk 3ds Max 2024 のレンダリングを動かすために、持ち込みライセンス (BYOL) で Worker を構成して実機検証しました。検証結果と、検証中に得られた知見を 3 点共有します。
2026.06.11

はじめに

3DCG / VFX 制作で利用する DCC (Digital Content Creation) アプリのレンダーファーム運用において、ライセンスをどの形態で Worker に供給するかは設計の入口になります。AWS Deadline Cloud には、ジョブ実行時間に応じた従量課金でライセンスを利用できる UBL (Usage-Based Licensing) という仕組みがあり、対応する DCC とバージョンであれば SMF (Service-Managed Fleet) でも CMF (Customer-Managed Fleet) でも利用できると公式ドキュメントに記載されています。

ただし、UBL の対応バージョンは製品ごとに区切られています。3ds Max の場合、本記事の執筆時点で UBL の対象となるのは 2025 と 2026 のみで、本記事の題材である 3ds Max 2024 は対象外です。そのため、3ds Max 2024 を動かすには持ち込みライセンス (BYOL: Bring Your Own License) を Worker に供給する必要があります。本記事では、利用者が自前で契約済みの Autodesk subscription で Worker 上の 3ds Max を activate する構成を扱います。検証結果と、検証中に得られた知見を 3 点共有します。

AWS Deadline Cloud とは

AWS Deadline Cloud は、3DCG / VFX 制作向けのレンダーファームをクラウド上に構築できるマネージドサービスです。Worker のオートスケーリングやジョブ管理、ライセンス供給などレンダーファーム運用に必要な機能を備えています。

対象読者

  • AWS Deadline Cloud で CMF を構築している、もしくは検討している方
  • Autodesk 3ds Max 2024 のレンダーファームを AWS 上で構築したい方
  • UBL の対象外バージョンを利用する場合の Worker 構成を比較検討したい方

参考

検証のゴールと構成

検証は次の 4 点をすべて満たすことをゴールとしました。

  1. Submitter から投入したジョブが Worker EC2 上で SUCCEEDED まで完走すること
  2. ジョブ実行中に Worker 上で 3ds Max が起動し、持ち込みライセンスの activation 情報を参照してヘッドレスレンダリングが進行すること (サインインダイアログを出さないこと)
  3. レンダリング結果の PNG ファイルが S3 経由で取得できること
  4. Worker Agent サービスが Fleet に IDLE 状態で参加し続けること

検証構成は次の通りです。Submitter ホストと Worker ホストはどちらも Windows Server 2022 の EC2 で、CMF + UBL 版との構成上の差分は License Endpoint がないこと、Worker EC2 上で 3ds Max 2024 を自前の Autodesk アカウントで activate していることです。

Submitter には Deadline Cloud Monitor をインストールし、Identity Center 経由でサインインしておきます。3ds Max の Submitter プラグインは Monitor のサインインで得られる AWS 認証情報を利用してジョブを投入します。Worker EC2 は 3ds Max 本体と Worker Agent、Adaptor を載せるため c5.4xlarge / EBS 200 GB で構成しました。

検証の結果

3ds Max にティーポットを 1 つ配置しただけのミニマルな検証用シーンを用意し、Submitter プラグインからジョブを投入しました。レンダラーは Default Scanline Renderer を使用しています。

ジョブのステータスは READY から STARTING、RUNNING を経て SUCCEEDED まで遷移し、1 タスクが 44 秒で完走しました。出力は 1280 x 720 の PNG として S3 から取得できています。

今回は検証としてティーポットの画像を出力しました。

3dsmax-byol-cmf-result

CMF Fleet 上の 3ds Max が、持ち込みライセンスの activation 情報を参照してサインインダイアログを出さずにレンダリングを完走したことを実機で確認できました。

検証で得た知見

Autodesk ライセンスはユーザーごとに保管されるため、 Worker サービスを activate したユーザーで動かす

検証当初は、install-deadline-worker が既定で生成する deadline-worker ユーザーで DeadlineWorker サービスを動かしたまま、Worker EC2 の Administrator として 3ds Max を activate しておけば動くと想定していました。同じ Windows ホスト内であればライセンス情報も共有されると考えたためです。

ところが、Adaptor が起動するヘッドレスモードの 3ds Max は License Error: login requires GUI mode で終了します。Autodesk のライセンス情報は %LOCALAPPDATA%\Autodesk\AdskLicensingAgent 配下にユーザーごとに分離して保管されており、deadline-worker ユーザーには activate 時のトークンが存在しないためです。 GUI モードであればサインインダイアログを出して回復できますが、Adaptor 経由のヘッドレス実行では UI を出せないため、そのまま失敗します。

正しい経路は、DeadlineWorker サービスのログオンユーザーを 3ds Max を activate したユーザー (本検証では Administrator) に切り替えることでした。同時に、Administrator は既定で Log on as a service 権限を持たないため、secedit 経由で SeServiceLogonRight を明示的に付与する必要があります。

$pw = '<Administrator のパスワード>'
Stop-Service DeadlineWorker -Force
sc.exe config DeadlineWorker obj= '.\Administrator' password= $pw

$lines = @(
  '[Unicode]', 'Unicode=yes',
  '[Version]', 'signature="$CHICAGO$"', 'Revision=1',
  '[Privilege Rights]',
  'SeServiceLogonRight = Administrator,deadline-worker,*S-1-5-80-0'
)
$lines | Set-Content -Path C:\Windows\Temp\grant-svc.inf -Encoding Unicode
secedit /configure /db C:\Windows\Temp\grant-svc.sdb /cfg C:\Windows\Temp\grant-svc.inf /areas USER_RIGHTS
Start-Service DeadlineWorker

secedit /configure は対象の権限割り当てを追記ではなく置換するため、既存のサービスユーザー (deadline-worker) とシステムアカウント SID (*S-1-5-80-0) も明示的に並べて指定しています。Administrator だけを指定すると、既存の Worker サービスの起動権限が剥奪されてサービスが起動しなくなるためご注意ください。

worker.toml に run_jobs_as_agent_user = true を opt-in する。 BOM を絶対に付けない

Render Queue を WORKER_AGENT_USER モード (ジョブを Worker Agent サービスと同じユーザーで実行するモード) で作成すると、Linux Worker ではそのまま動きます。一方、Windows Worker ではジョブが session 開始直後に次のエラーで失敗します。

Job cannot run as WORKER_AGENT_USER. Worker Agent is running with Administrator privileges.

エラー文言は Administrator 権限の有無を見ているように読めますが、実際には Worker Agent の scheduler.py が Windows 環境で WORKER_AGENT_USER モードをハードコードで拒否しています。これは Windows の user-isolation 機構が Linux と等価でないことに由来する安全側の判定で、越えるには worker.toml の [os] セクションで明示的に opt-in する必要があります。

[os]
run_jobs_as_agent_user = true

このときに踏みやすい落とし穴が encoding です。Windows Server 2022 標準の PowerShell 5.1 で Set-Content -Encoding UTF8 を使うと、worker.toml の先頭に UTF-8 BOM が付与されます。 Python 3.11 標準の tomllib は BOM を許容しないため、DeadlineWorker サービスが起動直後に SystemExit: 1 で終了します。 worker-agent.log にもパースエラーが残らないため、原因の特定に手間取りやすい挙動です。

worker.toml の編集は [System.IO.File]::WriteAllTextUTF8Encoding($false) で呼ぶか、PowerShell 7 以降の -Encoding UTF8NoBOM を使い、BOM を確実に避けてください。

$path = 'C:\ProgramData\Amazon\Deadline\Config\worker.toml'
$content = Get-Content $path -Raw
$content = $content -replace '(?m)^# run_jobs_as_agent_user = true', 'run_jobs_as_agent_user = true'
[System.IO.File]::WriteAllText($path, $content, (New-Object System.Text.UTF8Encoding($false)))
Restart-Service DeadlineWorker -Force

3ds Max Adaptor は 2 か所の Python に install する。 PATH 追記もあわせて行う

3ds Max Adaptor (deadline-cloud-for-3ds-max) は、Worker Agent 側 Python と 3ds Max 内蔵 Python の両方に install する必要があります。これは Adaptor の構造に由来します。

Worker Agent (本検証では Python 3.11) は 3dsmax-openjd CLI を起動してジョブを処理します。 3dsmax-openjd が起動する 3ds Max の内蔵 Python (3ds Max 2024 では 3.10) は、別途 import deadline.max_adaptor を実行します。どちらか一方にしか install していないと、ジョブが '3dsmax-openjd' is not recognized または ModuleNotFoundError: No module named 'deadline' で失敗します。

# Worker Agent 側 Python 3.11
& "C:\Program Files\Python311\python.exe" -m pip install deadline-cloud-for-3ds-max

# 3ds Max 2024 内蔵 Python (pip が同梱されていないため ensurepip で bootstrap する)
$maxPy = "C:\Program Files\Autodesk\3ds Max 2024\Python\python.exe"
& $maxPy -m ensurepip --upgrade
& $maxPy -m pip install deadline-cloud-for-3ds-max

合わせて、C:\Program Files\Python311\Scripts (3dsmax-openjd.exe 配置先) と C:\Program Files\Autodesk\3ds Max 2024 (3dsmax.exe 配置先) を Machine PATH に追加します。 3dsmax-openjd は内部で 3dsmax.exe を相対参照で起動するため、3ds Max 本体のディレクトリもあわせて PATH に乗せておかないと Could not find the specified command: 3dsmax で失敗します。

3ds Max のメジャーバージョンを上げると内蔵 Python のバージョンも変わるため、アップグレード時の手順にもこの再展開を含めておくと安全です。

まとめ

AWS Deadline Cloud の CMF と持ち込みライセンスで、3ds Max 2024 のレンダリングが成立することを実機で確認できました。 UBL の対応バージョンを使えない場面でも、Worker サービスのユーザー設計と Adaptor の展開先に気を配れば、CMF 上で 3ds Max を動かす構成が現実的に組めることが分かりました。

今回の検証は Default Scanline Renderer での 1 フレームのみのため、V-Ray などの追加レンダラ、複数フレームでのレンダリング、Fleet のスケール動作の確認は次のステップとなります。

なお、本記事の構成では Worker サービスを Administrator 相当のユーザーで動かしているため、本番運用ではジョブが Worker ホストの Administrator 権限を継承する形になります。社内のセキュリティ要件と合わせて、Worker サービスのユーザー設計は事前に判断してください。

本記事が、AWS Deadline Cloud で CMF と持ち込みライセンスの構成を検討する際の参考になれば幸いです。


ゲーム開発・運用環境の効率化を支援します

Classmethodの専門家による包括的なクラウド活用とデジタル化支援で、ゲーム開発の効率を最大化しましょう。AWSの導入から運用、最適化まで、最新技術と豊富な経験であらゆる課題を解決します。株式会社CAPCOM様、株式会社SNK様などの事例もご覧いただけます。

ゲーム業界のサービス詳細を見る

この記事をシェアする

関連記事