我正在使用Froala HTML编辑器将图像直接上传到Amazon S3存储桶。它在过去的几个月里一直很好用。我没有在开发方面做任何改变。
大约一天前,我上传到Amazon S3的所有图片都开始失败并收到403 "Invalid according to policy: policy expired"
回复。
我意识到我的存储桶没有策略,并且正在使用旧的ACL进行权限(我的理解是策略正在替换ACL?)。
我使用亚马逊政策生成器更新了我的政策,我仍然获得了403。
我尝试将政策设置为公开,只是试图让它发挥作用(请注意,我已删除了我认为敏感的任何内容):
{
"Version": "2012-10-17",
"Id": "Policy123...",
"Statement": [
{
"Sid": "Stmt123...",
"Effect": "Allow",
"Principal": "*",
"Action": "*",
"Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
}
]
}
根据我的理解,此策略应允许完全公开访问存储桶以执行任何操作。显然我不希望这个用于制作,但我只是想让它再次发挥作用。
但是,我仍然得到403&#34;政策已过期&#34;。
我已经看过其他一些关于更新计算机时钟的帖子,但是我的计算机或服务器上的任何内容都没有改变,我的政策中没有设置过期,所以我&# 39;我不确定为什么那会很重要。
亚马逊S3控制台甚至警告我,我已经设置了桶上的公共访问权限,所以我知道该策略至少在某种程度上是&#34;工作
问题
accessKey
或secretKey
?答案 0 :(得分:1)
此错误指的是不同的策略 - 不是存储桶策略,而是用于发送POST
上载的HTML表单中包含的已签名策略语句的到期时间戳。听起来你说这是你做上传,而不是网站的访问者,这让我认为这就是你的&#34; Froala HTML编辑器&#34;正在将您的内容上传到S3 ......
这表明您的工作站的系统时钟不正确,或者时钟似乎是正确的,但实际系统时区设置错误。
后一个问题的一个例子,假设你在America / Los_Angeles,你的系统时钟显示时间为08:00,这与你的挂钟一致;但是,如果您的系统时区设置错误地设置为America / New_York,那么您的系统时钟实际上反映的是比当前时间晚三个小时的时间,导致您的签名上传时间比预期提前3小时到期 - 可能会到期在过去,因此无效并被S3拒绝为已过期的政策。