

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

# ストリームセッション管理シェル
<a name="troubleshoot-admin-shell-guide"></a>

[CreateStreamSessionAdminShell](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionAdminShell.html) API を使用して、ストリームセッションのライブランタイム環境に接続します。ターミナル接続を使用して、ログの検査、実行中のプロセスの確認、GPU 使用率の検査、アプリケーションの状態のリアルタイムでのデバッグを行い、アプリケーションの問題をトラブルシューティングします。

**重要**  
管理シェルは、ストリームセッションで実行されているアプリケーションと同じレベルのアクセスを許可します。これには、ユーザー入力、画面イメージ、アプリケーションデータファイルが含まれます。信頼できる IAM ID にのみ`gameliftstreams:CreateStreamSessionAdminShell`アクセス許可を付与します。

## 前提条件
<a name="troubleshoot-admin-shell-prerequisites"></a>

管理シェルを使用してストリームセッションに接続する前に、 の AWS Systems Manager Session Manager プラグインをインストールします AWS Command Line Interface。プラグインはターミナル接続を開くために必要です。インストール手順については、[「 の Session Manager プラグインをインストールする AWS Command Line Interface](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)」を参照してください。

次のコード例では、API レスポンスから値を抽出するために、コマンドライン JSON プロセッサである [jq](https://jqlang.github.io/jq/) が必要です。

ストリームセッションは、`ACTIVE`、、`CONNECTED`、`PENDING_CLIENT_RECONNECTION`または のいずれかのステータスである必要があります`RECONNECTING`。

## の Session Manager プラグインを使用して接続する AWS Command Line Interface
<a name="troubleshoot-admin-shell-connect"></a>

 AWS CLI を使用して管理者シェルのアクセス認証情報をリクエストし、 [の Session Manager プラグイン AWS Command Line Interface](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)を使用してターミナル接続を確立します。次のコード例を使用して接続します。`STREAM_GROUP_ID`、`STREAM_SESSION_ID`、 を自分の値`REGION`に置き換えます。

**AWS Command Line Interface Bash スクリプトを使用する**

```
#!/bin/bash
# GameLift Streams session with admin shell script
# This script sets up a terminal connection to an Amazon GameLift Streams session
# using the AWS Systems Manager Session Manager Plugin

# Stream group ARN or ID owning the session
STREAM_GROUP_ID="arn:aws:gameliftstreams:us-west-2:123456789012:streamgroup/sg-1AB2C3De4"

# Stream session ARN or ID to connect to
STREAM_SESSION_ID="arn:aws:gameliftstreams:us-west-2:123456789012:streamsession/sg-1AB2C3De4/44wOYoDXlRbtf"

# AWS Region where you created the stream group (primary location)
REGION="us-west-2"

# Request admin shell access
SESSION_ACCESS=$(aws gameliftstreams create-stream-session-admin-shell \
    --identifier "${STREAM_GROUP_ID}" \
    --stream-session-identifier "${STREAM_SESSION_ID}" \
    --region "${REGION}" \
    --output json)

# Extract session ID and connect using Session Manager plugin
SESSION_ID=$(echo "$SESSION_ACCESS" | jq -r .SessionId)

# Connect using the API response (the plugin extracts StreamUrl and TokenValue)
# The connection URL expires 60 seconds after the API response.
session-manager-plugin \
    "$SESSION_ACCESS" \
    "${REGION}" \
    "StartSession" \
    "" \
    "{\"Target\":\"$SESSION_ID\"}" \
    "https://ssm.${REGION}.api.aws"
```

**ヒント**  
ストリームグループのアクティブなストリームセッションを検索するには、[ListStreamSessions](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_ListStreamSessions.html) API オペレーションを使用するか、Amazon GameLift Streams コンソールを確認します。

ターミナル接続の確立に問題がある場合は、一般的なエラーの解決策[ストリームセッション管理シェルの問題](#troubleshoot-admin-shell)について「」を参照してください。

## ストリームセッション管理シェルの問題
<a name="troubleshoot-admin-shell"></a>

このセクションでは、[CreateStreamSessionAdminShell](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_CreateStreamSessionAdminShell.html) API を使用してストリームセッションのライブランタイム環境への安全なターミナル接続を開くことに関連する問題の潜在的な原因と解決策を特定します。

### ターミナル接続はまだ利用できません
<a name="troubleshoot-admin-shell-not-ready"></a>

`StreamSessionAccessNotReadyException` (HTTP 409) を呼び出し`CreateStreamSessionAdminShell`て受信する場合、Amazon GameLift Streams セッションのライブランタイム環境へのターミナル接続をプロビジョニングすることはできません。

この問題を解決するには:
+ 数秒待ってから、リクエストを再試行してください。通常、ターミナル接続は、ストリームセッションが `ACTIVE`状態になった直後に使用可能になります。
+ 再試行を繰り返してもエラーが解決しない場合は、[GetStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html) を呼び出し`RECONNECTING`て`CONNECTED`、ストリームセッションが `ACTIVE`、`PENDING_CLIENT_RECONNECTION`、、または のいずれかの状態のままであることを確認します。

### 管理者シェルの作成時にアクセスが拒否されました
<a name="troubleshoot-admin-shell-access-denied"></a>

を呼び出し`CreateStreamSessionAdminShell`て `AccessDeniedException` (HTTP 403) エラーが発生した場合、呼び出し元の IAM ID に必要なアクセス許可がありません。この問題を解決するには、IAM ID にターゲットストリームグループリソースに対する `gameliftstreams:CreateStreamSessionAdminShell` アクセス許可があることを確認します。

### アクティブでないストリームセッションに接続できない
<a name="troubleshoot-admin-shell-not-active"></a>

`ResourceNotFoundException` (HTTP 404) または `ValidationException` (HTTP 400) エラーを呼び出し`CreateStreamSessionAdminShell`て受信する場合は、ストリームセッションをホストするストリームグループが `ACTIVE`状態であり、ストリームセッションが `ACTIVE`、、`CONNECTED``PENDING_CLIENT_RECONNECTION`、または のいずれかの状態であることを確認します`RECONNECTING`。

この問題を解決するには:
+ [GetStreamGroup](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamGroup.html) を呼び出してストリームグループの状態を確認します。
+ [GetStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html) を呼び出して、ストリームセッションの状態を確認します。
+ セッションが最近開始した場合は、セッションステータスが に移行するまで待って`ACTIVE`から、ターミナル接続をリクエストします。

### StreamUrl の有効期限が切れています
<a name="troubleshoot-admin-shell-url-expired"></a>

から返された WebSocket エンドポイントに接続`CreateStreamSessionAdminShell`し、接続エラーが発生した場合、 `StreamUrl`は期限切れです。受信後 60 秒間有効です。その期間内に接続を確立しない場合、URL は期限切れになります。

この問題を解決するには:
+ `CreateStreamSessionAdminShell` を再度呼び出して、新しい `StreamUrl`、`SessionId`、および を取得します`TokenValue`。
+ レスポンスを受信してから 60 秒以内に接続を確立します。

### Session Manager プラグインがインストールされていない
<a name="troubleshoot-admin-shell-plugin-missing"></a>

から返された認証情報を使用して接続しようと`CreateStreamSessionAdminShell`したときに接続に失敗し、Session Manager プラグインがないことを示すメッセージが表示された場合は、 CLI の AWS Systems Manager Session Manager AWS プラグインをインストールする必要があります。

この問題を解決するには:
+ CLI 用の Session Manager AWS プラグインをインストールします。インストール手順については、「Systems [Manager ユーザーガイド」の「 CLI AWS 用の Session Manager プラグイン](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)のインストール」を参照してください。 *AWS *
+ ターミナル`session-manager-plugin`から を実行して、プラグインがインストールされていることを確認します。

### 管理者シェルが予期せず閉じます
<a name="troubleshoot-admin-shell-closes"></a>

使用中にターミナル接続が突然切断された場合、次のいずれかの理由でターミナル接続が閉じられた可能性があります。
+ ターミナル接続はストリームセッションのライフサイクルに限定され、ストリームセッションが `TERMINATED`または `ERROR`状態に移行したときに終了します。
+ ターミナル接続が最大期間である 30 分を超えました。
+ ターミナル接続がアイドルタイムアウトの 15 分を超えました。

この問題を解決するには:
+ [GetStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamSession.html) を呼び出して、ストリームセッションが `TERMINATED`または `ERROR`状態にないことを確認します。
+ アイドル時間または最大時間が原因でターミナル接続がタイムアウトした場合は、 `CreateStreamSessionAdminShell` を再度呼び出して新しいターミナル接続を開きます。
+ ストリームセッションが終了した場合は、新しいストリームセッションを開始して新しいターミナル接続を開きます。