All Products
Search
Document Center

Object Storage Service:OSS SDK for PHP 2.0

Last Updated:Jun 03, 2026

GitHubPanduan Pengembang OSS SDK for PHP 2.0Rilis SDK

Integrasi cepat

Prasyarat

Memerlukan PHP 7.4+ dan Composer untuk manajemen paket.

Jalankan perintah php -version untuk memeriksa versi PHP. Jika PHP belum terinstal atau versinya lebih lama dari 7.4, unduh dan instal PHP.

Instal SDK

  1. Buat direktori proyek dan jalankan perintah berikut untuk menginstal OSS SDK for PHP 2.0 melalui Composer. Gunakan versi terbaru agar kompatibel dengan kode contoh.

    mkdir oss-php-example && cd oss-php-example && composer require alibabacloud/oss-v2
  2. Impor paket OSS SDK for PHP 2.0:

    require_once __DIR__ . '/../vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;

Konfigurasi kredensial akses

Konfigurasikan kredensial akses menggunakan pasangan AccessKey pengguna RAM.

  1. Di Konsol RAM, buat pengguna RAM dengan AccessKey Pair permanen. Simpan pasangan AccessKey tersebut dan berikan izin AliyunOSSFullAccess kepada pengguna RAM.

  2. Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.

    Linux

    1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.bashrc.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
      1. Jalankan perintah berikut untuk menerapkan perubahan.

        source ~/.bashrc
      2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Jalankan perintah berikut di terminal untuk melihat jenis shell default.

      echo $SHELL
      1. Lakukan langkah-langkah berikut berdasarkan jenis shell default.

        Zsh

        1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.zshrc.

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
        2. Jalankan perintah berikut untuk menerapkan perubahan.

          source ~/.zshrc
        3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

        Bash

        1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.bash_profile.

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
        2. Jalankan perintah berikut untuk menerapkan perubahan.

          source ~/.bash_profile
        3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Jalankan perintah berikut di jendela Command Prompt.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
      1. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Jalankan perintah berikut di PowerShell.

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      1. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

Inisialisasi klien

Penting

Karena adanya perubahan kebijakan untuk meningkatkan kepatuhan dan keamanan, mulai 20 Maret 2025, pengguna OSS baru harus menggunakan nama domain kustom (CNAME) untuk melakukan operasi API data pada bucket OSS yang berada di wilayah daratan Tiongkok. Titik akhir publik default dibatasi untuk operasi ini. Lihat pengumuman resmi untuk daftar lengkap operasi yang terdampak. Jika Anda mengakses data melalui HTTPS, Anda harus menyambungkan Sertifikat SSL yang valid ke domain kustom Anda. Ini wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.

Sebelum menjalankan kode contoh, ganti placeholder seperti <region-id> dengan wilayah dan titik akhir aktual Anda, misalnya ap-southeast-1.
<?php

/**
 * Panduan lengkap konfigurasi klien OSS SDK for PHP 2.0
 *
 * ===========================================
 * Konfigurasi signature V4 dan wilayah
 * ===========================================
 * • OSS SDK for PHP 2.0 menggunakan algoritma signature V4 secara default.
 * • Anda harus menentukan ID wilayah Alibaba Cloud saat menginisialisasi klien.
 * • Untuk daftar ID wilayah, lihat Wilayah dan titik akhir.
 *
 * ===========================================
 * Konfigurasi titik akhir
 * ===========================================
 * • SDK memungkinkan Anda menyesuaikan titik akhir layanan dengan menggunakan parameter endpoint.
 * • Jika Anda mengabaikan titik akhir, SDK secara otomatis membuat titik akhir publik dari informasi wilayah.
 * • Misalnya, jika wilayahnya adalah '<region-id>', titik akhir yang dibuat adalah 'https://oss-<region-id>.aliyuncs.com'.
 *
 * ===========================================
 * Pemilihan protokol
 * ===========================================
 * • SDK menggunakan HTTPS secara default untuk membuat titik akhir, yang merupakan protokol yang direkomendasikan.
 * • Untuk menggunakan protokol HTTP, sertakan http:// dalam titik akhir.
 * • Contoh HTTPS: 'https://oss-<region-id>.aliyuncs.com'
 * • Contoh HTTP: 'http://oss-<region-id>.aliyuncs.com'
 */

// Impor autoloader untuk memuat dependensi dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// EnvironmentVariableCredentialsProvider membaca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);

// Metode 1: Tentukan hanya wilayah (direkomendasikan). SDK secara otomatis membuat titik akhir HTTPS.
$cfg->setRegion(region: "<region-id>");

// // Metode 2: Tentukan wilayah dan titik akhir.
// $cfg->setRegion(region: '<region-id>')->setEndpoint(endpoint: 'https://oss-<region-id>.aliyuncs.com');

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Data yang akan diunggah.
$data = 'Hello OSS';

// Buat objek PutObjectRequest untuk mengunggah objek.
$request = new Oss\Models\PutObjectRequest(
                bucket: "Your Bucket Name",
                key: "Your Object Key",
            );
$request->body = Oss\Utils::streamFor($data); // Atur badan permintaan menjadi aliran data.

// Lakukan operasi unggah.
$result = $client->putObject($request);

// Cetak hasil unggah.
printf(
    'status code: %s' . PHP_EOL . // Kode status HTTP.
    'request id: %s' . PHP_EOL .  // ID permintaan.
    'etag: %s' . PHP_EOL,         // ETag objek.
    $result->statusCode,
    $result->requestId,
    $result->etag
);

Output yang diharapkan saat unggah berhasil:

