Rumah >pembangunan bahagian belakang >tutorial php >Mengkonfigurasi AWS SDK untuk PHP dengan S3

Mengkonfigurasi AWS SDK untuk PHP dengan S3

王林
王林asal
2024-08-26 06:30:35744semak imbas

Amazon Web Services (AWS) ialah platform berkuasa yang menawarkan pelbagai perkhidmatan untuk pembangun dan perniagaan. Antara perkhidmatan ini, Amazon Simple Storage Service (S3) adalah salah satu perkhidmatan yang paling popular dan digunakan secara meluas. Untuk berinteraksi dengan S3 secara pemrograman, anda boleh menggunakan AWS SDK untuk PHP. Dalam artikel ini, kami akan membimbing anda melalui proses mengkonfigurasi AWS SDK untuk PHP dengan S3.

Configuring AWS SDK for PHP with S3

Prasyarat

Sebelum kami bermula, pastikan anda mempunyai perkara berikut:

  • Akaun AWS
  • ID Kunci Akses AWS dan Kunci Akses Rahsia
  • PHP 5.6 atau lebih tinggi
  • Komposer dipasang

Pemasangan

Untuk memasang AWS SDK untuk PHP, anda boleh menggunakan Komposer. Jalankan arahan berikut dalam terminal anda:

composer require aws/aws-sdk-php

Arahan ini akan memasang versi terkini AWS SDK untuk PHP dalam projek anda.

Konfigurasi

Setelah anda memasang SDK, anda perlu mengkonfigurasinya dengan ID Kunci Akses AWS dan Kunci Akses Rahsia anda. Anda boleh melakukan ini dengan mencipta fail konfigurasi atau dengan menetapkan pembolehubah persekitaran.

Fail Konfigurasi

Buat fail baharu bernama config.php dalam projek anda dan tambahkan kod berikut:

<?php
require 'vendor/autoload.php';

use Aws\Sdk;

$sdk = new Sdk([
    'region' => 'us-east-1',
    'version' => 'latest',
    'credentials' => [
        'key' => 'YOUR_ACCESS_KEY_ID',
        'secret' => 'YOUR_SECRET_ACCESS_KEY',
    ]
]);

$s3Client = $sdk->createS3();

Ganti YOUR_ACCESS_KEY_ID dan YOUR_SECRET_ACCESS_KEY dengan ID Kunci Akses AWS dan Kunci Akses Rahsia anda yang sebenar.

Pembolehubah Persekitaran

Sebagai alternatif, anda boleh menetapkan ID Kunci Akses AWS dan Kunci Akses Rahsia sebagai pembolehubah persekitaran:

export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY

Kemudian, cipta klien S3 seperti berikut:

<?php
require 'vendor/autoload.php';

use Aws\Sdk;

$sdk = new Sdk([
    'region' => 'us-east-1',
    'version' => 'latest',
]);

$s3Client = $sdk->createS3();

Bersedia untuk mengetahui lebih lanjut tentang AWS dan PHP? Lihat artikel kami yang lain tentang AWS konfigurasi SSO dan Memperbaiki ralat kebenaran laravel yang ditolak.

Penggunaan

Sekarang anda telah mengkonfigurasi AWS SDK untuk PHP dengan S3, anda boleh mula menggunakannya untuk berinteraksi dengan baldi S3 anda. Berikut ialah contoh cara menyenaraikan semua baldi dalam akaun anda:

$buckets = $s3Client->listBuckets();
foreach ($buckets['Buckets'] as $bucket) {
    echo $bucket['Name'] . PHP_EOL;
}

Pasti, berikut ialah beberapa contoh tambahan dan amalan terbaik untuk menggunakan AWS SDK untuk PHP dengan S3.

Memuat naik Fail

Untuk memuat naik fail ke baldi S3, anda boleh menggunakan kaedah putObject. Berikut ialah contoh:

$bucketName = 'my-bucket';
$keyName = 'my-file.txt';
$filePath = '/path/to/my-file.txt';

$result = $s3Client->putObject([
    'Bucket' => $bucketName,
    'Key' => $keyName,
    'SourceFile' => $filePath,
]);

echo $result['ObjectURL'] . PHP_EOL;

Kod ini akan memuat naik fail yang terletak di /path/to/my-file.txt ke baldi baldi saya dan mencetak URL fail yang dimuat naik.

Memuat turun Fail

Untuk memuat turun fail daripada baldi S3, anda boleh menggunakan kaedah getObject. Berikut ialah contoh:

$bucketName = 'my-bucket';
$keyName = 'my-file.txt';
$filePath = '/path/to/downloaded-file.txt';

$result = $s3Client->getObject([
    'Bucket' => $bucketName,
    'Key' => $keyName,
    'SaveAs' => $filePath,
]);

echo $result['ContentLength'] . ' bytes downloaded.' . PHP_EOL;

Kod ini akan memuat turun fail dengan kekunci my-file.txt daripada baldi baldi saya dan menyimpannya ke /path/to/downloaded-file.txt.

Menyenaraikan Objek

Untuk menyenaraikan objek dalam baldi S3, anda boleh menggunakan kaedah listObjects. Berikut ialah contoh:

$bucketName = 'my-bucket';

$result = $s3Client->listObjects([
    'Bucket' => $bucketName,
]);

foreach ($result['Contents'] as $object) {
    echo $object['Key'] . PHP_EOL;
}

