自動ダウンロード - AWS Deadline クラウド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

自動ダウンロード

Deadline CLI は、同じコマンドが最後に実行されてから完了したキュー内のすべてのタスクの出力をダウンロードするコマンドを提供します。これは、繰り返し実行する cron ジョブまたはスケジュールされたタスクとして設定できます。これにより、出力が継続的に自動ダウンロードされます。

自動ダウンロードを設定する前に、ジョブアタッチメントのストレージプロファイルの手順に従って、アップロードおよびダウンロードするアセットデータのすべてのパスを設定します。ジョブがストレージプロファイルにない出力パスを使用する場合、自動ダウンロードはその出力のダウンロードをスキップし、警告メッセージを出力して、ダウンロードしなかったファイルを要約します。同様に、ストレージプロファイルなしでジョブが送信された場合、自動ダウンロードはそのジョブをスキップし、警告メッセージを出力します。デフォルトでは、Deadline Cloud 送信者は、正しい設定を保証するために、ストレージプロファイルの外部にあるパスの警告メッセージを表示します。

AWS 認証情報の設定

出力同期コマンドを手動で実行する場合、または cron ジョブとして設定する前にその動作を把握するには、Deadline Cloud Monitor デスクトップアプリケーションへのログインから認証情報を使用できます。

オンプレミス AWS 認証情報

オンプレミスワーカーは、認証情報を使用して Deadline Cloud ジョブアタッチメントの出力にアクセスします。最も安全なアクセスのために、IAM Roles Anywhere を使用してワーカーを認証することをお勧めします。詳細については、「IAM Roles Anywhere」を参照してください。

テストには、 AWS 認証情報に IAM ユーザーアクセスキーを使用できます。制限付きインラインポリシーを含めることで、IAM ユーザーの有効期限を設定することをお勧めします。

重要

次の警告に注意してください。

  • アカウントのルート認証情報を使用して AWS リソースにアクセスしないでください。これらの認証情報は無制限のアカウントアクセスを提供し、取り消すのが困難です。

  • アプリケーションファイルにリテラルアクセスキーや認証情報を配置しないでください。これを行うと、パブリックリポジトリにプロジェクトをアップロードするなど、誤って認証情報が公開されるリスクが発生します。

  • プロジェクト領域に認証情報を含むファイルを含めないでください

  • アクセスキーを保護します。アカウント識別子を確認するためであっても、アクセスキーを認可されていない当事者に提供しないでください。提供すると、第三者がアカウントへの永続的なアクセスを取得する場合があります。

  • 共有 AWS 認証情報ファイルに保存されている認証情報はすべてプレーンテキストで保存されることに注意してください。

詳細については、 AWS 全般のリファレンスの AWS 「アクセスキーを管理するためのベストプラクティス」を参照してください。

IAM ユーザーの作成
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [ユーザー][ユーザーの作成] の順に選択します。

  3. ユーザー に名前を付けますdeadline-output-downloader。へのユーザーアクセスを許可する AWS Management Consoleのチェックボックスをオフにし、次へを選択します。

  4. ポリシーを直接アタッチするを選択します。

  5. ポリシーの作成 を選択して、最低限必要なアクセス許可を持つカスタムポリシーを作成します。

  6. JSON エディタで、次のアクセス許可を指定します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "DeadlineCloudOutputDownload", "Effect": "Allow", "Action": [ "deadline:AssumeQueueRoleForUser", "deadline:ListQueueEnvironments", "deadline:ListSessions", "deadline:ListSessionActions", "deadline:SearchJobs", "deadline:GetJob", "deadline:GetQueue", "deadline:GetStorageProfileForQueue" ], "Resource": "*" } ] }
  7. ポリシーに名前を付けDeadlineCloudOutputDownloadPolicyポリシーの作成を選択します。

  8. ユーザー作成ページに戻り、ポリシーリストを更新して、先ほど作成した DeadlineCloudOutputDownloadPolicy を選択し、次へを選択します。

  9. ユーザーの詳細を確認し、ユーザーの作成を選択します。

制限された時間枠にユーザーアクセスを制限する

作成する IAM ユーザーアクセスキーは長期的な認証情報です。これらの認証情報が誤って処理された場合に有効期限が切れるようにするには、キーの有効性が切れる日付を指定したインラインポリシーを作成して、これらの認証情報に期限を設定することができます。

  1. 先ほど作成した IAM ユーザーを開きます。アクセス許可タブで、アクセス許可の追加を選択し、インラインポリシーの作成を選択します。

  2. JSON エディタで、次のアクセス許可を指定します。このポリシーを使用するには、ポリシー例のaws:CurrentTimeタイムスタンプ値を独自の日時に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "DateGreaterThan": { "aws:CurrentTime": "2024-01-01T00:00:00Z" } } } ] }
