Windows系统CloudWatch Agent环境变量凭据及脚本启动问题
CloudWatch Agent 配置问题解决指南
1. 静态IAM凭据读取失败问题
- 问题根源:
$Env:AWS_ACCESS_KEY_ID这类命令设置的是当前PowerShell会话级环境变量,而CloudWatch Agent作为Windows服务运行,只会读取**机器级(Machine)**环境变量。 - 正确设置方式:使用
[System.Environment]::SetEnvironmentVariable指定Machine目标级别,确保服务能读取到凭据:[System.Environment]::SetEnvironmentVariable("AWS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY", [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", "YOUR_SECRET_KEY", [System.EnvironmentVariableTarget]::Machine) - 验证:设置完成后直接启动服务测试即可,服务启动时会自动加载机器级环境变量,无需额外刷新会话。
2. Userdata脚本中启动Agent无响应问题
- 核心原因:Userdata默认使用32位PowerShell执行,而CloudWatch Agent安装在64位路径
C:\Program Files\Amazon\...,32位PowerShell会自动重定向到Program Files (x86),导致找不到ctl脚本。 - 解决步骤:
- 在Userdata中调用64位PowerShell执行启动命令,路径为
C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe - 可选:添加等待时间,确保Agent安装包完全初始化完成
- 可选:输出日志到本地文件,方便排查执行异常
- 在Userdata中调用64位PowerShell执行启动命令,路径为
- 示例命令:
# 等待Agent安装完成(根据实际情况调整时长) Start-Sleep -Seconds 30 # 调用64位PowerShell执行启动命令,并记录日志 C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe -Command "& 'C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1' -a fetch-config -m onPrem -s -c file:'C:\ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json'" 2>&1 | Out-File C:\cw-agent-start.log -Append - 验证:通过RDP连接后查看
C:\cw-agent-start.log,确认命令执行状态是否有报错。
内容的提问来源于stack exchange,提问作者Juan Vega
相关产品推荐
相关产品推荐

