EC2 Windows实例中AWS CLI访问S3 Bucket失败,报AuthorizationHeaderMalformed错误求助
我来帮你排查这个EC2 Windows实例上AWS CLI访问S3的授权问题,报错An error occurred (AuthorizationHeaderMalformed) when calling the ListBuckets operation: The authorization header is malformed; the authorization header requires three components: Credential, SignedHeaders, and Signature.通常是因为凭证配置异常或环境冲突,咱们一步步来解决:
1. 检查CLI凭证配置的正确性
- 打开EC2实例的命令提示符,运行以下命令查看当前配置:
确认输出中的aws configure listaccess_key和secret_key是否与你的IAM用户凭证完全一致,注意不要有多余的空格、换行或特殊字符。 - 如果配置有误,重新执行
aws configure,仔细输入IAM用户的Access Key ID、Secret Access Key,区域可选择你常用的(例如us-east-1),输出格式默认选json即可。
2. 排查环境变量冲突
- Windows系统中,环境变量
AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY可能会覆盖CLI的配置。打开「系统属性」→「高级」→「环境变量」,检查是否存在这两个变量:- 如果存在且和你的IAM凭证不符,直接删除这两个变量(优先使用CLI配置的凭证);
- 如果需要保留环境变量,确保其值与IAM用户的凭证完全一致。
3. 确认EC2实例的IAM角色影响
- 如果你给EC2实例附加了IAM角色,CLI会优先使用角色的凭证而非你配置的用户凭证。运行以下命令查看当前身份:
aws sts get-caller-identity- 如果返回的是IAM角色,且该角色没有S3全访问权限,要么给角色添加对应的S3权限,要么在CLI命令中指定配置文件强制使用用户凭证:
aws s3 ls --profile your-profile-name
- 如果返回的是IAM角色,且该角色没有S3全访问权限,要么给角色添加对应的S3权限,要么在CLI命令中指定配置文件强制使用用户凭证:
4. 检查凭证文件格式
- AWS CLI的凭证文件默认路径为
C:\Users\<你的用户名>\.aws\credentials,打开该文件确认格式是否正确,正确格式如下:
确保没有多余的引号、空格或格式错误,这些都会导致授权头解析失败。[default] aws_access_key_id = YOUR_VALID_ACCESS_KEY aws_secret_access_key = YOUR_VALID_SECRET_KEY
5. 验证配置有效性
- 完成上述步骤后,先运行
aws sts get-caller-identity确认当前身份正确,再执行aws s3 ls测试是否能正常列出S3桶。
内容的提问来源于stack exchange,提问作者Pooja Pediredla
相关产品推荐
相关产品推荐