アクセスキーの作成
  1. ユーザーの詳細ページから、セキュリティ認証情報タブを選択します。[Access keys (アクセスキー)] セクションで、[Create access key (アクセスキーを作成)] を選択します。

  2. Other に キーを使用するように指定し、Next を選択し、Create access key を選択します。

  3. アクセスキーの取得ページで、表示を選択してユーザーのシークレットアクセスキーの値を表示します。認証情報をコピーするか、csv ファイルをダウンロードできます。

ユーザーアクセスキーを保存する
  1. ユーザーアクセスキーをシステムの AWS 認証情報ファイルに保存します。

    • ではLinux、ファイルは にあります。 ~/.aws/credentials

    • ではWindows、ファイルは にあります。 %USERPROFILE\.aws\credentials

    次のキーを置き換えます。

    [deadline-downloader] aws_access_key_id=ACCESS_KEY_ID aws_secret_access_key=SECRET_ACCESS_KEY region=YOUR_AWS_REGION
  2. これらの認証情報を常に使用するには、env 変数を AWS_PROFILE に設定しますdeadline-downloader

重要

この IAM ユーザーが不要になった場合は、AWS セキュリティのベストプラクティスに合わせて削除することをお勧めします。アクセスAWS IAM Identity Centerするときは、 を通じて一時的な認証情報を使用することを人間のユーザーに要求することをお勧めします AWS。

前提条件

自動ダウンロード用の cron ジョブまたはスケジュールされたタスクを作成する前に、次の手順を実行します。

  1. まだインストールしていない場合は、Python をインストールします。

  2. 以下を実行して Deadline CLI をインストールします。

    python -m pip install deadline
  3. 次のコマンドを使用して、Deadline CLI のバージョンが 0.52.1 以降であることを確認します。

    $ deadline --version deadline, version 0.52.1

出力ダウンロードコマンドをテストする

環境でコマンドが機能することを検証するには
  1. Deadline へのパスを取得する

    リナックス and macOS
    $ which deadline
    Windows
    C:\> where deadline
    PowerShell
    PS C:\> Get-Command deadline
  2. sync-output コマンドを実行してブートストラップします。

    /path/to/deadline queue sync-output \ --farm-id YOUR_FARM_ID \ --queue-id YOUR_QUEUE_ID \ --storage-profile-id YOUR_PROFILE_ID \ --checkpoint-dir /path/to/checkpoint/directory \
  3. ダウンロードマシンが送信マシンと同じ場合にのみ、このステップを実行する必要があります。--storage-profile-id YOUR_PROFILE_ID \ 上記の を に置き換えます--ignore-storage-profiles

  4. テストジョブを送信します。

    1. GitHub から .zip ファイルをダウンロードします。

      1. deadline-cloud-samples GitHub リポジトリを開きます。

      2. Code を選択し、ドロップダウンメニューから Download ZIP を選択します。

      3. ダウンロードしたアーカイブをローカルディレクトリに解凍します。

    2. 実行

      cd /path/to/unzipped/deadline-cloud-samples-mainline/job_bundles/job_attachments_devguide_output
    3. 実行

      deadline bundle submit .
      1. デフォルトの期限設定がない場合は、コマンドラインで以下を指定する必要があります。

        --farm-id YOUR-FARM-ID --queue-id YOUR-QUEUE-ID
    4. ジョブが完了するまで待ってから、次のステップに進みます。

  5. sync-output コマンドを再度実行します。

    /path/to/deadline queue sync-output \ --farm-id YOUR_FARM_ID \ --queue-id YOUR_QUEUE_ID \ --storage-profile-id YOUR_PROFILE_ID \ --checkpoint-dir /path/to/checkpoint/directory
  6. 以下について確認します。

    • テストジョブの出力は、送信先ディレクトリに表示されます。

    • チェックポイントファイルは、指定されたチェックポイントディレクトリに作成されます。

スケジュールされたダウンロードをセットアップする

オペレーティングシステムのタブを選択すると、5 分ごとに自動ダウンロードを設定する方法がわかります。

