Laravel 在AmazonS3的私有存储桶中托管上传,访问url';这是从拉威尔内部来的

Laravel 在AmazonS3的私有存储桶中托管上传,访问url';这是从拉威尔内部来的,laravel,amazon-web-services,amazon-s3,Laravel,Amazon Web Services,Amazon S3,我使用s3存储桶来上传应用程序的用户。这个水桶是私人的 使用以下代码时,无法从应用程序中访问生成的url: returnstorage::disk('s3')->url($this->path) 我可以通过生成一个临时url来解决这个问题,该url是可访问的: return Storage::disk('s3')->temporaryUrl($this->path,Carbon::now()->addMinutes(10)) 这是唯一的办法吗?或者还有其他选择吗?当对象在Amazon S3中是私

我使用s3存储桶来上传应用程序的用户。这个水桶是私人的

使用以下代码时,无法从应用程序中访问生成的url:

returnstorage::disk('s3')->url($this->path)

我可以通过生成一个临时url来解决这个问题,该url是可访问的:

return Storage::disk('s3')->temporaryUrl($this->path,Carbon::now()->addMinutes(10))


这是唯一的办法吗?或者还有其他选择吗?

当对象在Amazon S3中是私有的时,它们不能通过“匿名”URL访问。这就是他们的隐私

如果与应用程序关联的IAM凭据具有访问对象的权限,则可以通过AWS API调用从应用程序中访问对象

如果希望通过web浏览器中的URL(例如作为页面URL或在标记(如
)中引用时)访问对象,则需要创建一个可提供对私有对象的时间限制访问的。URL包含授权信息

虽然我不知道Laravel,但您的第一个代码示例似乎只是为AmazonS3中的对象提供了一个普通的“匿名”URL,因此(正确地)失败了。您的第二个代码示例显然正在生成一个预签名的URL,它将在给定的时间段内工作。这是创建可在浏览器中使用的URL的正确方法