status code: 200
request id: 687F2BEEDC44E0313527BA07
etag: "F0F18C2C66AE1DD512BDCD4366F76DA3"

Konfigurasi klien

Apa saja konfigurasi klien yang didukung?

Parameter

Deskripsi

Contoh

region

(Wajib) Wilayah tujuan untuk permintaan.

setRegion("<region-id>")

credentialsProvider

(Wajib) Penyedia untuk kredensial akses.

setCredentialsProvider(provider)

endpoint

Titik akhir.

setEndpoint("oss-cn-hanghzou.aliyuncs.com")

retryMaxAttempts

Jumlah maksimum percobaan ulang untuk permintaan HTTP. Nilai default adalah 3.

setRetryMaxAttempts(5)

retryer

Implementasi retry untuk permintaan HTTP.

setRetryer(customRetryer)

connectTimeout

Periode timeout untuk membuat koneksi. Nilai default adalah 10 detik.

setConnectTimeout(5* time.Second)

readWriteTimeout

Periode timeout untuk membaca dan menulis data. Nilai default adalah 20 detik.

setReadWriteTimeout(30 * time.Second)

insecureSkipVerify

Menentukan apakah verifikasi sertifikat SSL dilewati. Secara default, sertifikat SSL diverifikasi.

setInsecureSkipVerify(true)

enabledRedirect

Menentukan apakah pengalihan HTTP diaktifkan. Secara default, fitur ini dinonaktifkan.

setEnabledRedirect(true)

proxyHost

Atur server proxy