Kod ini akan menyenaraikan semua objek dalam baldi baldi saya dan mencetak kuncinya.

Amalan Terbaik - AWS SDK + PHP + S3

Berikut ialah beberapa amalan terbaik yang perlu diingat apabila menggunakan AWS SDK untuk PHP dengan S3:

  • Gunakan peranan dan dasar IAM untuk mengurus akses kepada sumber S3 anda.
  • Gunakan versi untuk menyimpan berbilang versi objek anda dan melindungi daripada pemadaman tidak sengaja.
  • Gunakan dasar kitaran hayat untuk mengurus storan dan pengekalan objek anda secara automatik.
  • Gunakan pecutan pemindahan untuk meningkatkan prestasi muat naik dan muat turun anda.
  • Gunakan penyulitan sebelah pelayan untuk melindungi data anda dalam keadaan rehat.
  • Gunakan pemberitahuan acara untuk mencetuskan tindakan berdasarkan perubahan pada objek S3 anda.

Pasti, berikut ialah beberapa petua tambahan untuk menggunakan AWS SDK untuk PHP dengan S3 dalam Laravel.

Menggunakan AWS SDK untuk PHP dengan Laravel

Laravel mempunyai sokongan terbina dalam untuk AWS SDK untuk PHP, yang memudahkan penggunaan S3 dalam aplikasi Laravel anda. Berikut ialah beberapa petua untuk menggunakan SDK dengan Laravel:

  • Pasang pakej AWS SDK untuk PHP melalui Komposer:
composer require aws/aws-sdk-php
  • Konfigurasikan bukti kelayakan AWS anda dalam fail .env anda:
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_DEFAULT_REGION=your_region
  • Gunakan fasad Storan untuk berinteraksi dengan S3:
use Illuminate\Support\Facades\Storage;

// Upload a file
Storage::disk('s3')->put('my-file.txt', file_get_contents('/path/to/my-file.txt'));

// Download a file
Storage::disk('s3')->download('my-file.txt', '/path/to/downloaded-file.txt');

// List the objects in a bucket
$objects = Storage::disk('s3')->listContents('my-bucket');

foreach ($objects as $object) {
    echo $object['path'] . PHP_EOL;
}
  • Gunakan penyesuai Flysystem Laravel untuk menyesuaikan gelagat fasad Storan:
use Illuminate\Support\ServiceProvider;
use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
use Aws\S3\S3Client;

class S3ServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton('filesystems.disks.s3', function ($app) {
            return new AwsS3V3Adapter(
                new S3Client([
                    'region' => config('filesystems.disks.s3.region'),
                    'version' => 'latest',
                    'credentials' => [
                        'key' => config('filesystems.disks.s3.key'),
                        'secret' => config('filesystems.disks.s3.secret'),
                    ],
                ]),
                config('filesystems.disks.s3.bucket')
            );
        });
    }
}
  • Gunakan sistem baris gilir Laravel untuk melaksanakan operasi S3 secara tidak segerak:
use Illuminate\Support\Facades\Storage;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class UploadFile implements ShouldQueue
{
    use InteractsWithQueue;

    protected $filePath;

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

    public function handle()
    {
        Storage::disk('s3')->put('my-file.txt', file_get_contents($this->filePath));
    }
}

Amalan Terbaik - AWS SDK + PHP + Laravel

Berikut ialah beberapa amalan terbaik yang perlu diingat apabila menggunakan AWS SDK untuk PHP dengan S3 dalam Laravel:

  • Gunakan sokongan terbina dalam Laravel untuk AWS SDK untuk PHP untuk memudahkan kod anda dan mengurangkan jumlah kod boilerplate yang anda perlu tulis.
  • Gunakan sistem baris gilir Laravel untuk melaksanakan operasi S3 secara tidak segerak, yang boleh meningkatkan prestasi dan kebolehskalaan aplikasi Laravel anda.
  • Gunakan penyesuai Flysystem Laravel untuk menyesuaikan gelagat fasad Storan dan untuk menyepadukan S3 dengan ciri Laravel lain, seperti sistem cache Laravel.
  • Gunakan sistem baris gilir Laravel untuk melaksanakan operasi S3 secara tidak segerak, yang boleh meningkatkan prestasi dan kebolehskalaan aplikasi Laravel anda.
  • Gunakan ciri penyulitan Laravel untuk menyulitkan data sensitif sebelum menyimpannya dalam S3.
  • Gunakan ciri pengelogan Laravel untuk log sebarang ralat atau pengecualian yang berlaku apabila menggunakan AWS SDK untuk PHP dengan S3.

Kesimpulan

Dalam artikel ini, kami telah membincangkan asas mengkonfigurasi AWS SDK untuk PHP dengan S3 dan menyediakan beberapa contoh tambahan dan amalan terbaik untuk menggunakan SDK dengan S3. Kami juga telah menyediakan beberapa petua tambahan untuk menggunakan SDK dengan S3 dalam Laravel. Dengan mengikuti garis panduan ini, anda boleh memastikan bahawa aplikasi PHP anda selamat, cekap dan berskala.


Ingin mengetahui lebih lanjut tentang AWS dan PHP? Lihat artikel kami yang lain tentang DevOps Mind.

Atas ialah kandungan terperinci Mengkonfigurasi AWS SDK untuk PHP dengan S3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn