当我输入网址链接时,我收到此消息
<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&#39;
更新我的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
)
));
}
答案 0 :(得分:0)
我确认我可以使用此存储分区策略进行访问:
{
"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.jpg 的
步骤6 - 使用上面的URL打开测试文件。
当我删除我使用的存储分区策略时,我收到了与您相同的错误。
我希望这有帮助!
答案 1 :(得分:0)
它适用于我
$s3 = new S3("awsAccessKey", "awsSecretKey");
$s3->putObjectFile(source, "bucket-name", destination, S3::ACL_PUBLIC_READ));