リナックス
  1. Deadline CLI のインストールを確認する

    期限実行ファイルへの正確なパスを取得します。

    $ which deadline

    このパス (例: /opt/homebrew/bin/deadline) を plist ファイルで使用することに注意してください。

  2. チェックポイントディレクトリの作成

    チェックポイントファイルを保存するディレクトリを作成します。ユーザーが コマンドを実行するための適切なアクセス許可があることを確認します。

    $ mkdir -p /path/to/checkpoint/directory
  3. ログディレクトリの作成

    cron ジョブログのディレクトリを作成します。

    $ mkdir -p /path/to/logs

    https://www.redhat.com/en/blog/setting-logrotate を使用してログファイルのログローテーションを設定することを検討してください。

  4. 現在の Crontab を確認する

    現在の crontab を表示して、既存のジョブを表示します。

    $ crontab -l
  5. Crontab の編集

    編集する crontab ファイルを開きます。

    $ crontab -e

    初めての場合は、エディタ (nano、vim など) を選択するように求められる場合があります。

  6. Cron ジョブエントリの追加

    次の行を追加して 5 分ごとにジョブを実行します (パスをステップ 1 と 2 の実際の値に置き換えます)。

    */5 * * * * AWS_PROFILE=deadline-downloader /path/to/deadline queue sync-output --farm-id YOUR_FARM_ID --queue-id YOUR_QUEUE_ID --storage-profile-id YOUR_PROFILE_ID --checkpoint-dir /path/to/checkpoint/directory >> /path/to/logs/deadline_sync.log 2>&1
  7. Cron ジョブのインストールを確認する

    エディタを保存して終了したら、cron ジョブが追加されていることを確認します。

    $ crontab -l

    新しいジョブが一覧表示されます。

  8. Cron サービスのステータスを確認する

    cron サービスが実行されていることを確認します。

    # For systemd systems (most modern Linux distributions) $ sudo systemctl status cron # or $ sudo systemctl status crond # For older systems $ sudo service cron status

    実行されていない場合は、起動します。

    $ sudo systemctl start cron $ sudo systemctl enable cron # Enable auto-start on boot
macOS
  1. Deadline CLI のインストールを確認する

    期限実行ファイルへの正確なパスを取得します。

    $ which deadline

    このパス (例: /opt/homebrew/bin/deadline) を plist ファイルで使用することに注意してください。

  2. チェックポイントディレクトリとログディレクトリの作成

    チェックポイントファイルを保存するディレクトリを作成します。

    $ mkdir -p /path/to/checkpoint/directory $ mkdir -p /path/to/logs

    https://formulae.brew.sh/formula/logrotate を使用してログファイルのログローテーションを設定することを検討してください。

  3. リストファイルを作成する

    次の内容~/Library/LaunchAgents/com.user.deadlinesync.plistで に設定ファイルを作成します ( をステップ 1 の実際のパス/path/to/deadlineに置き換えます)。

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.deadlinesync</string> <key>ProgramArguments</key> <array> <string>/path/to/deadline</string> <string>queue</string> <string>sync-output</string> <string>--farm-id</string> <string>YOUR_FARM_ID</string> <string>--queue-id</string> <string>YOUR_QUEUE_ID</string> <string>--storage-profile-id</string> <string>YOUR STORAGE PROFILE ID</string> <string>--checkpoint-dir</string> <string>/path/to/checkpoint/dir</string> </array> <key>EnvironmentVariables</key> <dict> <key>AWS_PROFILE</key> <string>deadline-downloader</string> </dict> <key>RunAtLoad</key> <true/> <key>UserName</key> <string>YOUR_USER_NAME</string> <key>StandardOutPath</key> <string>/path/to/logs/deadline_sync.log</string> <key>StartInterval</key> <integer>300</integer> </dict> </plist>

    ダウンロードするマシンが送信マシンと同じ--ignore-storage-profiles場合は、--storage-profile-id YOUR_PROFILE_ID上記の を に置き換えます。

  4. リストファイルを検証する

    plist ファイルの XML 構文を検証します。

    $ plutil -lint ~/Library/LaunchAgents/com.user.deadlinesync.plist

    ファイルが有効な場合、「OK」が返されます。

  5. 既存の起動エージェントまたは起動デーモンを確認する

    起動エージェントが既にロードされているかどうかを確認します。

    $ launchctl list | grep deadlinesync OR $ sudo launchctl list | grep deadlinesync

    存在する場合は、まずアンロードします。

    $ launchctl bootout gui/$(id -u)/com.user.deadlinesync OR $ sudo launchctl bootout system/com.user.deadlinesync
  6. 作成とブートストラップ

    ユーザーがログインしている間にこのタスクを実行するには、LaunchAgent として実行します。マシンが実行されるたびにユーザーがログインせずにこのタスクを実行するには、LaunchDaemon として実行します。

    1. LaunchAgent として実行するには:

      1. で作成された設定を使用する ~/Library/LaunchAgents/com.user.deadlinesync.plist

      2. 次に、ブートストラップコマンドを使用して設定をロードします。

        $ launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.user.deadlinesync.plist
    2. LaunchDaemon として実行するには:

      1. 以下を実行して、Pilst ファイルを移動し、アクセス許可を変更します。

        $ sudo mv ~/Library/LaunchAgents/com.user.deadlinesync.plist /Library/LaunchDaemons/ $ sudo chown root:wheel /Library/LaunchDaemons/com.user.deadlinesync.plist $ sudo chmod 644 /Library/LaunchDaemons/com.user.deadlinesync.plist
      2. 最新のブートストラップコマンドを使用して起動エージェントをロードします。

        $ sudo launchctl bootstrap system /Library/LaunchDaemons/com.user.deadlinesync.plist
  7. ステータスの確認

    LaunchAgent をブートストラップした場合は、以下を実行してロードされていることを確認します。

    $ launchctl list | grep deadlinesync

    LaunchDaemon をブートストラップした場合は、以下を実行してロードされていることを確認します。

    $ sudo launchctl list | grep deadlinesync

    出力は次のようになります。

    SOME_PID_NUMBER 0 com.user.deadlinesync

    詳細なステータス情報については、以下を参照してください。

    $ launchctl print gui/$(id -u)/com.user.deadlinesync

    現在の状態、プログラム引数、環境変数、実行間隔、実行履歴が表示されます。

