Symfony uygulamalarında AWS SDK for PHP kütüphanesini kullanarak AWS S3 kovalarından dosya indirmek isterseniz, aşağıdaki örneği kullanabilirsiniz. Biz bu örnekte bir imaj dosyası indireceğiz. Daha fazla bilgi için Get an Object Using the AWS SDK for PHP sayfasını okuyun.


Dosyalar


.env


# User: These credentials belong to "AmazonS3FullAccess" user.
AWS_KEY=AMAZON000KEY
AWS_SECRET=AMAZON000SECRET
AWS_IMAGE_BUCKET=my-images-bucket

config/services.yaml


parameters:

# AWS SDK
aws_sdk:
version: 'latest'
region: 'eu-west-2'
credentials:
key: '%env(AWS_KEY)%'
secret: '%env(AWS_SECRET)%'

services:
_defaults:
autowire: true
autoconfigure: true
public: false

...

Aws\Sdk:
arguments:
- '%aws_sdk%'

Util/Aws/AwsUtil.php


declare(strict_types=1);

namespace App\Util\Aws;

use Aws\Sdk;

abstract class AwsUtil
{
protected $sdk;

public function __construct(Sdk $sdk)
{
$this->sdk = $sdk;
}
}

Util/Aws/AwsS3Util.php


declare(strict_types=1);

namespace App\Util\Aws;

use App\Exception\AwsUtilException;
use Aws\S3\Exception\S3Exception;
use GuzzleHttp\Psr7\Stream;

class AwsS3Util extends AwsUtil
{
public function getObject(string $bucket, string $key): Stream
{
try {
$result = $this->sdk->createS3()->getObject(['Bucket' => $bucket, 'Key' => $key]);

return $result['Body'];
} catch (S3Exception $e) {
throw new AwsUtilException($e->getMessage());
}
}
}

Kullanım


Resim URL'sinin bunlar gibi bir şey olduğunu varsayalım: https://s3.eu-west-2.amazonaws.com/my-images-bucket/images/in/an/zz/zz/1234567890qwerty.jpg veya https://myimages.amazonaws.com/my-images-bucket/images/in/an/zz/zz/1234567890qwerty.jpg. Resmi indirmek için aşağıdaki kodu kullanın.


AwsS3Util->getObject('my-images-bucket', 'images/in/an/zz/zz/1234567890qwerty.jpg');