繁体   English   中英

AMAZON s3-我能够成功地将图像上传到 s3 存储桶,但无法查看它们

[英]AMAZON s3- I'm able to successfully upload images to s3 bucket but can't view them

当我输入 url 的链接时,我收到此消息

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>5E3C0EC6695332F6</RequestId>
<HostId>
+oAnihC+lgFxkMu5L9aUURaU/9ufCSWD0e/h4rn+LQhAp6CJox1yNJH1ojaGVvktJ0xbD7vx10=
</HostId>
</Error>

这就是我的存储桶策略的样子

{
    "Version": "2012-10-17",
    "Id": "Policy000000000",
    "Statement": [
        {
            "Sid": "Stmt--someNumbers--",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucketname/*"
        }
    ]
}

我还检查了“任何经过身份验证的 AWS”的所有权限访问

更新我的 php 代码

private function fillMedia($media, $user, $file, $key)
{
    if($media->category =='profile'){
        $source_file=$file->dirname .'/' . $file->basename;
    }else{
        $source_file = $file->getRealPath();
    }
    $s3 = AWS::createClient('s3');
    $result = $s3->putObject(array(
        'Bucket' => env('BUCKET_NAME'),
        'Key' => $user->id . '/'. $media->category .'/'. $key,
        'SourceFile' => $source_file,
        'Metadata' => array(
        'Owner' => $user->first_name .' ' . $user->last_name
        )
        ));
}

我确认可以使用以下存储桶策略进行访问:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::name-of-your-bucket/*"
        }
    ]
}

这是我执行的步骤:

第1步-创建一个S3存储桶。

第2步-选择存储桶,然后选择“属性”

第3步-单击“添加存储桶策略”,然后在上面插入代码段。 确保将您的存储桶名称更改为您的存储桶名称。

第4步-将测试文件上传到存储桶并选择文件。

第5步-选择上载文件的属性-将有一个类似于https://s3-us-west-1.amazonaws.com/ name-of-your-bucket / your-test-file-name.jpg的URL

第6步-使用上面的URL打开测试文件。

当我删除使用的存储桶策略时,收到了与您相同的错误。

我希望这有帮助!

对我有用

$s3 = new S3("awsAccessKey", "awsSecretKey");
    $s3->putObjectFile(source, "bucket-name", destination, S3::ACL_PUBLIC_READ)); 

对于上述存储桶策略,我们需要在 wp-config.php 上提供凭据,或者没有凭据,我们可以使用该策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM