亚马逊S3:403被禁止"根据政策无效:政策已过期" (红宝石)

时间:2018-03-21 23:41:23

标签: amazon-web-services amazon-s3 policy

我正在使用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;工作

问题

  1. 如果我更新了Amazon S3政策,是否需要更新我用于签署上传的应用accessKeysecretKey
  2. 我可以尝试明确删除政策到期吗?我的用户将上传图片,而我不想要该应用程序&#34;用户&#34;到期,它应该永远有效吗?

1 个答案:

答案 0 :(得分:1)

此错误指的是不同的策略 - 不是存储桶策略,而是用于发送POST上载的HTML表单中包含的已签名策略语句的到期时间戳。听起来你说这是做上传,而不是网站的访问者,这让我认为这就是你的&#34; Froala HTML编辑器&#34;正在将您的内容上传到S3 ......

这表明您的工作站的系统时钟不正确,或者时钟似乎是正确的,但实际系统时区设置错误。

后一个问题的一个例子,假设你在America / Los_Angeles,你的系统时钟显示时间为08:00,这与你的挂钟一致;但是,如果您的系统时区设置错误地设置为America / New_York,那么您的系统时钟实际上反映的是比当前时间晚三个小时的时间,导致您的签名上传时间比预期提前3小时到期 - 可能会到期在过去,因此无效并被S3拒绝为已过期的政策。