我正在尝试使用AWS开发工具包javascript库将文件直接上传到S3。我正在遵循此处概述的指南:
https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album-full.html
得到
的支持https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html
我很确定我已经正确设置了一切,但是每当我尝试运行代码时,都会收到403错误。我最初尝试使用最松散的安全性来执行此操作,目的是慢慢将其拧紧。
这是我所做的:
使用创建向导期间选择的默认设置创建了一个名为Playground的新存储桶。
使用未经身份验证的身份创建了一个名为“游乐场”的Cognito身份池。未经身份验证的角色名称为Cognito_PlaygroundUnauth_Role
向IAM未经身份验证的角色添加策略,如下所示
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::playground/*"
]
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
这时,应该根据上面列出的指南进行配置,但我得到了403。我试图使事情保持简单,仅在上面的参考URL中实现listAlbums
方法。
我认为然后向存储区存储桶中添加存储桶策略可能会有所帮助,但没有成功
{
"Version": "2012-10-17",
"Id": "Policy1549895523201",
"Statement": [
{
"Sid": "Stmt1549895522186",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::925601331860:role/Cognito_PlaygroundUnauth_Role"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::playground/*"
}
]
}
更新 如果我更新存储桶上的Public Access ACL,这样每个人都可以列出和写入对象,那么我就可以完成这项工作。但是我不想向所有人开放。只有Cognito匿名角色
有什么想法吗?