管理者としてスクリプトを実行してワーカーを設定する - Deadline クラウド

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

管理者としてスクリプトを実行してワーカーを設定する

カスタムフリートホスト設定スクリプトを使用すると、サービスマネージドフリートワーカーでソフトウェアのインストールなどの管理タスクを実行できます。これらのスクリプトは昇格された権限で実行されるため、システムのワーカーを柔軟に設定できます。

Deadline Cloud は、ワーカーが STARTING状態になった後、タスクを実行する前にスクリプトを実行します。

重要

スクリプトは、Linuxシステムsudo上では昇格されたアクセス許可で実行され、Windowsシステム上では「管理者」で実行されます。スクリプトでセキュリティ上の問題が発生しないようにするのはお客様の責任です。

管理スクリプトを使用する場合、フリートの状態をモニタリングする責任があります。

スクリプトの一般的な用途は次のとおりです。

  • 管理者アクセスを必要とするソフトウェアのインストール

  • Docker コンテナのインストール

ホスト設定スクリプトは、 コンソールまたは を使用して作成および更新できます AWS CLI。

Console
  1. フリートの詳細ページで、設定タブを選択します。

  2. スクリプト フィールドに、昇格されたアクセス許可で実行するスクリプトを入力します。インポートを選択して、ワークステーションからスクリプトをロードできます。

  3. スクリプトを実行するタイムアウト期間を秒単位で設定します。デフォルトは 300 秒 (5 分) です。

  4. 変更を保存を選択してスクリプトを保存します。

Create with CLI

次の AWS CLI コマンドを使用して、ホスト設定スクリプトを使用してフリートを作成します。プレースホルダーテキストを自分の情報に置き換えます。

aws deadline-internal create-fleet \ --farm-id farm-12345 \ --display-name "fleet-name" \ --max-worker-count 1 \ --configuration '{ "serviceManagedEc2": { "instanceCapabilities": { "vCpuCount": {"min": 2}, "memoryMiB": {"min": 4096}, "osFamily": "linux", "cpuArchitectureType": "x86_64" }, "instanceMarketOptions": {"type":"spot"} } }' \ --role-arn arn:aws:iam::111122223333:role/role-name \ --host-configuration '{ "scriptBody": "script body", "scriptTimeoutSeconds": timeout value}'
Update with CLI

フリートのホスト設定スクリプトを更新するには、次の AWS CLI コマンドを使用します。プレースホルダーテキストを自分の情報に置き換えます。

aws deadline update-fleet \ --farm-id farm-12345 \ --fleet-id fleet-455678 \ --host-configuration '{ "scriptBody": "script body", "scriptTimeoutSeconds": timeout value}'

次のスクリプトは、以下を示しています。

  • スクリプトで使用できる環境変数

  • その AWS 認証情報がシェルで機能している

  • スクリプトが昇格されたシェルで実行されていること

リナックス

次のスクリプトを使用して、スクリプトが root権限で実行されていることを示します。

# Print environment variables set # Check AWS Credentials aws sts get-caller-identity
Windows

次のPowerShellスクリプトを使用して、スクリプトが管理者権限で実行されていることを示します。

Get-ChildItem env: | ForEach-Object { "$($_.Name)=$($_.Value)" } aws sts get-caller-identity function Test-AdminPrivileges { $currentUser = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) $isAdmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) return $isAdmin } if (Test-AdminPrivileges) { Write-Host "The current PowerShell session is elevated (running as Administrator)." } else { Write-Host "The current PowerShell session is not elevated (not running as Administrator)." } exit 0

ホスト設定スクリプトのトラブルシューティング

ホスト設定スクリプトを実行する場合:

  • 成功時: ワーカーがジョブを実行する

  • 障害発生時 (ゼロ以外の終了コードまたはクラッシュ):

    • ワーカーがシャットダウンする

    フリートは、最新のホスト設定スクリプトを使用して新しいワーカーを自動的に起動します。

スクリプトをモニタリングするには:

  1. Deadline Cloud コンソールでフリートページを開きます。

  2. ワーカーの表示を選択して Deadline Cloud モニターを開きます。

  3. モニターページでワーカーのステータスを表示します。

重要な注意事項:

  • エラーによりシャットダウンしたワーカーは、モニターのワーカーのリストでは使用できません。CloudWatch Logs を使用して、次のロググループのワーカーログを表示します。

    /aws/deadline/farm-XXXXX/fleet-YYYYY

    そのロググループ内には のストリームがあります。

    worker-ZZZZZ
  • CloudWatch Logs は、設定した保持期間に従ってワーカーログを保持します。

