Rumah  >  Artikel  >  rangka kerja php  >  Kuasai sepenuhnya penggunaan AWS S3 dalam Laravel

Kuasai sepenuhnya penggunaan AWS S3 dalam Laravel

WBOY
WBOYke hadapan
2022-02-14 14:51:463009semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang menggunakan AWS S3 dalam Laravel memberikan kami tempat untuk menyimpan fail pelayan dalam awan tidak mengambil banyak ruang, I harap dapat membantu semua.

Kuasai sepenuhnya penggunaan AWS S3 dalam Laravel

AWS S3 menyediakan kami tempat untuk menyimpan fail pelayan. Faedah melakukan ini ialah:

  • Sandaran/Lebihan - S3 dan produk yang serupa mempunyai sandaran dan redundan terbina dalam

  • Sambungan- Dalam pelayan moden (seperti persekitaran tanpa pelayan atau bekas serta persekitaran pengimbangan beban tradisional), menyimpan fail di luar pelayan menjadi satu keperluan

  • Penggunaan Cakera - Tidak banyak ruang cakera diperlukan semasa menyimpan fail dalam awan

  • Ciri - S3 (dan awan lain) mempunyai Beberapa ciri hebat seperti kawalan versi fail, peraturan kitaran hayat untuk memadamkan fail lama (atau menyimpannya dengan lebih murah), perlindungan pemadaman dan banyak lagi

Kini dengan S3 (walaupun dalam satu persediaan pelayan) boleh menjimatkan anda sakit kepala dalam jangka masa panjang. Inilah yang anda patut tahu!

Konfigurasi

Mengkonfigurasi S3 memerlukan penggunaan yang berikut:

  • Dalam Laravel - biasanya melalui .env, tetapi mungkin juga dalam config/filesystem.php In

  • akaun AWS anda

Laravel Config

Jika anda menyemak config/ filesystem.php anda fail, anda akan mendapati bahawa sudah ada pilihan S3. Ia telah ditetapkan sebagai pembolehubah persekitaran dalam fail .env!

Melainkan anda perlu menyesuaikan ini, anda boleh biarkan sahaja dan tetapkan sahaja dalam fail .env:

#(可选)将默认文件系统驱动设置为 S3
FILESYSTEM_DRIVER=sqs
# 添加基于 S3 的文件驱动所需的参数
AWS_ACCESS_KEY_ID=xxxzzz
AWS_SECRET_ACCESS_KEY=xxxyyy
AWS_DEFAULT_REGION=us-east-2
AWS_BUCKET=my-awesome-bucket
AWS_USE_PATH_STYLE_ENDPOINT=false

Fail config/filesystem.php mengandungi pilihan berikut:

return [
    'disks' => [
        // 'local' 和 'public' 省略...
        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
            'endpoint' => env('AWS_ENDPOINT'),
            'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
        ],
    ],
];

Sesetengah pilihan yang kami tidak gunakan dalam fail .env. Sebagai contoh, anda boleh menetapkan AWS_URL, yang berguna untuk menggunakan awan storan fail lain dengan API yang serasi S3, seperti CloudFlare's R2 atau Digital Ocean's Spaces.

Konfigurasi AWS

Dalam AWS, anda perlu melakukan dua perkara:

  • Buat baldi dalam perkhidmatan S3

  • Buat pengguna IAM untuk mendapatkan Kunci dan Kunci Rahsia, kemudian lampirkan dasar kepada pengguna untuk membenarkan akses kepada API S3.

Seperti mana-mana dalam AWS, mencipta baldi dalam S3 memerlukan melihat banyak pilihan konfigurasi dan tertanya-tanya sama ada anda memerlukan mana-mana daripadanya. Untuk kebanyakan kes penggunaan, anda tidak perlu!

Pergi ke konsol S3, buat nama baldi (ia mestilah unik di peringkat global, bukan hanya unik untuk akaun AWS anda), pilih kawasan yang anda beroperasi dan biarkan semua lalai (termasuk menandakan "Sekat awam akses kawasan tetapan").

Sesetengah daripada pilihan ini adalah pilihan yang anda mungkin mahu gunakan, tetapi anda boleh memilihnya kemudian.

Selepas mencipta baldi, kami memerlukan kebenaran untuk melakukan operasi ke atasnya. Katakan kita mencipta baldi yang dipanggil baldi-saya-hebat.

