如何创建S3下载URL,使部署目标可通过wget获取构建阶段产物?
解决S3临时凭证下wget下载403错误的方法
方法1:直接在wget命令中传递完整临时凭证
临时凭证必须同时包含accessKeyId、secretAccessKey和sessionToken才能通过S3的权限校验,直接用以下格式的wget命令:
wget --header="x-amz-security-token: 你的sessionToken值" https://你的bucketName.s3.你的区域.amazonaws.com/你的objectKey --user=你的accessKeyId值 --password=你的secretAccessKey值
注意替换命令里的所有占位符(比如区域填us-east-1这类实际值),确保bucket名称、object路径完全正确。
方法2:生成预签名URL后下载
如果能使用AWS CLI,先通过临时凭证生成带权限的预签名URL,再用wget下载:
- 配置临时凭证环境变量:
export AWS_ACCESS_KEY_ID="你的accessKeyId值" export AWS_SECRET_ACCESS_KEY="你的secretAccessKey值" export AWS_SESSION_TOKEN="你的sessionToken值"
- 生成有效期内的预签名URL(示例设置1小时有效期,可按需调整
--expires-in的秒数):
aws s3 presign s3://你的bucketName/你的objectKey --expires-in 3600
- 复制生成的URL,直接用wget下载:
wget 生成的预签名URL
额外检查项
- 确认临时凭证的权限策略包含
s3:GetObject权限,且作用范围覆盖目标bucket和object; - 检查
expirationTime是否已过期,临时凭证过期后会直接返回403; - 确认S3 endpoint的区域与bucket实际所在区域一致,避免跨区域访问导致的权限校验失败。
内容的提问来源于stack exchange,提问作者wzr1337
相关产品推荐
相关产品推荐

