Dan*_*dby 4 image amazon-s3 ruby-on-rails-5
我是AWS的新手,所以我确定我只是错过了某个地方的设置.目前我已经直接上传到我的Rails应用程序上的S3设置,这是有效的.当我将图像上传到我的应用程序时JS触发,我已经克服了CORS问题,图像出现在我的S3控制台中.好极了.
问题是当我尝试查看图像时.当我转到生成的图像url(由S3返回,并由控制台中的树结构确认)时,我得到了一个403 HTTP响应和有趣的XML错误(我查找并且只找到了相关联InvalidPayer,我可以'找到除此处以外任何地方的任何参考):
<Error>
    <Code>AllAccessDisabled</Code>
    <Message>All access to this object has been disabled</Message>
    <RequestId>DF2E5FCE3EF9A8A9</RequestId>
    <HostId>
BRqoJ5qxtYfe4ykFCxJftgghNbHvmp/hZQggrLszOwxz2oCje8gCLmZFex0Zebu8k/O+1cSJyic=
    </HostId>
</Error>
所有人都有乐趣!我一直在环顾四周,我发现我可能需要为我的IAM用户设置权限,以及设置存储桶权限以便其他人可以访问图像.所以我已经使用了我的用户的IAM权限并添加了AmazonS3FullAccess,这似乎是最明显和最全面的选择.此外,我去了我的桶为其他人设置权限并指定以下内容:
{
    "Id": "PolicyIdHere",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "StmtIdHere",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::my-bucket-name/*",
            "Principal": "*"
        }
    ]
}
PS,那个桶设置是由AWS使用他们的策略生成器生成的,所以我怀疑它没有错,否则我错过了一个微妙之处.
我想如果我考虑一下,似乎我已经设置了我自己获取视图图像所需的所有权限,但也许还需要配置其他设置以允许任何拥有正确S3 URL的人查看图片?
提前感谢任何建议.
捂脸
我今天早上看到这个新鲜事后,我刚才注意到的另一个经典应该是明显的答案.A)你确实需要做我提到的事情...... CORS设置(如果你使用JS直接上传到S3而不是使用你的应用程序来做),IAM用户设置和存储桶权限都需要正确配置.但是:B)你必须正确构建URL,呃.S3正在返回存储桶和路径,但不是基本URL.所以我要去s3.amazonaws.com/path-to-asset,但不是s3.amazonaws.com/bucket-name/path-to-asset,这显然是关键.
雅'活着,你'学习.
| 归档时间: | 
 | 
| 查看次数: | 10966 次 | 
| 最近记录: |