首先,我们需要查看当前s3 Bucket的Bucket policy,确认确实没有给该IAM用户授权上传功能。可以使用AWS S3控制台的权限设置或者AWS CLI命令 aws s3api get-bucket-policy --bucket [BucketName] 来查看。
如果确实存在授权问题,可以按照以下步骤解决:
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::example-bucket/*",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/JohnDoe"
}
}
]
其中"Resource": "arn:aws:s3:::example-bucket/*"表示允许上传到example-bucket下的任何文件夹和对象,"Principal": { "AWS": "arn:aws:iam::111122223333:user/JohnDoe" }表示授权给用户名为JohnDoe的IAM用户。
aws s3api put-bucket-policy --bucket [BucketName] --policy file://policy.json 来更新Bucket policy。如果更新后仍然出现403错误,可能是由于其他因素引起的,例如强制访问HTTPS、Access Denied策略等。需要进一步调查并解决。