Kami boleh mencipta pengguna IAM, pilih "Akses Terprogram", tetapi jangan lampirkan sebarang dasar atau tetapkan perkara lain. Pastikan anda merekodkan kekunci akses rahsia kerana ia hanya akan dipaparkan sekali.

Saya mencipta video yang menunjukkan proses mencipta baldi dan menyediakan kebenaran IAM di sini: www.youtube.com/watch?v=FLIp6BLtwj...

LawatiAccess Key dan Secret Access Key hendaklah diletakkan di dalam fail .env anda.

Seterusnya, klik pada pengguna IAM dan tambahkan dasar sebaris. Editnya menggunakan editor JSON dan tambahkan yang berikut (daripada dokumentasi Flysystem):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1420044805001",
            "Effect": "Allow",
            "Action": [
                "s3:ListBuckets",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:ReplicateObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-awesome-bucket",
                "arn:aws:s3:::my-awesome-bucket/*"
            ]
        }
    ]
}

Ini membolehkan kami melaksanakan operasi API S3 yang diperlukan pada baldi baharu kami.

Penggunaan Laravel

Dalam Laravel anda boleh menggunakan storan fail seperti ini:

# 如果您将 S3 设置为默认值:
$contents = Storage::get('path/to/file.ext');
Storage::put('path/to/file.ext', 'some-content');
# 如果您没有将 S3 作为默认设置:
$contents = Storage::disk('s3')->get('path/to/file.ext');
Storage::disk('s3')->put('path/to/file.ext', 'some-content');

Laluan ke fail (dalam S3) dilampirkan pada nama baldi , jadi fail bernama path/to/file.ext akan wujud di s3://my-awesome-bucket/path/to/file.ext`.

Secara teknikal, direktori tidak wujud dalam S3. Dalam S3, fail dipanggil "objek" dan nama laluan fail ialah "kunci objek". Jadi, dalam baldi my-awesome-bucket, kami baru sahaja mencipta objek dengan laluan utama/to/file.ext.

Pastikan anda menyemak dokumentasi Laravel untuk Storan untuk mencari cara yang lebih berguna untuk menggunakan Storan, termasuk strim fail dan URL sementara.

Harga

S3 agak murah – kebanyakan kita akan membelanjakan antara beberapa sen dan beberapa dolar sebulan. Ini benar terutamanya jika anda memadamkan fail daripada S3 apabila anda selesai menggunakannya, atau menyediakan peraturan kitaran hayat untuk memadam fail selepas tempoh masa yang ditetapkan.

Harga adalah (terutamanya) didorong oleh 3 dimensi. Harga berbeza mengikut wilayah dan penggunaan. Berikut ialah contoh penggunaan aplikasi sebenar berdasarkan bulan tertentu Chipper CI (CI untuk aplikasi Laravel saya), yang menyimpan sejumlah besar data dalam S3:

  • Storan : $0.023 setiap GB, ~992GB ~= $22.82

  • Bilangan panggilan API: ~7 juta permintaan ~ = $12

  • Penggunaan lebar jalur: Ini sangat tidak tepat. Pemindahan data berharga kira-kira $23, tetapi ini tidak termasuk caj lebar jalur berasaskan EC2.

Maklumat berguna tentang S3

Jika persediaan AWS anda mempunyai pelayan dalam rangkaian peribadi dan menggunakan get laluan NAT, pastikan anda mencipta titik akhir S3 (jenis get laluan) . Ini dilakukan dalam bahagian Titik Akhir perkhidmatan VPC. Ini membenarkan panggilan ke/dari S3 untuk memintas get laluan NAT, sekali gus mengelakkan caj lebar jalur tambahan. Tiada kos tambahan untuk menggunakannya.

Jika anda bimbang tentang fail ditimpa atau dipadamkan, pertimbangkan untuk mendayakan versi dalam baldi S3 anda

Pertimbangkan untuk mendayakan Tiering Pintar dalam baldi S3 anda untuk membantu menjimatkan wang anda pada Kos menyimpan fail yang mungkin tidak dapat berinteraksi lagi selepas menjadi tua

Sila ambil perhatian bahawa memadam baldi besar (banyak fail) boleh menyebabkan kos! Ini disebabkan oleh bilangan besar panggilan API yang perlu anda buat untuk memadamkan fail.

Cadangan berkaitan: Tutorial video Laravel

Atas ialah kandungan terperinci Kuasai sepenuhnya penggunaan AWS S3 dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Apakah keburukan laravelArtikel seterusnya:Apakah keburukan laravel