ホスト設定スクリプトの実行のモニタリング

ワーカーを設定する管理者スクリプトを使用すると、Deadline Cloud ワーカーを完全に制御できます。任意のソフトウェアパッケージをインストールしたり、オペレーティングシステムパラメータを再設定したり、共有ファイルシステムをマウントしたりできます。この高度な機能と何千人ものワーカーにスケールする Deadline Cloud の機能を使用して、設定スクリプトが正常に実行されたか失敗したかをモニタリングできるようになりました。失敗の原因には、スクリプトエラー、ぼやけた動作、その他の不明な状況などがあります。

ホスト設定スクリプトの実行をモニタリングするには、次のソリューションをお勧めします。

CloudWatch Logs のモニタリング

すべてのフリートホスト設定ログは、フリートの CloudWatch ロググループ、特にワーカーの CloudWatch ログストリームにストリーミングされます。たとえば、 /aws/deadline/farm-123456789012/fleet-777788889999はファーム 123456789012、フリート のロググループです777788889999

各ワーカーは、 などの専用ログストリームをプロビジョニングしますworker-123456789012。ホスト設定ログには、ホスト設定スクリプトの実行ホスト設定スクリプトの実行完了、終了コード: 0 などのログバナーが含まれます。スクリプトの終了コードは、完成したバナーに含まれ、CloudWatch ツールを使用してクエリできます。

CloudWatch Logs Insights

CloudWatch Logs Insights は、ログ情報を分析するための高度な機能を提供します。たとえば、次の Log Insights クエリは、ホスト設定の終了コードを時間順にソートして解析します。

fields @timestamp, @message, @logStream, @log | filter @message like /Finished running Host Configuration Script/ | parse @message /exit code: (?<exit_code>\d+)/ | display @timestamp, exit_code | sort @timestamp desc

CloudWatch Logs Insights の詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「CloudWatch Logs Insights でログデータを分析する」を参照してください。

ワーカーエージェントの構造化ログ記録

Deadline Cloud のワーカーエージェントは、構造化された JSON ログを CloudWatch に発行します。ワーカーエージェントは、ワーカーの状態を分析するためのさまざまな構造化ログを提供します。詳細については、GitHub の「Deadline Cloud ワーカーエージェントのログ記録」を参照してください。

構造化ログの属性は、Log Insights のフィールドに解凍されます。この CloudWatch 機能を使用して、ホスト設定の起動失敗をカウントおよび分析できます。たとえば、カウントクエリとビンクエリを使用して、障害が発生する頻度を判断できます。

fields @timestamp, @message, @logStream, @log | sort @timestamp desc | filter message like /Worker Agent host configuration failed with exit code/ | stats count(*) by exit_code, bin(1h)

メトリクスとアラームの CloudWatch メトリクスフィルター

CloudWatch メトリクスフィルターを設定して、ログから CloudWatch メトリクスを生成できます。これにより、ホスト設定スクリプトの実行をモニタリングするためのアラームとダッシュボードを作成できます。

メトリックスフィルタを作成するには
  1. CloudWatch コンソールを開きます。

  2. ナビゲーションペインで、ログロググループを選択します。

  3. フリートのロググループを選択します。

  4. [Create metric filter] (メトリクスフィルターの作成) を選択します。

  5. 次のいずれかを使用してフィルターパターンを定義します。

    • 成功メトリクスの場合:

      {$.message = "*Worker Agent host configuration succeeded.*"}
    • 失敗メトリクスの場合:

      {$.exit_code != 0 && $.message = "*Worker Agent host configuration failed with exit code*"}
  6. Next を選択して、次の値を持つメトリクスを作成します。

    • メトリクス名前空間: メトリクス名前空間 (例: MyDeadlineFarm

    • メトリクス名: リクエストされたメトリクス名 (例: host_config_failure

    • メトリクス値: 1 (各インスタンスは 1 のカウントです)

    • デフォルト値: 空のままにします

    • 単位: Count

メトリクスフィルターを作成したら、ホスト設定の障害率が高い場合にアクションを実行するように標準の CloudWatch アラームを設定したり、メトリクスを CloudWatch ダッシュボードに追加してday-to-dayやモニタリングを行うことができます。

詳細については、Amazon CloudWatch Logs ユーザーガイド」の「フィルターとパターンの構文」を参照してください。