Ruby on rails ActiveStorage和s3-默认情况下设置所有公共映像
我需要将rails 6应用程序中的一个文件上传到s3,以便生成一个公共链接,与第三方应用程序共享 实际上,我正在通过以下方式将链接发送到另一个应用程序:Ruby on rails ActiveStorage和s3-默认情况下设置所有公共映像,ruby-on-rails,amazon-s3,rails-activestorage,Ruby On Rails,Amazon S3,Rails Activestorage,我需要将rails 6应用程序中的一个文件上传到s3,以便生成一个公共链接,与第三方应用程序共享 实际上,我正在通过以下方式将链接发送到另一个应用程序: object.media.service_url.sub(/\?.*/, '') 而bucket config具有以下配置: 这项政策: { "Version": "2012-10-17", "Statement": [ { "Sid":
object.media.service_url.sub(/\?.*/, '')
而bucket config具有以下配置:
这项政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1420751757000",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXXXX:user/YYYYYYYYY"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket-dev",
"arn:aws:s3:::bucket-dev/*"
]
}
]
}
但是,当我尝试查看URL内容时,仍然有一个AccessDenied响应:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>CD3A94D81CC8418D</RequestId>
<HostId>5OFKgoUzoDxoB72g4AIYePONGkn7FtulUNk6kCga57FDSBACzenjipxyeekGNiRbBmXVKsEdxxfiQehb06z4wQ==
</HostId>
</Error>
我还缺少一些其他配置?我使用以下方法解决了该问题:
Rails.application.routes.url_helpers.url_for(object.media)
而不是:
object.media.service_url.sub(/\?.*/, '')
即使您已阻止bucket的所有公共访问,它也可以工作