Amazon web services 亚马逊S3:403禁止;根据策略无效:策略已过期“;(红宝石)
我使用Froala HTML编辑器将图像直接上传到AmazonS3存储桶。在过去的几个月里,它一直运转良好。在开发方面,我没有做任何改变 大约一天前,我上传到Amazon S3的所有图像开始失败,并得到Amazon web services 亚马逊S3:403禁止;根据策略无效:策略已过期“;(红宝石),amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我使用Froala HTML编辑器将图像直接上传到AmazonS3存储桶。在过去的几个月里,它一直运转良好。在开发方面,我没有做任何改变 大约一天前,我上传到Amazon S3的所有图像开始失败,并得到403“根据策略无效:策略过期”响应 我意识到我的bucket没有策略,并且使用旧的ACL作为权限(我的理解是策略正在取代ACL?) 我使用Amazon策略生成器更新了我的策略,我仍然得到403 我试图将该策略设置为公共策略,只是想让它发挥作用(请注意,我已经删除了任何我认为敏感的内容): { “
403“根据策略无效:策略过期”
响应
我意识到我的bucket没有策略,并且使用旧的ACL作为权限(我的理解是策略正在取代ACL?)
我使用Amazon策略生成器更新了我的策略,我仍然得到403
我试图将该策略设置为公共策略,只是想让它发挥作用(请注意,我已经删除了任何我认为敏感的内容):
{
“版本”:“2012-10-17”,
“Id”:“保单123…”,
“声明”:[
{
“Sid”:“Stmt123…”,
“效果”:“允许”,
“委托人”:“*”,
“行动”:“*”,
“资源”:“arn:aws:s3::/*”
}
]
}
根据我的理解,这项政策应该允许公众在采取任何行动时完全访问桶。很明显,我不想把它用于生产,但我只是想让它再次发挥作用
然而,我仍然得到403“政策过期”
我看过其他一些关于更新计算机时钟的帖子,但我没有在我的计算机或服务器上更改任何内容,我的策略中也没有设置过期时间,所以我不确定这有什么关系
AmazonS3控制台甚至警告我,我已经在bucket上设置了公共访问,因此我知道该策略至少“在某种程度上”起作用
问题
accessKey
或secretKey
此错误指的是不同的策略—不是bucket策略,而是用于发送
POST
上载的HTML表单中包含的已签名策略语句的过期时间戳。听起来你是说这是你上传的,而不是网站的访问者,这让我假设这就是你的“Froala HTML编辑器”将内容上传到S3的方式
这表明工作站的系统时钟不正确,或者时钟似乎正确,但实际的系统时区设置错误
后一个问题的例子是,假设您在美国/洛杉矶,您的系统时钟显示时间为08:00,这与您的挂钟一致;但是,如果您的系统时区被错误地设置为America/New_York,那么您的系统时钟实际上反映的时间比当前时间晚了三个小时,这会导致您的签名上载的过期时间戳比预期的早3个小时,可能在过去过期,因此无效,被S3拒绝,因为有过期的策略。最终解决了这个问题,您是对的。问题是我生成了策略,然后添加了JS文件,它是静态的……因此在部署后它可以工作几个小时,然后在过期后停止。我在服务器上动态生成策略,然后将其添加到meta标记中,并使用该值设置JS编辑器代码,从而解决了这个问题。
{
"Version": "2012-10-17",
"Id": "Policy123...",
"Statement": [
{
"Sid": "Stmt123...",
"Effect": "Allow",
"Principal": "*",
"Action": "*",
"Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
}
]
}