Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveStorage和s3-默认情况下设置所有公共映像_Ruby On Rails_Amazon S3_Rails Activestorage - Fatal编程技术网

Ruby on rails ActiveStorage和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":

我需要将rails 6应用程序中的一个文件上传到s3,以便生成一个公共链接,与第三方应用程序共享

实际上,我正在通过以下方式将链接发送到另一个应用程序:

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的所有公共访问,它也可以工作