setProxyHost(‘http://user:passswd@proxy.example-***.com’)

signatureVersion

Versi signature. Nilai default adalah v4.

setSignatureVersion("v1")

disableSSL

Menentukan apakah menggunakan permintaan HTTPS. Secara default, HTTPS digunakan.

setDisableSSL(true)

usePathStyle

Menentukan apakah menggunakan URL bergaya path. Secara default, URL bergaya virtual hosted digunakan.

setUsePathStyle(true)

useCName

Menentukan apakah menggunakan nama domain kustom. Secara default, nama domain kustom tidak digunakan.

setUseCName(true)

useDualStackEndpoint

Menentukan apakah menggunakan titik akhir dual-stack. Secara default, titik akhir dual-stack tidak digunakan.

setUseDualStackEndpoint(true)

useAccelerateEndpoint

Menentukan apakah menggunakan titik akhir percepatan. Secara default, titik akhir percepatan tidak digunakan.

setUseAccelerateEndpoint(true)

useInternalEndpoint

Menentukan apakah menggunakan titik akhir internal. Secara default, titik akhir internal tidak digunakan.

setUseInternalEndpoint(true)

additionalHeaders

Header permintaan tambahan yang akan ditandatangani. Parameter ini hanya berlaku untuk signature V4.

setAdditionalHeaders([‘content-length’])

userAgent

Informasi User-Agent tambahan.

setUserAgent(‘user identifier’)

Gunakan nama domain kustom

Untuk mengaktifkan pratinjau file di browser dan akselerasi CDN, ikat nama domain kustom ke bucket Anda.

EnvironmentVariableCredentialsProviderID AccessKeyAccessKey SecretsetUseCnametrue<?php

// Sertakan file autoloader untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Gunakan <code data-tag="inlineCode" id="d5d25f3951tix">EnvironmentVariableCredentialsProvider

Kontrol timeout

<?php

// Muat dependensi dari file autoload.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Baca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

# Muat konfigurasi SDK default.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // Atur penyedia kredensial.

$cfg->setRegion(region: "<region-id>");

# Atur timeout koneksi.
$cfg->setConnectTimeout(connectTimeout: 30);

# Atur timeout baca/tulis.
$cfg->setReadwriteTimeout(readwriteTimeout:30);

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya...

Jumlah maksimum percobaan ulang

OSSClient secara default mencoba ulang permintaan yang gagal sebanyak 3 kali.

Untuk skenario konkurensi tinggi atau jaringan tidak stabil, tingkatkan jumlah percobaan ulang dengan setRetryMaxAttempts.

<?php

// Sertakan file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);

$cfg->setRegion(region: "<region-id>");

// Atur jumlah maksimum percobaan untuk permintaan HTTP. Nilai default adalah 3.
$cfg->setRetryMaxAttempts(5);

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya...

Protokol HTTP/HTTPS

Anda dapat menggunakan setDisableSSL(true) untuk menonaktifkan protokol HTTPS.

<?php

// Impor file autoload untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Buat penyedia kredensial yang membaca ID Kunci Akses dan Rahasia Kunci Akses dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Muat konfigurasi default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);

$cfg->setRegion(region: "<region-id>");

// Nonaktifkan SSL.
$cfg->setDisableSSL(true);

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien untuk operasi OSS.

Gunakan korutin dalam framework Swoole

Kode berikut memberikan contoh cara membuat klien OSS yang mendukung korutin berdasarkan framework Swoole.

<?php
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;
use GuzzleHttp\HandlerStack;
use Hyperf\Guzzle\CoroutineHandler;
use function Hyperf\Coroutine\co;

// Konfigurasi klien OSS.
$region = '<region-id>'; // Wilayah OSS.
$bucket = 'bucket-name'; // Bucket tujuan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Muat kredensial dari variabel lingkungan.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion(region: $region); // Atur wilayah.
$cfg->setEndpoint(endpoint: 'http://oss-<region-id>.aliyuncs.com'); // Atur titik akhir.

// Buat klien OSS yang mendukung korutin.
$client = new Oss\Client(config: $cfg, options: ['handler' => HandlerStack::create(handler: new CoroutineHandler())]);

// Tugas korutin 1: Unggah swoole.txt.
co(function () use ($client, $bucket) {
    try {
        $key = 'swoole.txt'; // Nama objek.
        $data = 'Hello OSS'; // Konten objek.
        $request = new Oss\Models\PutObjectRequest($bucket, $key); // Buat permintaan unggah.
        $request->body = Oss\Utils::streamFor($data); // Atur badan permintaan.
        $result = $client->putObject(request: $request); // Lakukan unggah.
        echo "Hasil Tugas 1:\n" . var_export($result, true) . "\n"; // Cetak hasil.
    } catch (\Exception $e) {
        echo "Kesalahan Tugas 1: " . $e->getMessage() . "\n"; // Tangkap pengecualian.
    }
});

// Tugas korutin 2: Unggah hyperf.txt.
co(function () use ($client, $bucket) {
    try {
        $key = 'hyperf.txt'; // Nama objek.
        $data = 'Hello OSS'; // Konten objek.
        $request = new Oss\Models\PutObjectRequest($bucket, $key); // Buat permintaan unggah.
        $request->body = Oss\Utils::streamFor($data); // Atur badan permintaan.
        $result = $client->putObject($request); // Lakukan unggah.
        echo "Hasil Tugas 2:\n" . var_export($result, true) . "\n"; // Cetak hasil.
    } catch (\Exception $e) {
        echo "Kesalahan Tugas 2: " . $e->getMessage() . "\n"; // Tangkap pengecualian.
    }
});

Gunakan titik akhir internal

Jika aplikasi Anda dideploy pada instans ECS Alibaba Cloud dan perlu sering mengakses sumber daya OSS di wilayah yang sama, Anda dapat menggunakan titik akhir internal untuk mengurangi biaya trafik dan meningkatkan kecepatan akses.

<?php

// Sertakan file autoload untuk memuat dependensi dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Buat penyedia kredensial yang membaca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);

// Metode 1: Tentukan wilayah dan atur setUseInternalEndpoint ke true.
$cfg->setRegion('<region-id>')->setUseInternalEndpoint(true);

// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan titik akhir internal untuk wilayah tempat bucket berada.
// // Untuk menggunakan protokol HTTP, atur titik akhir ke 'http://oss-<region-id>-internal.aliyuncs.com'.
// $cfg->setRegion('<region-id>')->setEndpoint('https://oss-<region-id>-internal.aliyuncs.com');

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya...

Gunakan titik akhir percepatan

<?php

// Muat dependensi proyek.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Baca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);

// Metode 1: Tentukan wilayah dan atur setUseAccelerateEndpoint ke true.
$cfg->setRegion('<region-id>')->setUseAccelerateEndpoint(true);

// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan titik akhir percepatan regional.
// $cfg->setRegion('<region-id>')->setEndpoint('https://oss-accelerate.aliyuncs.com');

// Buat klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien ini untuk operasi selanjutnya.

Gunakan domain privat

<?php

// Impor file autoload untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Buat penyedia kredensial yang membaca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);

// Tentukan wilayah dan atur titik akhir ke domain privat Anda.
$cfg->setRegion('<region-id>')->setEndpoint('https://service.corp.example.com');

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya...

Gunakan titik akhir Alibaba Gov Cloud

Kode berikut memberikan contoh cara mengonfigurasi OSSClient menggunakan titik akhir cloud pemerintah.

<?php

// Impor file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // Atur penyedia kredensial.

// Tentukan wilayah tempat bucket berada. Misalnya, untuk Alibaba Gov Cloud 1 China (Beijing), atur wilayah ke cn-north-2-gov-1.
// Tentukan titik akhir internal wilayah bucket. Misalnya, untuk Alibaba Gov Cloud 1 China (Beijing), atur titik akhir ke 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
// Untuk menggunakan protokol HTTP, atur titik akhir ke 'http://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
$cfg->setRegion('cn-north-2-gov-1')->setEndpoint('https://oss-cn-north-2-gov-1-internal.aliyuncs.com');

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya.

Konfigurasi kredensial akses

Pilih metode kredensial berdasarkan kebutuhan autentikasi Anda.

Bagaimana cara memilih kredensial akses?

Metode inisialisasi penyedia kredensial

Skenario

Memerlukan pasangan AccessKey atau token STS yang sudah ada

Kredensial dasar

Periode validitas kredensial

Metode rotasi atau refresh kredensial

Gunakan pasangan AccessKey pengguna RAM

Aplikasi yang dideploy di lingkungan aman dan stabil serta tidak rentan terhadap serangan eksternal. Aplikasi ini memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering.

Ya

Pasangan AccessKey

Jangka panjang

Rotasi manual

Gunakan token STS

Aplikasi yang dideploy di lingkungan tidak tepercaya. Anda ingin mengontrol periode validitas dan izin untuk akses.

Ya

Token STS

Sementara

Penyegaran Manual

Gunakan ARN peran RAM

Aplikasi yang memerlukan akses berwenang ke layanan Alibaba Cloud, seperti akses lintas akun.

Ya

Token STS

Sementara

Auto-refresh

Gunakan peran RAM instans

Aplikasi yang dideploy pada instans ECS Alibaba Cloud, instans ECI, atau node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan ARN peran OIDC

Aplikasi tidak tepercaya yang dideploy pada node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Penyedia kredensial kustom

Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan metode untuk mendapatkan kredensial.

Kustom

Kustom

Kustom

Kustom

Gunakan pasangan AccessKey pengguna RAM

Inisialisasi penyedia kredensial dengan pasangan AccessKey akun Alibaba Cloud atau pengguna RAM. Cocok untuk lingkungan aman yang memerlukan akses OSS jangka panjang tanpa rotasi kredensial yang sering. Metode ini memerlukan pemeliharaan AccessKey secara manual, yang meningkatkan risiko keamanan.

Peringatan
  • Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran pasangan AccessKey menimbulkan risiko keamanan signifikan. Gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan.

  • Untuk informasi lebih lanjut tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan AccessKey dibuat. Anda harus segera menyimpannya. Jika Anda lupa pasangan AccessKey, buat yang baru untuk rotasi.

Variabel lingkungan

  1. Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.

    Linux

    1. Jalankan perintah berikut di CLI untuk menambahkan konfigurasi variabel lingkungan ke file ~/.bashrc:

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
      1. Terapkan perubahan.

        source ~/.bashrc
      2. Periksa apakah variabel lingkungan telah berlaku:

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Jalankan perintah berikut di terminal untuk melihat jenis shell default:

      echo $SHELL
      1. Konfigurasikan variabel lingkungan berdasarkan jenis shell default.

        Zsh

        1. Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file ~/.zshrc:

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
        2. Terapkan perubahan.

          source ~/.zshrc
        3. Periksa apakah variabel lingkungan telah berlaku:

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

        Bash

        1. Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file ~/.bash_profile:

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
        2. Terapkan perubahan.

          source ~/.bash_profile
        3. Periksa apakah variabel lingkungan telah berlaku:

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Jalankan perintah berikut di CMD:

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
      1. Periksa apakah variabel lingkungan berlaku:

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Jalankan perintah berikut di PowerShell:

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      1. Periksa apakah variabel lingkungan berlaku:

        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  2. Mulai ulang lingkungan pengembangan Anda (IDE, terminal, layanan backend) setelah memodifikasi variabel lingkungan untuk memuat nilai baru.

  3. Gunakan variabel lingkungan untuk meneruskan informasi kredensial.

    <?php
    
    // Sertakan file autoload untuk memastikan dependensi dimuat dengan benar.
    require_once __DIR__ . '/../vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    
    $region = "<region-id>";
    
    // Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
    $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
    
    // Gunakan konfigurasi SDK default.
    $cfg = Oss\Config::loadDefault();
    $cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
    $cfg->setRegion($region); // Atur wilayah bucket.
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Gunakan klien yang dibuat untuk operasi selanjutnya...

Kredensial statis

Kode contoh berikut menunjukkan cara menyematkan kredensial akses dengan secara eksplisit mengatur pasangan AccessKey yang akan digunakan.

Peringatan

Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.

<?php

// Sertakan file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$region = "<region-id>";

# Buat penyedia kredensial statis dan atur ID AccessKey dan rahasia AccessKey pengguna RAM Anda.
$credentialsProvider = new Oss\Credentials\StaticCredentialsProvider("RAM AccessKey ID","RAM AccessKey Secret");

// Gunakan konfigurasi SDK default.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah bucket.

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya...

Gunakan token STS

Jika aplikasi Anda memerlukan akses sementara ke OSS, Anda dapat menginisialisasi penyedia kredensial menggunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token Layanan Keamanan (STS)) yang diperoleh dari STS. Perhatikan bahwa metode ini memerlukan Anda untuk memelihara token STS secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Selain itu, jika Anda ingin mengakses OSS secara sementara beberapa kali, Anda harus merefresh token STS secara manual.