Windows
注記

これらの手順を使用して作成されたスケジュールされたタスクは、ユーザーがログインしている場合にのみ機能します。

ユーザーログインを必要とせずにシステム起動時にセットアップするには、公式Windowsドキュメントを参照してください。

以下のすべてのステップで、コマンドプロンプトを使用します。管理者として実行します。

  1. Deadline CLI のインストールを確認する

    期限の実行可能ファイルを見つけます。

    C:\> where deadline

    タスクで使用するフルパス ( などC:\Program Files\Amazon\DeadlineCloud\deadline.exe) を書き留めます。

  2. チェックポイントディレクトリの作成

    チェックポイントファイルを保存するディレクトリを作成します。

    C:\> mkdir "path\to\checkpoint\directory"
  3. ログディレクトリの作成

    タスクログのディレクトリを作成します。

    C:\> mkdir "path\to\logs"
  4. バッチファイルラッパーの作成

    次の内容のバッチファイルを作成します。

    C:\> notepad C:\path\to\deadline_sync.bat
    YOUR_PATH_TO_DEADLINE.EXE queue sync-output --farm-id YOUR_FARM_ID --queue-id YOUR_QUEUE_ID --storage-profile-id YOUR_PROFILE_ID --checkpoint-dir path\to\checkpoint\checkpoints > path\to\logs\deadline.log 2>&1
  5. バッチファイルのテスト

    バッチファイルを手動でテストします。

    C:\> .\path\to\deadline_sync.bat

    ログファイルが作成されたことを確認します。

    C:\> notepad path\to\logs\deadline_sync.log
  6. タスクスケジューラサービスの確認

    Task Scheduler サービスが実行されていることを確認します。

    C:\> sc query "Schedule"

    サービスが存在しない場合は、代替名を試してください。

    C:\> sc query "TaskScheduler" C:\> sc query "Task Scheduler"

    実行されていない場合は、起動します。

    C:\> sc start "Schedule"
  7. スケジュールされたタスクの作成

    5 分ごとに実行するタスクを作成します。

    C:\> schtasks /create /tn "DeadlineOutputSync" /tr "C:\path\to\deadline_sync.bat" /sc minute /mo 5

    コマンドの内訳:

    • /tn - タスク名

    • /tr - 実行するタスク (バッチファイル)

    • /sc minute /mo 5 - スケジュール: 5 分ごと

  8. タスク作成の検証

    タスクが正常に作成されたことを確認します。

    schtasks /query /tn "DeadlineOutputSync" /v /fo LIST

    以下を探します。

    • 実行するタスク: バッチファイルパスを表示します

    • 次の実行時間: 5 分以内に時間を表示する必要があります

  9. テストタスクの実行

    タスクを手動で実行してテストします。

    schtasks /run /tn "DeadlineOutputSync"

    タスクのステータスを確認します。

    schtasks /query /tn "DeadlineOutputSync"
セットアップを確認します。

