

• AWS Systems Manager CloudWatch ダッシュボードは、2026 年 4 月 30 日以降は利用できなくなります。お客様は、これまでと同様に Amazon CloudWatch コンソールを使用して、Amazon CloudWatch ダッシュボードの表示、作成、管理を継続できます。詳細については、「[Amazon CloudWatch ダッシュボードのドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)」を参照してください。

# パラメータ処理の問題のトラブルシューティング
<a name="parameter-troubleshooting"></a>

## パラメータ処理のよくある問題
<a name="common-parameter-issues"></a>

**実行中に環境変数を使用できない**  
**問題:** 環境変数 (`SSM_parameter-name`) が見つからないことによりコマンドが失敗する。  
**考えられる原因:**  
+ SSM Agent バージョンが環境変数補間をサポートしていない
+ `interpolationType` が `ENV_VAR` に設定されていない
+ パラメータ名が予想される環境変数名と一致しない
**解決策**:  
+ SSM Agent バージョンが 3.3.2746.0 以降であることを確認する
+ 古いエージェントバージョンのフォールバックロジックを追加する

  ```
  if [ -z "${SSM_parameterName+x}" ]; then
      export SSM_parameterName="{{parameterName}}"
  fi
  ```

**特殊文字を含むパラメータ値**  
**問題:** パラメータ値にスペース、引用符、その他特殊文字が含まれているときにコマンドが失敗する。  
**解決策**:  
+ 環境変数を参照するときは適切な引用符を使用する

  ```
  # Correct
  echo "$SSM_parameter-name"
  
  # Incorrect
  echo $SSM_parameter-name
  ```
+ `allowedPattern` を使用して入力検証を追加し、特殊文字を制限する

**プラットフォーム間で動作に一貫性がない**  
**問題:** Linux と Windows Server のシステムとでパラメータ処理の動作が異なる。  
**解決策**:  
+ 各プラットフォームに固有の環境変数構文を使用する

  ```
  # PowerShell
  $env:SSM_parameter-name
  
  # Bash
  $SSM_parameter-name
  ```
+ ドキュメントに、プラットフォームに固有の前提条件チェックを実行する

**パラメータ値が適切にエスケープされない**  
**問題:** 環境変数補間を使用しているにもかかわらずコマンドインジェクションに対して脆弱である。  
**解決策**:  
+ コマンドにパラメータ値を含めるときに、常に適切なエスケープを使用する

  ```
  # Correct
  mysql_command="mysql -u \"$SSM_username\" -p\"$SSM_password\""
  
  # Incorrect
  mysql_command="mysql -u $SSM_username -p$SSM_password"
  ```

## パラメータ検証のヒント
<a name="parameter-validation"></a>

次の方法を使ってパラメータ処理を検証します。

1. テスト環境変数の可用性:

   ```
   #!/bin/bash
   # Print all SSM_ environment variables
   env | grep ^SSM_
   
   # Test specific parameter
   if [ -n "$SSM_parameter" ]; then
       echo "Parameter is available"
   else
       echo "Parameter is not available"
   fi
   ```

1. パラメータのパターンを確認します。

   ```
   parameters:
     myParameter:
       type: String
       allowedPattern: "^[a-zA-Z0-9_-]+$"
       description: "Test this pattern with sample inputs"
   ```

1. エラー処理を含めます。

   ```
   if [[ ! "$SSM_parameter" =~ ^[a-zA-Z0-9_-]+$ ]]; then
       echo "Parameter validation failed"
       exit 1
   fi
   ```