【问题标题】:How to access file from aws s3 bucket?如何从 aws s3 存储桶访问文件?
【发布时间】: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


【解决方案1】:

默认情况下,Amazon S3 中的对象是私有的。您可以通过多种方式授予对对象的访问权限:

  • 单个对象的访问控制列表(“公开此对象”)
  • 存储桶政策(“将此存储桶或目录设为公开”)
  • 通过授予 IAM 用户的权限(“此用户可以访问此存储桶或目录)
  • 通过预签名网址(“此链接将在接下来的 5 分钟内有效”)

您用于访问对象的 URL 并未将您标识为授权用户。您没有存储桶策略。您的对象不是公开的。因此,您正确收到拒绝访问消息

要使其可访问,您必须根据上述列表确定访问范围。如果您希望 对象 完全公开,请在上传对象时设置该选项:

$result = $client->putObject([
    'ACL' => 'private|public-read|public-read-write|authenticated-read|aws-exec-read|bucket-owner-read|bucket-owner-full-control',
...

如果您想公开整个存储桶或目录,请使用Bucket Policy

如果您只希望某些用户访问它,请添加针对 IAM 用户或 IAM 组的策略,然后使用可识别用户的凭证访问该对象。

如果您希望您的应用程序在运行时确定谁应该访问该对象,请使用pre-signed URL

【讨论】:

    猜你喜欢
    • 2020-06-15
    • 2016-03-07
    • 2022-12-09
    • 2023-01-27
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多