

# Windows VSS ベースの EBS スナップショットのトラブルシューティング
<a name="application-consistent-snapshots-troubleshooting"></a>

他のトラブルシューティングのステップを試す前に、次の詳細を確認することをお勧めします。
+ すべての[Windows VSS ベースの EBS スナップショットを作成するための前提条件](application-consistent-snapshots-prereqs.md)を満たしていることを確認してください。
+ 使用しているオペレーティングシステムに対応した、`AwsVssComponents` パッケージの最新の [Windows OS バージョンのサポート](vss-comps-history.md#windows-version-support)を使用していることを確認してください。見つかった問題は、新しいバージョンで対処されている可能性があります。

**Topics**
+ [ログファイルのチェック](#general-log-files)
+ [追加の診断ログを収集する](#vss-ts-collect-diagnostic-logs)
+ [プロキシが設定されたインスタンスでの VSS の使用](#general-using-vss-with-proxy)
+ [エラー: パイプ接続の解凍がタイムアウトしました、解凍時のエラー、VSS フリーズ待機のタイムアウト、またはその他のタイムアウトエラー](#error-thaw)
+ [エラー: メソッドを呼び出せません。メソッド呼び出しは、この言語モードのコアタイプでのみサポートされます。](#error-invoke)

## ログファイルのチェック
<a name="general-log-files"></a>

VSS ベースの EBS スナップショットの作成時に問題が発生したり、エラーメッセージが表示されたりした場合は、Systems Manager コンソールでコマンドの出力を表示できます。

VSS スナップショットを作成する Systems Manager ドキュメントの場合、実行時に `CollectDiagnosticLogs` パラメータを「`True`」に設定します。`CollectDiagnosticLogs` パラメータが「`True`」に設定されると、VSS はデバッグに役立つ追加のログを収集します。詳細については、「[追加の診断ログを収集する](#vss-ts-collect-diagnostic-logs)」を参照してください。

診断ログを収集する場合、Systems Manager ドキュメントはそれらをインスタンスの次の場所に保存します: `C:\ProgramData\Amazon\AwsVss\Logs\timestamp.zip`。`CollectDiagnosticLogs` パラメータのデフォルト値は "`False`" です。

**注記**  
デバッグに関する追加のヘルプが必要な場合は、`.zip` ファイルを サポート に送付してください。

診断ログを収集するかどうかにかかわらず、次の追加ログを使用できます。
+ `%ProgramData%\Amazon\SSM\InstanceData\InstanceID\document\orchestration\SSMCommandID\awsrunPowerShellScript\runPowerShellScript\stdout`
+ `%ProgramData%\Amazon\SSM\InstanceData\InstanceID\document\orchestration\SSMCommandID\awsrunPowerShellScript\runPowerShellScript\stderr`

イベントビューアー Windows アプリケーションを開き、[**Windows Logs**]、[**Application**] の順に選択して、追加のログを表示することもできます。EC2 Windows VSS プロバイダーおよび Volume Shadow Copy Service からのイベントを具体的に表示するには、**Ec2VssSoftwareProvider** および **VSS** の条件で **[Source]** (送信元) でフィルタリングします。

VPC エンドポイントで Systems Manager を使用していて、Systems Manager の [SendCommand](https://docs.aws.amazon.com/cli/latest/reference/ssm/send-command.html) API アクション (コンソールの **Run Command**) が失敗した場合は、以下のエンドポイントが正しく設定されていることを確認してください: **com.amazonaws.*region*.ec2** 

Amazon EC2 エンドポイントが定義されていない場合、アタッチした EBS ボリュームを列挙する呼び出しは失敗し、Systems Manager コマンドが失敗します。Systems Manager による VPC エンドポイントの設定の詳細については、*AWS Systems Manager ユーザーガイド*の[Virtual Private Cloud のエンドポイントを作成する](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html)を参照してください。

## 追加の診断ログを収集する
<a name="vss-ts-collect-diagnostic-logs"></a>

Systems Manager send コマンドを使用して VSS スナップショットドキュメントを実行するときに追加の診断ログを収集するには、実行時に入力パラメータ `CollectDiagnosticLogs` を「`True`」に設定します。トラブルシューティング時に、このパラメータは「`True`」に設定することを推奨します。

コマンドラインの例を確認するには、次のいずれかのタブを選択してください。

------
#### [ AWS CLI ]

次の例では、AWS CLI で `AWSEC2-CreateVssSnapshot` Systems Manager ドキュメントを実行します。

```
aws ssm send-command \ 
    --document-name "AWSEC2-CreateVssSnapshot" \
    --instance-ids "i-1234567890abcdef0" \
    --parameters '{"description":["Example - create diagnostic logs at runtime."],"tags":["Key=tag_name,Value=tag_value"],"CollectDiagnosticLogs":["True"]}'
```

------
#### [ PowerShell ]

次の例では、PowerShell で `AWSEC2-CreateVssSnapshot` Systems Manager ドキュメントを実行します。

```
Send-SSMCommand `
    -DocumentName "AWSEC2-CreateVssSnapshot" `
    -InstanceId "i-1234567890abcdef0" `
    -Parameter @{'description'='Example - create diagnostic logs at runtime.';'tags'='Key=tag_name,Value=tag_value';'CollectDiagnosticLogs'='True'}
```

------

## プロキシが設定されたインスタンスでの VSS の使用
<a name="general-using-vss-with-proxy"></a>

プロキシを使用して EC2 エンドポイントにアクセスするインスタンスで VSS ベースの EBS スナップショットを作成する際に問題が発生した場合は、インスタンスで次の設定を確認します。
+ SYSTEM として実行している AWS Tools for Windows PowerShell がインスタンスのリージョンおよび IMDS の EC2 サービスエンドポイントにアクセスできるようにプロキシが設定されていることを確認します。
+ システムによって設定された WinHTTP プロキシの使用をサポートするため、インスタンスに `AwsVssComponents` の最新バージョンがインストールされていることを確認します。WinHTTP プロキシ設定の詳細については、Microsoft ウェブサイトの「[Netsh Commands for Windows Hypertext Transfer Protocol (WINHTTP)](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/cc731131(v=ws.10))」を参照してください。

## エラー: パイプ接続の解凍がタイムアウトしました、解凍時のエラー、VSS フリーズ待機のタイムアウト、またはその他のタイムアウトエラー
<a name="error-thaw"></a>

EC2 Windows VSS プロバイダーは、インスタンスでのアクティビティまたはサービスにより、VSS ベースのスナップショットが適切なタイミングで進行できないためにタイムアウトすることがあります。Windows VSSフレームワークでは、ファイルシステムとの通信が一時停止される、設定不可の 10 秒のウィンドウがもたらされます。この間、`AWSEC2-CreateVssSnapshot` はボリュームのスナップショットを作成します。

以下の問題により、スナップショットの作成中に EC2 Windows VSS Provider が時間制限に達する可能性があります。
+ ボリュームへの過剰な I/O
+ インスタンスでの EC2 API の応答が遅い
+ 断片化されたボリューム
+ 一部のウイルス対策ソフトウェアとの非互換性
+ VSSアプリケーションライターの問題
+ 多数の PowerShell モジュールに対してモジュールログ記録が有効になっている場合、PowerShell スクリプトの実行速度が遅くなる可能性があります

`AWSEC2-CreateVssSnapshot` コマンドドキュメントを実行するときに発生するタイムアウトの問題のほとんどは、バックアップ時にインスタンスのワークロードが高すぎることが原因です。次のアクションは、スナップショットを正常に作成するのに役立ちます。
+ `AWSEC2-CreateVssSnapshot` コマンドを再試行して、スナップショットの試行が成功するかどうかを確認します。一部で再試行が成功した場合、インスタンスの負荷を減らすことで、スナップショットがより成功する可能性があります。
+ インスタンスのワークロードが減少するまでしばらく待ってから、`AWSEC2-CreateVssSnapshot` コマンドを再試行します。または、インスタンスが低ストレスであることがわかっている場合に、スナップショットの作成を試みることもできます。
+ システムのウイルス対策ソフトウェアがオフになっているときに、VSS スナップショットの作成を試みます。これで問題が解決する場合は、ウイルス対策ソフトウェアの指示を参照し、VSS スナップショットの作成を許可するように設定します。
+ スナップショットを実行しているリージョンと同じリージョン内のアカウントで大量の Amazon EC2 API コールがある場合、API スロットリングによりスナップショットの操作が遅れる可能性があります。スロットリングの影響を減らすには、最新の `AwsVssComponents` パッケージを使用します。このパッケージは EC2 `CreateSnapshots` API アクションを利用して、ボリュームごとのスナップショットの作成やタグ付けなど、変異アクションの数を減らします。
+ 複数の `AWSEC2-CreateVssSnapshot` コマンドスクリプトを同時に実行している場合は、次のステップを実行して同時実行の問題を減らすことができます。
  + API アクティビティが少ない時間帯にスナップショットをスケジュールすることを検討してください。
  + Systems Manager コンソールで **Run Command** を使用 (または API で **SendCommand** を使用) してコマンドスクリプトを実行する場合は、Systems Manager のレート制御を使用して同時実行を減らすことができます。

    Systems Manager のレート制御を使用すると、Systems Manager を使用してコマンドスクリプトを実行する AWS Backup のようなサービスの同時実行を減らすこともできます。
+ シェルで `vssadmin list writers` コマンドを実行し、システム上のいずれかのライターの [**Last error**] フィールドにエラーが報告されるかどうかを確認します。いずれかのライターが**タイムアウト**エラーを報告する場合は、インスタンスの負荷が少ないときにスナップショットの作成の再試行を検討してください。
+ *t2 \$1 t3 \$1 t3a*.nano や *t2 \$1 t3 \$1 t3a*.micro のような小さいインスタンスタイプを使用すると、メモリと CPU の制約によりタイムアウトが発生する可能性があります。タイムアウトの問題を減らすには、以下の対処が有効な場合があります。
  + スナップショットを撮る前に、メモリや CPU を大量に消費するアプリケーションを閉じる。
  + インスタンスのアクティビティが少ない時間帯にスナップショットを撮る。

## エラー: メソッドを呼び出せません。メソッド呼び出しは、この言語モードのコアタイプでのみサポートされます。
<a name="error-invoke"></a>

このエラーは、PowerShell 言語モードが `FullLanguage` に設定されていない場合に発生します。`AWSEC2-CreateVssSnapshot` SSM ドキュメントでは、PowerShell を `FullLanguage` モードに設定する必要があります。

言語モードを確認するには、PowerShell コンソールでインスタンスに次のコマンドを実行します。

```
$ExecutionContext.SessionState.LanguageMode
```

言語モードの詳細については、Microsoft ドキュメントの「[Shell](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_language_modes)」を参照してください。