Rumah > Artikel > rangka kerja php > Kuasai sepenuhnya penggunaan AWS S3 dalam Laravel
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.
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!
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.
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.
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.
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.
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!