Penting
  • Untuk segera mendapatkan token STS menggunakan OpenAPI, lihat AssumeRole.

  • Untuk mendapatkan token STS menggunakan SDK, lihat Gunakan token STS untuk mengakses OSS.

  • Perhatikan bahwa token STS memiliki waktu kedaluwarsa yang ditentukan saat token dihasilkan. Setelah token kedaluwarsa, token tersebut menjadi tidak valid dan tidak dapat digunakan.

  • Untuk daftar titik akhir layanan STS, lihat Titik akhir STS.

Variabel lingkungan

  1. Atur variabel lingkungan menggunakan kredensial identitas sementara.

    Mac OS X/Linux/Unix

    Peringatan
    • Gunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token STS) yang diperoleh dari STS. Jangan gunakan pasangan AccessKey pengguna RAM.

    • Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan "STS", misalnya, "STS.****************".

    export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>

    Windows

    Peringatan
    • Gunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token STS) yang diperoleh dari STS. Jangan gunakan pasangan AccessKey pengguna RAM.

    • Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan "STS", misalnya, "STS.****************".

    set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>
  2. Teruskan informasi kredensial menggunakan variabel lingkungan.

    <?php
    
    // Impor file autoload untuk memastikan dependensi dimuat dengan benar.
    require_once __DIR__ . '/../vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    
    $region = "<region-id>";
    
    // Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey, rahasia AccessKey, dan token keamanan dari variabel lingkungan.
    $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
    
    // Gunakan konfigurasi SDK default.
    $cfg = Oss\Config::loadDefault();
    $cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
    $cfg->setRegion($region); // Atur wilayah tempat bucket berada.
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Gunakan klien yang dibuat untuk operasi selanjutnya...

Kredensial statis

Anda dapat menyematkan kredensial dalam aplikasi Anda dengan secara eksplisit mengatur pasangan AccessKey sementara yang akan digunakan.

Peringatan

Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.

<?php

// Impor file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$region = "<region-id>";

