jeudi 28 septembre 2017

How to access public AWS S3 bucket in laravel

I have a public S3 bucket called latheesan-public-bucket (for example) in AWS in the eu-west-1 region.

If I were to visit the following url in the browser (for example):

http://ift.tt/2ybiPK6

I get the following XML showing that I have one file in the bucket:

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://ift.tt/1f8lKAh">
    <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>

If I were to then visit http://ift.tt/2ybiQh8 I can download my file from my public bucket.

In order to achieve the same in my Laravel application; I first added this package via composer:

league/flysystem-aws-s3-v3

Then on my .env I've added the following lines:

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

Lastly, I then tried to use the laravel filesystem to access the public s3 bucket file like this:

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

When I did this; I got the following error:

Error retrieving credentials from the instance profile metadata server. (cURL error 28: Connection timed out after 1000 milliseconds (see http://ift.tt/1mgwZgQ))

So, I updated my .env with some fake credentials:

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

Now I get this error:

Illuminate \ Contracts \ Filesystem \ FileNotFoundException
test.json


So my question is; firstly what am I doing wrong here? Is there no way to access a public s3 bucket in laravel without actually providing a valid S3 Key/secret? what if I don't know them? I only have the url to the public s3 bucket.

P.S. the latheesan-public-bucket does not exist (it was a dummy bucket name to explain my problem, I do have a real public bucket I am trying to work with and it works fine in browser as explained above).



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire