Arsip Tag: S3 Storage

Konfigurasi S3 Filesystems Laravel

Adakalanya kita ingin menyimpan berkas instalasi Laravel terpisah dengan berkas hasil unggahan baik itu berupa Gambar, Video atau format berkas lainnya.

Selain FTP laravel juga menyediakan jenis filesystems S3 (Simple Storage Service) atau lebih dikenal dengan AWS S3 atau Object Storage. Sebelum ke tahap installasi dan konfigurasi, berikut daftar Endpoint S3 di Indonesia:

  1. Neva Object : https://s3.nevaobjects.id
  2. IDCloudHost : https://is3.cloudhost.id
  3. CloudKilat : http://s3-id-jkt-1.kilatstorage.id
  4. Neo Object : https://nos.wjv-1.neo.id
  5. Ada yang lain?

Install aws-sdk-php

Tambahkan paket yang dibutuhkan untuk menghubungkan Laravel dengan S3 object storage.

composer require aws/aws-sdk-php

Modifikasi .env

AWS_ACCESS_KEY_ID = YXXXXXXXXXXN
AWS_SECRET_ACCESS_KEY = LXXXXXXXXXXXXXXXXXXXXXXXXXXXK
AWS_ENDPOINT = https://is3.cloudhost.id
AWS_DEFAULT_REGION = id
AWS_BUCKET = namabucket
AWS_URL = https://is3.cloudhost.id/namabucket
AWS_USE_PATH_STYLE_ENDPOINT = true

Apabalia lokasi endpoint (atau yang disebutkan di atas) berada di wilayah Indonesia AWS_DEFAULT_REGION setel ke id. Sesuaikan dengan dokumentasi penyedia.

Ketika AWS_USE_PATH_STYLE_ENDPOINT disetel ke true maka format url berupa : http://endpoint/namabucket/ sedangkan false http://namabucket.endpoint/.

Disable http => ['verify' => false] supaya dapat menghubungkan ke S3 dengan protokol tidak aman http://. Berguna saat pengembangan dan curl.cainfo pada php.ini tidak diatur.

config/filesystems.php
<?php

return [
    'default' => env('FILESYSTEM_DISK', 'local'),
    
    'disks' => [
        '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),
            'throw' => false,
            'http' => [
                'verify' => false,
            ],
        ],
    ],
    
    'links' => [
        public_path('storage') => storage_path('app/public'),
    ],
];

Itulah cara konfigurasi Filesystems S3 di Laravel.