# Tentukan ID AccessKey dan rahasia AccessKey sementara Anda. Jangan gunakan pasangan AccessKey akun Alibaba Cloud Anda.
# ID AccessKey dari STS diawali dengan "STS.".
$stsAccessKeyId = 'STS.****************';
$stsAccessKeySecret = 'yourAccessKeySecret';
# Tentukan token keamanan Anda.
$stsSecurityToken = 'yourSecurityToken';

# Buat penyedia kredensial statis dan atur secara eksplisit ID AccessKey sementara, rahasia AccessKey, dan token keamanan.
$credentialsProvider = new Oss\Credentials\StaticCredentialsProvider($stsAccessKeyId, $stsAccessKeySecret, $stsSecurityToken);

// Gunakan konfigurasi SDK default.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya...

Gunakan ARN peran RAM

Untuk akses lintas akun atau otorisasi delegasi, inisialisasi penyedia kredensial dengan ARN peran RAM. Alat Credentials secara otomatis memperoleh dan merefresh token STS dengan memanggil AssumeRole. Anda dapat secara opsional menetapkan parameter policy untuk membatasi izin peran tersebut.

Penting
  • Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran pasangan AccessKey menimbulkan risiko keamanan signifikan. Gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan.

  • Untuk informasi lebih lanjut tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan AccessKey dibuat. Anda harus segera menyimpannya. Jika Anda lupa pasangan AccessKey, buat yang baru untuk rotasi.

  • Untuk informasi lebih lanjut tentang cara memperoleh ARN peran RAM, lihat CreateRole.

  1. Tambahkan pustaka kredensial Alibaba Cloud credentials-php.

    composer require alibabacloud/credentials
  2. Konfigurasikan pasangan AccessKey dan ARN peran RAM sebagai kredensial akses.

    <?php
    
    // Sertakan file autoload untuk memastikan dependensi dimuat dengan benar.
    require_once __DIR__ . '/../vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    use AlibabaCloud\Credentials\Credential;
    
    // Buat objek konfigurasi untuk menentukan jenis kredensial dan informasi terkait.
    $config = new Credential\Config([
        // Tentukan jenis kredensial. Dalam contoh ini, digunakan jenis ARN peran RAM.
        'type' => 'ram_role_arn',
    
        // ID AccessKey akun Alibaba Cloud.
        'accessKeyId' => 'AccessKeyId',
    
        // Rahasia AccessKey akun Alibaba Cloud.
        'accessKeySecret' => 'AccessKeySecret',
    
        // ARN peran RAM. Contoh: acs:ram::USER_Id:role/ROLE_NAME.
        'roleArn' => 'RoleArn',
    
        // Nama sesi peran, digunakan untuk mengidentifikasi sesi.
        'roleSessionName' => 'yourRoleSessionName',
    
        // Opsional. Kebijakan yang digunakan untuk membatasi izin token STS.
        'policy' => 'Policy',
    ]);
    
    // Inisialisasi instans kredensial dengan objek konfigurasi.
    $credential = new Credential($config);
    
    // Muat konfigurasi SDK default.
    $cfg = Oss\Config::loadDefault();
    
    // Atur penyedia kredensial untuk menghasilkan kredensial secara dinamis dengan fungsi callback.
    $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) {
        // Peroleh kredensial sementara (token STS).
        $cred = $credential->getCredential();
    
        // Kembalikan objek kredensial yang berisi ID AccessKey, rahasia AccessKey, dan token keamanan.
        return new Oss\Credentials\Credentials(
            accessKeyId: $cred->getAccessKeyId(),       // ID AccessKey sementara.
            accessKeySecret: $cred->getAccessKeySecret(),   // Rahasia AccessKey sementara.
            securityToken: $cred->getSecurityToken()      // Token keamanan (token STS).
        );
    }));
    
    $region = '<region-id>';
    $cfg->setRegion($region);
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Gunakan klien untuk operasi selanjutnya...

Gunakan peran RAM instans

Untuk aplikasi pada instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes, gunakan peran RAM instans. Metode ini secara otomatis merefresh token STS dalam instans Container Service for Kubernetes Anda tanpa memerlukan pasangan AccessKey. CreateRole.

  1. Tambahkan pustaka kredensial Alibaba Cloud credentials-php.

    composer require alibabacloud/credentials
  2. Konfigurasikan peran RAM instans sebagai kredensial akses.

    <?php
    
    // Impor file autoload untuk memastikan dependensi dimuat dengan benar.
    require_once 'vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    use AlibabaCloud\Credentials\Credential;
    
    // Buat objek konfigurasi untuk jenis kredensial.
    $config = new Credential\Config([
        // Atur jenis kredensial. Untuk peran RAM instans, nilai ini harus 'ecs_ram_role'.
        'type' => 'ecs_ram_role',
    
        // Nama peran RAM yang dilampirkan ke instans.
        'roleName' => "<role_name>",  // Ganti dengan nama peran RAM aktual Anda.
    ]);
    
    // Inisialisasi instans kredensial.
    $credential = new Credential($config);
    
    // Muat konfigurasi OSS default.
    $cfg = Oss\Config::loadDefault();
    
    // Atur penyedia kredensial ke fungsi yang menghasilkan kredensial secara dinamis.
    $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) {
        // Dapatkan token STS sementara.
        $cred = $credential->getCredential();
    
        // Kembalikan objek kredensial baru dengan ID AccessKey, rahasia AccessKey, dan token keamanan.
        return new Oss\Credentials\Credentials(
            accessKeyId: $cred->getAccessKeyId(),       // ID AccessKey sementara
            accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara
            securityToken: $cred->getSecurityToken()   // Token keamanan
        );
    }));
    
    $region = '<region-id>';
    $cfg->setRegion($region);
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Gunakan klien yang dibuat untuk operasi selanjutnya...
    