自動ダウンロードの設定が成功したことを確認するには、次の手順を実行します。

  1. 新しいテストジョブを送信します。

  2. 1 つのスケジューラ間隔が完了するまで待ちます。この場合は 5 分です。

  3. 新しい出力が自動的にダウンロードされることを確認します。

出力がダウンロードされない場合は、プロセスログのトラブルシューティングセクションを確認してください。

自動ダウンロードのトラブルシューティング

自動ダウンロードで問題が発生した場合は、以下を確認してください。

ストレージプロファイルの問題

  • ログファイル[Errno 13] Permission denied[Errno 2] No such file or directoryや などのエラーは、ストレージプロファイルの欠落や設定ミスに関連している可能性があります。

  • ダウンロードマシンが送信マシンと異なる場合にストレージプロファイルを設定する方法については、「ストレージプロファイル」を参照してください。

  • 同じマシンのダウンロードの場合は、 --ignore-storage-profilesフラグを試してください。

ディレクトリのアクセス許可

  • スケジューラサービスユーザーに以下があることを確認します。

    • チェックポイントディレクトリへの読み取り/書き込みアクセス

    • 出力先ディレクトリへの書き込みアクセス

  • Linux および の場合macOS、 ls -la を使用してアクセス許可を確認します。

  • についてはWindows、「プロパティ」フォルダのセキュリティ設定を確認してください。

スケジューラログの確認

リナックス
  1. cron サービスが実行されているかどうかを確認します。

    # For systemd systems $ sudo systemctl status cron # or $ sudo systemctl status crond # Check if your user has cron job correctly configured $ crontab -l
  2. cron 実行ログを表示します。

    # Check system logs for cron activity (most common locations) $ sudo tail -f /var/log/syslog | grep CRON $ sudo tail -f /var/log/cron.log | grep deadline # View recent cron logs $ sudo journalctl -u cron -f $ sudo journalctl -u crond -f # On some systems
  3. 特定の cron ジョブログを確認します。

    # View the log file specified in your cron job $ tail -100f /path/to/logs/deadline_sync.log
  4. システムログで cron ジョブ実行を検索します。

    # Look for your specific cron job executions $ sudo grep "deadline.*incremental-output-download" /var/log/syslog # Check for cron job starts and completions $ sudo grep "$(whoami).*CMD.*deadline" /var/log/syslog
  5. チェックポイントファイルの更新を確認します。

    # List checkpoint files with timestamps $ ls -la /path/to/checkpoint/directory/ # Check when checkpoint was last modified $ stat /path/to/checkpoint/directory/queue-*_download_checkpoint.json
  6. ログファイルを確認します。

    $ ls -la /path/to/log/deadline_sync.log
macOS

起動エージェント実行ログの表示:

  1. 起動エージェントが実行中かどうかを確認します。

    $ sudo launchctl list | grep deadlinesync

    出力には以下が表示されます PID Status Label (PID は、現在実行中で-ない場合になります。これは間隔ジョブでは正常です)

  2. 詳細な起動エージェントのステータスを表示します。

    $ sudo launchctl print system/com.user.deadlinesync

    実行履歴、最後の終了コード、実行数、現在の状態が表示されます。

  3. 起動エージェントの実行ログを表示します。

    # View recent logs (last hour) log show --predicate 'subsystem contains "com.user.deadlinesync"' --last 1h # View logs from a specific time period log show --predicate 'subsystem contains "com.user.deadlinesync"' --start '2024-08-27 09:00:00'
  4. 即時テストのために起動エージェントを強制実行します。

    $ sudo launchctl kickstart gui/$(id -u)/com.user.deadlinesync

    これにより、スケジュールに関係なくジョブがすぐにトリガーされ、テストに役立ちます。

  5. チェックポイントファイルの更新を確認します。

    # List checkpoint files with timestamps $ ls -la /path/to/checkpoint/directory/
  6. ログファイルを確認します。

    $ ls -la /path/to/log/deadline_sync.log
Windows
  1. Task Scheduler サービスが実行されているかどうかを確認します。

    C:\> sc query "Schedule"

    サービスが存在しない場合は、代替名を試してください。

    C:\> sc query "TaskScheduler" C:\> sc query "Task Scheduler"
  2. スケジュールされたタスクを表示します。

    C:> schtasks /query /tn "DeadlineOutputSync"
  3. タスクのログファイルを確認します。

    # View the log file created by your batch script C:> notepad C:\path\to\logs\deadline_sync.log
  4. チェックポイントファイルの更新を確認します。

    # List checkpoint files with timestamps C:> dir "C:\path\to\checkpoint\directory" /od