首次从AWS S3下载文件遇403错误,重试即可正常访问
AWS S3下载首次403 Forbidden、重试成功的问题排查与解决
问题现象
- 执行AWS CLI的
s3 cp命令从S3存储桶下载文件时,首次尝试返回403 Forbidden错误;立即重试即可正常完成下载。 - 等待数分钟后再次尝试,仍会重复“首次失败、重试成功”的规律,且该现象不局限于单个文件,测试多个文件均存在此问题。
执行的命令(已隐藏敏感凭证)
C:\Users\jka> SET aws_access_key_id=AKIXXXXXXXXXXXXXXLNJ C:\Users\jka> SET aws_secret_access_key=1JcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcOZR C:\Users\jka> SET role_arn=arn:aws:iam::955XXXXXXX24:user/svc-comp-files-exchange C:\Users\jka> aws s3 cp "s3://data-exchange-prod-svc-comp-files-exchange/RESI/FromCLIENT/Onboarding_Activation_1918596894_20230327.dat.pgp" "\\prod-1\prod_vol1\JOBS\CLIENT_AWS_S3\IT\Test\Onboarding_Activation_1918596894_20230327.dat.pgp"
可能原因
- AWS CLI凭证缓存失效:CLI会缓存凭证信息,首次请求可能调用了过期/无效的缓存凭证,重试时重新获取了有效凭证。
- IAM权限同步延迟:若近期修改过IAM用户
svc-comp-files-exchange的权限,AWS全局权限同步可能存在短暂延迟,导致首次请求权限校验不通过。 - S3资源策略一致性问题:存储桶策略或ACL变更后,全局生效存在延迟,首次请求时策略尚未同步到所有节点。
- 网络/DNS解析波动:首次请求可能因DNS解析延迟、网络丢包等问题被AWS服务判定为无效请求,返回403错误(部分场景下网络问题会被包装为权限错误)。
解决步骤
1. 清除CLI凭证缓存
Windows系统下,CLI凭证默认存储在C:\Users\<你的用户名>\.aws\credentials文件中,直接删除该文件对应配置项,或执行以下命令清除缓存:
aws configure delete aws_access_key_id aws configure delete aws_secret_access_key
重新设置凭证后再次测试下载。
2. 校验IAM权限配置
确认用户svc-comp-files-exchange的IAM策略包含以下必要权限(需同时覆盖存储桶和对象层级):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::data-exchange-prod-svc-comp-files-exchange", "arn:aws:s3:::data-exchange-prod-svc-comp-files-exchange/*" ] } ] }
缺少ListBucket权限可能导致无法定位对象,触发403错误。
3. 强制禁用凭证缓存
在AWS配置文件(C:\Users\<你的用户名>\.aws\config)中添加以下配置,禁用凭证缓存:
[default] credential_process_timeout = 0
或执行命令时明确指定临时配置文件,避免使用缓存:
aws s3 cp "s3://bucket/path/file" "local/path" --profile temp-profile
4. 排查网络环境
- 执行
nslookup s3.amazonaws.com确认DNS解析正常,是否存在解析延迟。 - 更换网络环境(如切换至手机热点)测试,排除本地网络限制导致的问题。
5. 启用调试日志定位问题
执行下载命令时添加--debug参数,对比首次和重试请求的凭证、响应头信息,明确失败原因:
aws s3 cp "s3://data-exchange-prod-svc-comp-files-exchange/RESI/FromCLIENT/Onboarding_Activation_1918596894_20230327.dat.pgp" "\\prod-1\prod_vol1\JOBS\CLIENT_AWS_S3\IT\Test\Onboarding_Activation_1918596894_20230327.dat.pgp" --debug
内容的提问来源于stack exchange,提问作者jbunny
相关产品推荐
相关产品推荐

