Rails localhost连接到亚马逊s3桶

时间:2015-12-25 21:44:05

标签: ruby-on-rails amazon-web-services amazon-s3

如何从本地计算机授予对亚马逊s3存储桶的访问权限?我一直收到这个错误:

Expected(200) <=> Actual(403 Forbidden) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AllAccessDisabled</Code><Message>All access to this object has been disabled</Message>

在IAM控制台中,我为自己提供了AmazonS3FullAccess和AdministratorAccess策略。

在S3控制台下的权限&#39;我有这个CORS配置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://localhost:3000</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    <CORSRule>
        <AllowedOrigin>https://localhost:3000</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

但是,在S3控制台中,当我点击“添加存储桶策略”时,政策编辑是空白的。不应该在IAM控制台中创建的两个策略出现在这里吗?或者他们是不同的东西?

我应该在政策编辑器中添加哪些政策?我尝试创建一个,但是我遇到了很多错误。

1 个答案:

答案 0 :(得分:0)

问题很可能出在您的存储桶政策中。 只要你的localhost作为KEY和SECRET它就没关系。

尝试将此政策添加到您要与之关联的IAM用户:

{
    "Version": "2015-12-26",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME/*"
            ]
        }
    ]
}

这样做是允许用户查找该存储桶名称(顶部),然后与所有文件夹arn:aws:s3:::BUCKET_NAME/*进行交互。

如果您想将该用户限制为子文件夹,只需修改上述部分即可。

如果有效,请告诉我。