抱歉,没有菜鸟问题,但是我试图将文件从我的react node.js应用程序上传到S3。我正在使用Uppy和Companion处理到S3的上传。
如果我的S3权限允许,我可以上传文件
Block all public access
处于未选中状态(又名公共场所中的任何人都可以使用我的存储桶)。
但是,我显然不想要这个。据我了解,我需要配置我的
我敢肯定,我的CORS设置是可以的,但是无论我做什么,当选中Block all public access
时,我的上传内容都无法正常工作。我一直收到403禁止响应。我的权限是:
IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::MY_BUCKET_NAME"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::MY_BUCKET_NAME/*"
}
]
}
时段政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::00000000000:user/MY_IAM_USERNAME"
},
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::MY_BUCKET_NAME",
"arn:aws:s3:::MY_BUCKET_NAME/*"
]
}
]
}
CORS:
<?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>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我一直在尝试不同设置的组合,但是没有运气。我想知道这是否是我做错的基本事情。
预先感谢
答案 0 :(得分:1)
根据IAM策略规则,显式拒绝会覆盖显式允许。因此,如果选中“阻止所有公共访问权限”(这是新创建的S3的默认安全性),则意味着您明确拒绝了任何公共访问权限。
Amazon S3为存储桶和存储桶提供阻止公共访问设置 帐户,以帮助您管理对Amazon S3资源的公共访问。通过 默认情况下,新的存储桶和对象不允许公共访问,但用户 可以修改存储桶策略或对象权限以允许公共 访问。 Amazon S3阻止公共访问设置会覆盖这些策略 和权限,以便您可以限制对这些内容的公共访问 资源。借助Amazon S3阻止公共访问,账户管理员 和存储桶所有者可以轻松设置集中控制以限制 公共访问其强制执行的Amazon S3资源 不管如何创建资源。