php - 如何从aws s3存储桶访问文件?

标签 php laravel-5 amazon-s3 amazon-ec2

将图像上传到 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 中的对象是私有(private)的。您可以通过多种方式授予对对象的访问权限:

  • 单个对象的访问控制列表(“公开此对象”)
  • 存储桶的存储桶策略(“公开此存储桶或目录”)
  • 通过授予 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 .

关于php - 如何从aws s3存储桶访问文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45262486/

相关文章:

php - PHP 函数末尾的 'return' 是什么意思?

php - 使用 CakePHP 3.x 设置 ReactJS 的最佳方法是什么?

php - 检索多对多关系。拉维尔

mysql - 设置laravel Eloquent关系报错

php - 获取/读取 laravel 5.8 存储非公共(public)文件夹文件以查看?

linux - 发出 AWS S3 路由规则和 SSL

如果 php shell_exec 包含用于字符串替换的大括号,则它会默默失败

php - PHP 中的 printf 有什么用?

amazon-s3 - 排序s3cmd的输出

java - 在 Java 中缓存 map