Leon Sastra
Leon Sastra Seorang pemuda yang sangat tertarik untuk mempelajari dunia IT terutama bidang Cloud Computing Sys/Dev/Ops. Bio lengkap saya dapat dilihat pada https://leonsastra.my.id/

Cara Menggunakan S3 menggunakan PHP AWS-SDK


Cara Menggunakan S3 menggunakan PHP AWS-SDK

Mulai secara cepat menggunakan AWS dengan SDK AWS untuk PHP. SDK adalah perpustakaan PHP open source yang modern, yang memudahkan untuk mengintegrasikan aplikasi PHP Anda dengan layanan AWS seperti Amazon S3, Amazon Glacier, dan Amazon DynamoDB.

Pada post ini saya ingin berbagi source code yang biasanya saya gunakan untuk melakukan integrasi S3 dengan PHP AWS-SDK.

Terdapat beberapa code dasar yang ingin saya bagikan yaitu:

  • Koneksi S3
  • Create Bucket
  • Listing Bucket
  • Upload Object
  • Delete Object
  • Contoh Full Code

Sebelum kita mulai ke topik pembahasan, silakan untuk dipersiapkan dulu requirement untuk menjalankan S3 PHP SDK ini:

  • PHP >=7.0
  • composer ( https://getcomposer.org/download/ )
  • Module aws-sdk-php ( https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html )

Anda bisa melakukan instalasi PHP menggunakan panduan yang telah kami sediakan berikut ini:

Perlu dicatat untuk melakukan define composer autoloader pada code yang dibuat:

1
2
3
require'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

Koneksi S3

Berikut adalah code untuk koneksi PHP ke layanan S3 :

1
2
3
4
5
6
7
8
9
$client = S3Client::factory([
    'version' => 'latest',
    'region'  => 'id-jkt-1',
    'endpoint' => 'http://ENDPOINT-S3-ANDA',
    'credentials' => [
        'key'    => "KEY-S3-ANDA",
        'secret' => "SECRET-KEY-S3-ANDA"
    ]
 ]);

Create Bucket

Berikut adalah contoh code untuk melakukan create bucket menggunakan PHP SDK:

1
2
3
4
5
6
7
try {
    $result = $client->createBucket([
	'Bucket' => 'BERI-NAMA-BUCKET-DISINI',
    ]);
} catch (S3Exception $e) {
    echo $e->getMessage();
}

Listing Bucket

Berikut adalah contoh code untuk melakukan listing semua bucket yang berada pada layanan S3 menggunakan PHP SDK:

1
2
3
4
5
6
7
8
try {
    $buckets = $client->listBuckets();
    foreach ($buckets['Buckets'] as $bucket) {
	echo $bucket['Name'] . "\n";
	}
} catch (S3Exception $e) {
    echo $e->getMessage();
}

Upload Object

Berikut adalah contoh code untuk melakukan upload object dari device Anda ke layanan S3 menggunakan PHP SDK:

1
2
3
4
5
6
7
8
9
10
11
12
try {
    $client->putObject([
        'Bucket'     =>'NAMA-BUCKET-ANDA',
        'Key'        => 'NAMA-OBJEK-YANG-AKAN-DITERAPKAN',
        'ContentType' => 'image/png', // menyesuaikan dengan konten yang ingin diupload
        'SourceFile' => 'LOKASI-FILE',    // like /var/www/vhosts/mysite/file.csv
        'ACL'        => 'public-read', //public-read atau private
    ]);
} catch (S3Exception $e) {
    // Catch an S3 specific exception.
    echo $e->getMessage();
}

Delete Object

Berikut adalah contoh code untuk melakukan delete object yang berada pada layanan S3 menggunakan PHP SDK:

1
2
3
4
5
6
7
8
try {
    $result = $client->deleteObject([
        'Bucket' => 'NAMA-BUCKET-ANDA',
        'Key' => 'NAMA-OBJEK-ANDA',
    ]);
} catch (S3Exception $e) {
    echo $e->getMessage();
}

Contoh Full Code

Kurang lengkap rasanya jika tidak memberikan contoh full dari code yang sudah saya bagikan diatas, berikut adalah contoh penggunaan PHP SDK sebagai uploader menggunakan HTML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
require'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

if(isset($_FILES['image'])){
        $file_name = $_FILES['image']['name'];
        $temp_file_location = $_FILES['image']['tmp_name'];

$client = S3Client::factory([
    'version' => 'latest',
    'region'  => 'id-jkt-1',
    'endpoint' => 'http://ENDPOINT-S3-ANDA',
    'credentials' => [
        'key'    => "KEY-S3-ANDA",
        'secret' => "SECRET-KEY-S3-ANDA"
    ]
 ]);

try {
    $client->putObject([
        'Bucket'     =>'NAMA-BUCKET-ANDA',
        'Key'        => $file_name,
        'ContentType' => 'image/png',
        'SourceFile' => $temp_file_location,    // like /var/www/vhosts/mysite/file.csv
        'ACL'        => 'public-read',
    ]);
} catch (S3Exception $e) {
    // Catch an S3 specific exception.
    echo $e->getMessage();
}
}
?>
<html>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit"/>
</form>
</html>

Selesai

Selamat mencoba dan semoga bermanfaat.

comments powered by Disqus