Gunakan ARN peran OIDC

Untuk aplikasi tidak tepercaya dalam pod Container Service for Kubernetes (ACK) yang tidak boleh mengakses peran RAM instans node pekerja, gunakan RAM Roles for Service Account (RRSA). ACK memasang file token OIDC per pod dan menyuntikkan konfigurasi ke variabel lingkungan. Alat Credentials membaca variabel ini dan memanggil AssumeRoleWithOIDC untuk memperoleh token STS dengan izin minimal. Tidak diperlukan pasangan AccessKey. Gunakan RRSA untuk mengonfigurasi izin RAM untuk ServiceAccount dan mengisolasi izin pod.

  1. Tambahkan pustaka kredensial Alibaba Cloud credentials-php.

    composer require alibabacloud/credentials
  1. Konfigurasikan ARN peran OIDC sebagai kredensial akses.

    <?php
    
    // Muat dependensi dari file autoload.
    require_once 'vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    use AlibabaCloud\Credentials\Credential;
    
    // Buat objek konfigurasi untuk menentukan jenis kredensial dan informasi terkait.
    $config = new Credential\Config([
        // Tentukan jenis kredensial. Dalam contoh ini, digunakan jenis oidc_role_arn.
        'type' => 'oidc_role_arn',
    
        // Tentukan ARN penyedia identitas OIDC. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
        'oidcProviderArn' => '<oidc_provider_arn>',  // Ganti dengan ARN penyedia identitas OIDC aktual.
    
        // Tentukan path file token OIDC. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
        'oidcTokenFilePath' => '<oidc_token_file_path>',  // Ganti dengan path file token OIDC aktual.
    
        // Tentukan ARN peran RAM. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
        'roleArn' => '<role_arn>',  // Ganti dengan ARN peran RAM aktual.
    
        // Tentukan nama sesi peran. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
        'roleSessionName' => '<role_session_name>',  // Ganti dengan nama sesi peran aktual.
    
        // Opsional: Tentukan kebijakan izin untuk membatasi lebih lanjut izin peran RAM.
        // Contoh kebijakan: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
        'policy' => '',  // Untuk membatasi izin, ganti ini dengan string JSON kebijakan aktual.
    
        // Opsional: Tentukan periode validitas sesi dalam detik. Nilai default adalah 3.600 detik.
        'roleSessionExpiration' => 3600,  // Untuk menyesuaikan periode validitas, ubah nilai ini.
    ]);
    
    // Inisialisasi instans kredensial menggunakan objek konfigurasi.
    $credential = new Credential($config);
    
    // Muat konfigurasi default dan peroleh objek konfigurasi OSS.
    $cfg = Oss\Config::loadDefault();
    
    // Atur penyedia kredensial yang menggunakan fungsi callback untuk menghasilkan kredensial secara dinamis.
    $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) {
        // Peroleh kredensial sementara (token STS).
        $cred = $credential->getCredential();
    
        // Kembalikan objek kredensial yang berisi ID AccessKey, rahasia AccessKey, dan token keamanan.
        return new Oss\Credentials\Credentials(
            accessKeyId: $cred->getAccessKeyId(),       // ID AccessKey sementara.
            accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara.
            securityToken: $cred->getSecurityToken()   // Token keamanan (token STS).
        );
    }));
    
    $region = '<region-id>';
    $cfg->setRegion($region);
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Gunakan klien yang dibuat untuk operasi selanjutnya...

