

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

# 管理者権限を持つホスト設定スクリプトを実行する
<a name="smf-admin"></a>

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

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

**重要**  
スクリプトは、昇格されたアクセス許可で実行されます。スクリプトでセキュリティ上の問題が発生しないようにするのはお客様の責任です。  
ホスト設定スクリプトを使用する場合は、フリートの状態をモニタリングする責任があります。

ホスト設定スクリプトの一般的な用途は次のとおりです。
+ 管理者アクセスを必要とするソフトウェアのインストール
+ Docker コンテナのインストール
+ などのサードパーティーのクラウドストレージソリューションをインストールしますLucidLink。チュートリアルについては、「 for M&E ブログ」の[「Deadline Cloud のサービスマネージドフリートスクリプトを使用して LucidLink をセットアップする](https://aws.amazon.com/blogs/media/set-up-lucidlink-with-service-managed-fleet-scripts-for-aws-deadline-cloud/)」を参照してください。 AWS 

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

------
#### [ Console ]

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

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

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

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

------
#### [ Create with CLI ]

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

```
aws deadline 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 認証情報がシェルで機能している
+ スクリプトが昇格されたシェルで実行されていること

------
#### [ Linux ]

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

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

------
#### [ Server  ]

次の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
```

------

## ホスト設定スクリプトのトラブルシューティング
<a name="smf-admin-troubleshooting"></a>

ホスト設定スクリプトを実行する場合: 
+ 成功時: ワーカーがジョブを実行する
+ 障害発生時 (ゼロ以外の終了コードまたはクラッシュ): 
  + ワーカーがシャットダウンする

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

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

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

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

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

**ヒント**  
ホスト設定スクリプトをテストするときは、フリートの最大ワーカー数を 1 に設定して、スクリプトで反復しながら複数のワーカーを起動しないようにします。

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

  ```
  /aws/deadline/farm-{{XXXXX}}/fleet-{{YYYYY}}
  ```

  そのロググループ内で、 という名前のストリームを探します`worker-{{ZZZZZ}}`。
+ CloudWatch Logs は、設定した保持期間に従ってワーカーログを保持します。

### ホスト設定スクリプトの実行をモニタリングする
<a name="smf-admin-monitoring"></a>

ホスト設定スクリプトを使用すると、Deadline Cloud ワーカーを完全に制御できます。任意のソフトウェアパッケージをインストールしたり、オペレーティングシステムパラメータを再設定したり、共有ファイルシステムをマウントしたりできます。この高度な機能と Deadline Cloud の数千のワーカーにスケールする機能により、設定スクリプトが正常に実行されるか失敗したかをモニタリングできます。

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

#### CloudWatch Logs のモニタリング
<a name="smf-admin-cloudwatch-logs"></a>

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

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

#### CloudWatch Logs Insights
<a name="smf-admin-log-insights"></a>

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 でログデータを分析する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)」を参照してください。

##### ワーカーエージェントの構造化ログ記録
<a name="smf-admin-structured-logging"></a>

Deadline Cloud のワーカーエージェントは、構造化された JSON ログを CloudWatch に発行します。ワーカーエージェントは、ワーカーの状態を分析するためのさまざまな構造化ログを提供します。詳細については、GitHub の「[Deadline Cloud ワーカーエージェントのログ記録](https://github.com/aws-deadline/deadline-cloud-worker-agent/blob/mainline/docs/logging.md)」を参照してください。

構造化ログの属性は、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 メトリクスフィルター
<a name="smf-admin-metric-filters"></a>

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

**メトリックスフィルタを作成するには**

1. CloudWatch コンソールを開きます。

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

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

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

1. 次のいずれかを使用してフィルターパターンを定義します。
   + **成功メトリクスの場合:**

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

     ```
     {$.exit_code != 0 && $.message = "*Worker Agent host configuration failed with exit code*"}
     ```

1. **Next** を選択して、次の値を持つメトリクスを作成します。
   + **メトリクス名前空間:** メトリクス名前空間 (例: **MyDeadlineFarm**)
   + **メトリクス名:** リクエストされたメトリクス名 (例: **host\_config\_failure**)
   + **メトリクス値:** **1** (各インスタンスは 1 のカウントです)
   + **デフォルト値:** 空のままにします
   + **単位:** **Count**

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

詳細については、*Amazon CloudWatch Logs ユーザーガイド*」の[「フィルタとパターン](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)構文」を参照してください。