

• 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
   ```