Gunakan kredensial akses kustom

Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan metode untuk memperoleh kredensial. SDK mendukung berbagai metode implementasi.

  1. Gunakan Oss\Credentials\CredentialsProviderFunc

    Oss\Credentials\CredentialsProviderFunc adalah pembungkus kemudahan penggunaan untuk Oss\Credentials\CredentialsProvider.

    <?php
    
    // Impor file autoload untuk memastikan dependensi dimuat dengan benar.
    require_once 'vendor/autoload.php';
    
    // Impor namespace yang diperlukan.
    use AlibabaCloud\Oss\V2 as Oss;
    use AlibabaCloud\Oss\V2\Credentials\Credentials;
    
    // Buat penyedia kredensial yang menghasilkan kredensial secara dinamis menggunakan fungsi anonim.
    $provider = new Oss\Credentials\CredentialsProviderFunc(
        function () {
            // Kembalikan kredensial jangka panjang, yang hanya berisi ID AccessKey dan rahasia AccessKey.
            return new Credentials(
                accessKeyId: 'id',         // Ganti dengan ID AccessKey RAM aktual.
                accessKeySecret: 'secret'  // Ganti dengan rahasia AccessKey RAM aktual.
            );
    
            // Untuk mengembalikan kredensial sementara, yang mencakup token keamanan, hapus komentar kode berikut dan ganti nilainya.
            /*
            return new Credentials(
                accessKeyId: 'id',          // Ganti dengan ID kredensial sementara STS aktual.
                accessKeySecret: 'secret', // Ganti dengan rahasia kredensial sementara STS aktual.
                securityToken: 'token'     // Ganti dengan token keamanan STS aktual.
            );
            */
        }
    );
    
    // Muat konfigurasi default dan peroleh objek konfigurasi OSS.
    $cfg = Oss\Config::loadDefault();
    
    // Atur penyedia kredensial ke penyedia yang dihasilkan secara dinamis.
    $cfg->setCredentialsProvider($provider);
    
    $region = '<region-id>';
    $cfg->setRegion($region);
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Gunakan klien yang dibuat untuk operasi selanjutnya...
    
  2. Implementasikan Oss\Credentials\CredentialsProvider

    <?php
    
    // Impor file autoload untuk memastikan dependensi dimuat dengan benar.
    require_once 'vendor/autoload.php';
    
    // Impor namespace yang diperlukan.
    use AlibabaCloud\Oss\V2 as Oss;
    use AlibabaCloud\Oss\V2\Credentials\Credentials;
    
    // Kelas penyedia kredensial kustom yang mengimplementasikan antarmuka CredentialsProvider.
    class CustomerCredentialsProvider implements Oss\Credentials\CredentialsProvider
    {
        /**
         * Mendapatkan objek kredensial.
         *
         * @return Credentials Mengembalikan objek kredensial.
         */
        public function getCredentials(): Credentials
        {
            // Kembalikan kredensial jangka panjang, yang hanya berisi ID AccessKey dan rahasia AccessKey.
            return new Credentials(
                accessKeyId: 'id',         // Ganti dengan ID AccessKey RAM aktual.
                accessKeySecret: 'secret'  // Ganti dengan rahasia AccessKey RAM aktual.
            );
    
            // Untuk mengembalikan kredensial sementara, yang mencakup token keamanan, hapus komentar kode berikut dan ganti nilainya.
            /*
            return new Credentials(
                accessKeyId: 'id',          // Ganti dengan ID kredensial sementara STS aktual.
                accessKeySecret: 'secret', // Ganti dengan rahasia kredensial sementara STS aktual.
                securityToken: 'token'     // Ganti dengan token keamanan STS aktual.
            );
            */
        }
    }
    
    // Instansiasi penyedia kredensial kustom.
    $provider = new CustomerCredentialsProvider();
    
    // Muat konfigurasi default dan peroleh objek konfigurasi OSS.
    $cfg = Oss\Config::loadDefault();
    
    // Atur penyedia kredensial ke instans penyedia kustom.
    $cfg->setCredentialsProvider($provider);
    
    $region = '<region-id>';
    $cfg->setRegion($region);
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Gunakan klien yang dibuat untuk operasi selanjutnya...
    

Pemecahan masalah kesalahan

Saat terjadi kesalahan, OSS mengembalikan kode status HTTP, pesan, ID permintaan, dan kode kesalahan (EC). Gunakan EC untuk mendiagnosis masalah.

  1. Sebagai contoh, Anda menggunakan kode berikut untuk mengunduh file yang tidak ada.

    <?php
    
    // Impor file autoload untuk memastikan dependensi dimuat dengan benar.
    require_once __DIR__ . '/../vendor/autoload.php';
    
    use AlibabaCloud\Oss\V2 as Oss;
    
    // Definisikan deskripsi untuk argumen baris perintah.
    $optsdesc = [
        "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada (wajib).
        "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir (opsional).
        "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket (wajib).
        "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek (wajib).
    ];
    
    // Konversi deskripsi parameter ke format opsi panjang yang diperlukan oleh getopt.
    // Tanda titik dua ":" setelah setiap parameter menunjukkan bahwa parameter memerlukan nilai.
    $longopts = \array_map(function ($key) {
        return "$key:";
    }, array_keys($optsdesc));
    
    // Uraikan argumen baris perintah.
    $options = getopt("", $longopts);
    
    // Verifikasi bahwa semua parameter wajib tersedia.
    foreach ($optsdesc as $key => $value) {
        if ($value['required'] === True && empty($options[$key])) {
            $help = $value['help']; // Dapatkan informasi bantuan untuk parameter.
            echo "Kesalahan: argumen berikut wajib: --$key, $help" . PHP_EOL;
            exit(1); // Keluar dari program jika parameter wajib hilang.
        }
    }
    
    // Ekstrak nilai dari parameter yang diuraikan.
    $region = $options["region"]; // Wilayah tempat bucket berada.
    $bucket = $options["bucket"]; // Nama bucket.
    $key = $options["key"];       // Nama objek.
    
    // Muat kredensial dari variabel lingkungan.
    // Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
    $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
    
    // Gunakan konfigurasi SDK default.
    $cfg = Oss\Config::loadDefault();
    $cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
    $cfg->setRegion($region); // Atur wilayah tempat bucket berada.
    if (isset($options["endpoint"])) {
        $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
    }
    
    // Buat instans klien OSS.
    $client = new Oss\Client($cfg);
    
    // Buat objek GetObjectRequest untuk mendapatkan konten objek tertentu.
    $request = new Oss\Models\GetObjectRequest(bucket: $bucket, key: $key);
    
    // Lakukan operasi get object.
    $result = $client->getObject($request);
    
    // Definisikan path file lokal untuk menyimpan konten.
    $localFilePath = './test/file.txt'; // Ganti dengan path file aktual.
    
    // Tulis konten ke file lokal.
    file_put_contents( $localFilePath, $result->body->getContents());
    
    // Cetak hasil.
    // Output kode status HTTP, ID permintaan, dan konten objek.
    printf(
        'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan keberhasilan.
        'request id:' . $result->requestId . PHP_EOL  // ID permintaan, digunakan untuk debugging atau pelacakan permintaan.
    );
    
  2. Contoh respons kesalahan. 'EC': '0026-00000001' mengidentifikasi penyebab kesalahan spesifik.

    teyimui@xxx 2051 get_object % php get_object_to_file.php   region cn-hangzhou   bucket xxx
    PHP Fatal error:  Uncaught AlibabaCloud\Oss\V2\Exception\ServiceException: Error returned by Service.
    Http Status Code: 404
    Error Code: NoSuchKey
    Request Id: 687F3B562C1E9331312B1F00
    Message: The specified key does not exist.
    EC: 0026-00000001
    Timestamp: Tue, 22 Jul 2025 07:18:46 GMT
    Request Endpoint: GET https://xxx.oss-cn-hangzhou.aliyuncs.com/put-php.txt in xxx
  3. Diagnosis kesalahan menggunakan EC dari respons:

    1. Buka Pusat Pemecahan Masalah OpenAPI.

    2. Di kotak pencarian, masukkan EC, misalnya, 0026-00000001. Klik Diagnose.

    3. Halaman hasil menunjukkan deskripsi masalah, penyebab, dan solusi.

