【问题标题】:How to access public AWS S3 bucket in laravel如何在 laravel 中访问公共 AWS S3 存储桶
【发布时间】:2017-10-02 03:34:56
【问题描述】:

我在 eu-west-1 区域的 AWS 中有一个名为 latheesan-public-bucket(例如)的公共 S3 存储桶。

如果我在浏览器中访问以下网址(例如):

https://latheesan-public-bucket.s3-eu-west-1.amazonaws.com/

我得到以下 XML,表明我在存储桶中有一个文件:

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Name>latheesan-public-bucket</Name>
    <Prefix />
    <Marker />
    <MaxKeys>1000</MaxKeys>
    <IsTruncated>false</IsTruncated>
    <Contents>
        <Key>test.json</Key>
        <LastModified>2017-07-11T16:39:50.000Z</LastModified>
        <ETag>"056f32ee5cf49404607e368bd8d3f2af"</ETag>
        <Size>17658</Size>
        <StorageClass>STANDARD</StorageClass>
    </Contents>
</ListBucketResult>

如果我随后访问https://latheesan-public-bucket.s3-eu-west-1.amazonaws.com/test.json,我可以从我的公共存储桶下载我的文件。

为了在我的 Laravel 应用程序中实现同样的功能;我首先通过 composer 添加了这个包:

联赛/flysystem-aws-s3-v3

然后在我的.env 上,我添加了以下几行:

AWS_REGION=eu-west-1
AWS_BUCKET=latheesan-public-bucket

最后,我尝试使用 laravel 文件系统访问公共 s3 存储桶文件,如下所示:

$json = Storage::disk('s3')->get('test.json');

当我这样做时;我收到以下错误:

从实例配置文件元数据中检索凭据时出错 服务器。 (cURL 错误 28:连接在 1000 毫秒后超时 (见http://curl.haxx.se/libcurl/c/libcurl-errors.html))

所以,我用一些假凭据更新了我的 .env

AWS_KEY=123
AWS_SECRET=123
AWS_REGION=eu-west-1
AWS_BUCKET=latheesan-public-bucket

现在我收到此错误:

Illuminate \ Contracts \ Filesystem \ FileNotFoundException
test.json

所以我的问题是;首先我在这里做错了什么?如果没有实际提供有效的 S3 密钥/秘密,是否无法访问 laravel 中的公共 s3 存储桶?如果我不认识他们怎么办?我只有公共 s3 存储桶的 url。

附: latheesan-public-bucket 不存在(它是一个虚拟存储桶名称来解释我的问题,我确实有一个我正在尝试使用的真正的公共存储桶,它在浏览器中运行良好,如上所述)。

【问题讨论】:

    标签: php laravel amazon-web-services laravel-5 amazon-s3


    【解决方案1】:

    当您尝试通过 HTTPS URL 访问它时,它可以工作,因为它是公开的,而且您是

    当您尝试通过 SDK 访问它时,它正在尝试使用 API 访问它。

    因此,要么为您的实例配置文件提供访问存储桶的正确权限(不再需要公开),要么只需使用 http 客户端来检索文件。

    【讨论】:

    • 我正在阅读其他人遇到的类似问题,并认为这可能是问题所在。我想我将只编写一个辅助外观来使用file_get_contents() 列出/检索公共文件。
    【解决方案2】:

    如果您使用 S3 API 访问您的存储桶,则需要 AWS 凭证。原因是API需要对S3请求进行签名。

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 2021-10-08
      • 2019-07-14
      • 2020-11-09
      • 1970-01-01
      相关资源
      最近更新 更多