閉域 VPC の AWS Deadline Cloud CMF Worker では STS の VPC エンドポイントが要る話

閉域 VPC の AWS Deadline Cloud CMF Worker では STS の VPC エンドポイントが要る話

AWS Deadline Cloud の Worker Agent 本体は STS を呼ばない設計ですが、job attachments の入力同期だけは内部で STS にフォールバックします。閉域 VPC では STS のインターフェイス VPC エンドポイントを追加すると、この入力同期のタイムアウトを解消できます。
2026.06.21

はじめに

AWS Deadline Cloud の CMF (Customer-Managed Fleet) Worker を、インターネットへの出口を持たない閉域 VPC で動かしたときに遭遇した問題について共有します。

Worker Agent サービスは Fleet に IDLE 状態で追加され、一見すると正常です。ところがいざジョブを流すと、入力ファイルの同期の段階で次のエラーが出てタスクが失敗しました。

Connect timeout on endpoint URL: "https://sts.ap-northeast-1.amazonaws.com/"

Deadline Cloud の Worker Agent は STS (AWS Security Token Service) を呼ばずに動く設計だと理解していたので、ジョブ実行の段階で急に STS への接続が現れるのは意外でした。

結論を先に書くと Worker Agent 本体は確かに STS を呼びません。ですが、入力ファイルの同期を担う job attachments の処理だけは内部で STS にフォールバックします。 そのため閉域 VPC では STS のインターフェイス VPC エンドポイントを足すと解決します。

AWS Deadline Cloud とは

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

対象読者

  • AWS Deadline Cloud の CMF を閉域 VPC で構築している、もしくは検討している方
  • Worker は正常に見えるのにジョブだけ失敗する事象の切り分けに悩んでいる方
  • Deadline Cloud の Worker が AWS のクレデンシャルをどう取得しているかを知りたい方

参考

前提となる構成

再現条件を把握できるよう、まずは 3 つの前提について説明します。

  1. CMF: AWS が Worker を起動する SMF (Service-Managed Fleet) と異なり、利用者が用意した EC2 を Worker として Fleet に登録する方式です。
  2. 閉域 VPC: 本記事では、インターネットゲートウェイも NAT も持たず、外向きのインターネット通信ができない VPC をこう呼びます。一般的なプライベートサブネットは NAT 経由で外向き通信ができますが、ここではそれも遮断し、必要な AWS API にはインターフェイス VPC エンドポイント (PrivateLink) 経由でのみ到達します。
  3. job attachments: シーンファイルなどの入力を S3 経由で Worker に同期する Deadline Cloud の仕組みです。入力同期は Worker 上で syncInputJobAttachments というアクションとして走ります。

構成を図にすると次のようになります。Worker Agent 本体が deadline のエンドポイント経由でクレデンシャルを得る経路と、job attachments が S3 や STS を呼ぶ経路を分けて描いています。

症状

ジョブを投入すると READY から RUNNING までは進みます。ところが入力同期の段階でタスクが FAILED し、CloudWatch Logs の progressMessage に次のメッセージが出ます。

An issue occurred with AWS service request while downloading binary file:
Connect timeout on endpoint URL: "https://sts.ap-northeast-1.amazonaws.com/"

なぜ Worker Agent 本体は STS を呼ばないのか

Worker Agent が起動して Fleet に参加できている時点で、何らかの AWS クレデンシャルは取得できているはずです。ところがその経路は STS ではありません。Worker Agent は起動時に deadline の AssumeFleetRoleForWorker という API を呼び、fleet worker role の一時クレデンシャルを deadline のエンドポイント経由で受け取ります。クレデンシャルの払い出しを deadline サービス自身が肩代わりする仕組みで、sts:AssumeRole を直接は呼びません。

Worker Agent では次のようなログが出ます。

[AWSCreds.Query] Requesting AWS Credentials
[deadline:AssumeFleetRoleForWorker] (200) accessKeyId=ASIA... sessionToken=...
[AWSCreds.Query] Obtained temporary Worker AWS Credentials.

このため、STS のエンドポイントが無い閉域 VPC でも Worker Agent 本体は問題なく動き、Fleet に IDLE 状態で追加されます。ここが、Worker は正常に見えるのにジョブだけ落ちる、という分かりにくさの正体です。

なぜ job attachments だけ STS を呼ぶのか

入力同期で STS が登場するのは、S3 の GetObject 時に付与する ExpectedBucketOwner ヘッダのために AWS アカウント ID が必要になるからです。このアカウント ID の解決の連鎖が、閉域 VPC で初めて表面化します。

job attachments の処理は、まずセッションからアカウント ID を取り出そうとします。ところが Worker Agent が払い出すクレデンシャルのファイルは、VersionAccessKeyIdSecretAccessKeySessionTokenExpiration の 5 つしか持たず、AccountId のフィールドを含みません。さらにクレデンシャル取得用に書かれるプロファイルの設定にも aws_account_id がありません。その結果、botocore はアカウント ID を None と判定し、最終手段として sts.get_caller_identity() を呼びます。

ここまでの連鎖をまとめると次のようになります。

  1. job attachments が S3 GetObject の ExpectedBucketOwner 用にアカウント ID を要求する。
  2. クレデンシャルのファイルに AccountId が無く、プロファイルの設定にも aws_account_id が無い。
  3. botocore がアカウント ID を None と判定し、フォールバックで sts.get_caller_identity() を呼ぶ。
  4. 閉域 VPC に STS のエンドポイントが無いため、STS への TCP 接続がタイムアウトする。
  5. job attachments がこの例外を捕捉し、入力ファイルのダウンロード失敗としてタスクを FAILED にする。

対処

対処方法は、STS のインターフェイス VPC エンドポイント (com.amazonaws.<region>.sts) を VPC に追加することです。これによりフォールバックの get_caller_identity() が VPC 内で解決でき、入力同期が完走します。エンドポイント 1 つあたり月額数ドル程度で、最も素直な解決策です。

代替案として以下のようなものも考えられます。

  • シーンファイルの配信を job attachments 経由ではなく AMI への焼き込みや S3 からの直接ダウンロードに変え、syncInputJobAttachments 自体を走らせない方法
  • プロファイルの設定に aws_account_id を書き込んで STS へのフォールバックをスキップさせる方法 (ただし、これはライブラリ側の挙動に踏み込むため工数が大きく、おすすめしません。)

まとめ

閉域 VPC で CMF Worker を組むとき、Worker Agent 本体が IDLE で追加されることとジョブが完走することは別問題です。Worker Agent 本体はクレデンシャルの払い出しで STS を回避しますが、job attachments の入力同期は別経路で STS にフォールバックします。閉域 VPC では STS のインターフェイス VPC エンドポイントを忘れずに用意してください。

閉域 VPC で Deadline Cloud の CMF Worker を構築する方の参考になれば幸いです。


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

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

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

この記事をシェアする

関連記事