Kode contoh

Tabel berikut mencantumkan kode contoh untuk operasi umum.

Konten contoh

File contoh GitHub

Buat bucket (OSS SDK for PHP 2.0)

PutBucket.php

Daftar bucket (OSS SDK for PHP 2.0)

ListBuckets.php

Periksa apakah bucket ada (OSS SDK for PHP 2.0)

IsBucketExist.php

Dapatkan wilayah bucket (OSS SDK for PHP 2.0)

GetBucketLocation.php

Dapatkan informasi bucket (OSS SDK for PHP 2.0)

GetBucketInfo.php

Dapatkan kapasitas penyimpanan bucket (OSS SDK for PHP 2.0)

GetBucketStat.php

Hapus bucket (OSS SDK for PHP 2.0)

DeleteBucket.php

Penandaan bucket (OSS SDK for PHP 2.0)

Bayar oleh pemohon (OSS SDK for PHP 2.0)

Unggah sederhana (OSS SDK for PHP 2.0)

PutObject.php

Unggah lampiran (OSS SDK for PHP 2.0)

AppendObject.php

Unggah multipart (OSS SDK for PHP 2.0)

CompleteMultipartUpload.php

Unggah formulir (OSS SDK for PHP 2.0)

PostObject.php

Unggah objek menggunakan URL yang ditandatangani (OSS SDK for PHP 2.0)

Presign.php

Manajer unggah file (OSS SDK for PHP 2.0)

Uploader.php

Unduh sederhana (OSS SDK for PHP 2.0)

GetObject.php

Unduh rentang (OSS SDK for PHP 2.0)

GetObject.php

Unduh objek menggunakan URL yang ditandatangani (OSS SDK for PHP 2.0)

Presign.php

Manajer unduh file (OSS SDK for PHP 2.0)

Downloader.php

Salin objek (OSS SDK for PHP 2.0)

CopyObject.php

Salin multipart (OSS SDK for PHP 2.0)

UploadPartCopy.php

Manajer salin file (OSS SDK for PHP 2.0)

Copier.php

Periksa apakah objek ada (OSS SDK for PHP 2.0)

IsObjectExist.php

Daftar objek (OSS SDK for PHP 2.0)

ListObjectsV2.php

Hapus objek (OSS SDK for PHP 2.0)

DeleteObject.php

Pulihkan file

RestoreObject.php

Kelola metadata objek (OSS SDK for PHP 2.0)

HeadObject.php

Konversi kelas penyimpanan objek (OSS SDK for PHP 2.0)

CopyObject.php

Ubah nama file (OSS SDK for PHP 2.0)

CopyObject.php

Kelola tautan simbolik (OSS SDK for PHP 2.0)

Atur tag objek (OSS SDK for PHP 2.0)

Dapatkan tag objek (OSS SDK for PHP 2.0)

Hapus tag objek (OSS SDK for PHP 2.0)

Kelola ACL bucket (OSS SDK for PHP 2.0)

Kelola ACL objek (OSS SDK for PHP 2.0)

Kebijakan bucket (OSS SDK for PHP 2.0)

Kelola pengendalian versi (OSS SDK for PHP 2.0)

Proteksi hotlink (OSS SDK for PHP 2.0)

Berbagi sumber daya lintas asal (OSS SDK for PHP 2.0)

Kebijakan retensi (OSS SDK for PHP 2.0)

Enkripsi sisi server (OSS SDK for PHP 2.0)

Enkripsi sisi klien (OSS SDK for PHP 2.0)

EncryptionClient.php

Replikasi data (OSS SDK for PHP 2.0)

Pelacakan akses (OSS SDK for PHP 2.0)

Manajemen siklus hidup (OSS SDK for PHP 2.0)

Hosting situs web statis (OSS SDK for PHP 2.0)

Penyimpanan log (OSS SDK for PHP 2.0)

Akses real-time objek Archive (OSS SDK for PHP 2.0)

PutBucketArchiveDirectRead.php

Pencarian skalar (OSS SDK for PHP 2.0)

Pencarian vektor (OSS SDK for PHP 2.0)

Ikat nama domain kustom (OSS SDK for PHP 2.0)

Akselerasi transfer (OSS SDK for PHP 2.0)

Pemrosesan sinkron (OSS SDK for PHP 2.0)

ProcessObject.php

Pemrosesan asinkron (OSS SDK for PHP 2.0)

AsyncProcessObject.php

Blokir Akses Publik Global (OSS SDK for PHP 2.0)

PutPublicAccessBlock.php

Blokir Akses Publik tingkat Bucket (OSS SDK for PHP 2.0)

PutBucketPublicAccessBlock.php