【发布时间】:2017-07-23 20:51:29
【问题描述】:
将图像上传到 s3 存储桶后如何从 aws s3 存储桶访问文件。当我得到图像时,它显示访问被拒绝错误。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>xxxxx</RequestId>
<HostId>xxxxx</HostId>
</Error>
Controller Code is
$sharedConfig = [
'region' => Config::get('filesystems.disks.s3.region'),
'version' => 'latest',
"Effect" => "Allow",
'credentials' => [
'key' => 'xxxx',
'secret' => 'xxxx'
]
];
$sdk = new \Aws\Sdk($sharedConfig);
$s3 = $sdk->createS3();
$res = $s3->putObject([
'Key' => $fileName, // This will overwrite any other files with same name
'SourceFile' => $filePath,
'Bucket' => 'bolttupload'
]);
Storage::copy($res['ObjectURL'],$destinationPath.$fileName);
echo $res['ObjectURL'];die;
【问题讨论】:
-
可能有多种原因,但这似乎是权限问题。您可以检查假设访问存储桶的角色的存储桶权限吗?
-
您是如何在网络浏览器中访问该对象的?你用的是什么网址?默认情况下,Amazon S3 中的所有对象都是私有的,除非您对对象、存储桶或用户设置权限。是什么让您认为该对象应该是可访问的?您是否分配了存储桶策略?如果是这样,请告诉我们。
-
@Ashan,我已授予存储桶的完全权限。
-
@JohnRotenstein,我正在从 Web 浏览器访问该对象,当我上传该对象时,我使用了由 aws s3 存储桶返回的那个 url。我没有为该存储桶分配任何存储桶策略。
-
@RajeevVarshney 您是否找到任何解决方案来使用 php 从 s3 存储桶访问任何图像或文件?
标签: php laravel-5 amazon-s3 amazon-ec2