GitHub|Panduan Pengembang OSS SDK for PHP 2.0|Rilis SDK
Integrasi cepat
Untuk mengintegrasikan OSS SDK for PHP 2.0, ikuti langkah-langkah berikut:
Prasyarat
Diperlukan PHP 7.4 atau versi yang lebih baru. Untuk informasi selengkapnya, kunjungi situs resmi Composer untuk mengunduh alat manajemen paket Composer.
Anda dapat menjalankan perintah php -version untuk memeriksa versi PHP. Jika PHP belum diinstal atau versinya lebih lama dari 7.4, Anda dapat mengunduh dan menginstal PHP.Instal SDK
Buat direktori proyek, lalu jalankan perintah berikut untuk menggunakan Composer guna mendapatkan OSS SDK for PHP 2.0. Pilih versi OSS SDK for PHP 2.0 sesuai kebutuhan Anda. Kami menyarankan agar Anda menggunakan versi terbaru agar kode contoh dalam topik ini berjalan sebagaimana mestinya.
mkdir oss-php-example && cd oss-php-example && composer require alibabacloud/oss-v2Gunakan kode berikut untuk mengimpor paket OSS SDK for PHP 2.0.
require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss;
Konfigurasikan kredensial akses
Gunakan Pasangan Kunci Akses (AccessKey pair) dari Pengguna RAM untuk mengonfigurasi kredensial akses.
Di Konsol RAM, buat Pengguna RAM yang menggunakan AccessKey Pair permanen untuk akses. Simpan AccessKey pair tersebut dan berikan izin
AliyunOSSFullAccesskepada Pengguna RAM.Gunakan AccessKey pair dari Pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
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'" >> ~/.bashrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
Jalankan perintah berikut di terminal untuk melihat jenis shell default.
echo $SHELLLakukan langkah-langkah berikut berdasarkan jenis shell default.
Zsh
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'" >> ~/.zshrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
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_profileJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profileJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
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"Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
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)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
Inisialisasi OSSClient dengan menentukan wilayah dan titik akhir. Kemudian, jalankan kode uji coba.
<?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.
* • Saat menginisialisasi klien, Anda harus menentukan ID wilayah Alibaba Cloud untuk mengidentifikasi wilayah permintaan.
* • Contoh ini menggunakan ID wilayah China (Hangzhou): cn-hangzhou. Untuk ID wilayah lainnya, lihat Wilayah dan titik akhir.
*
* ===========================================
* Konfigurasi titik akhir
* ===========================================
* • OSS SDK for PHP 2.0 memungkinkan Anda menyesuaikan titik akhir untuk permintaan layanan menggunakan parameter endpoint.
* • Jika Anda tidak menentukan titik akhir, SDK akan membuat titik akhir publik berdasarkan informasi wilayah.
* • Misalnya, jika wilayah adalah 'cn-hangzhou', titik akhir yang dibuat adalah 'https://oss-cn-hangzhou.aliyuncs.com'.
*
* ===========================================
* Pemilihan protokol
* ===========================================
* • OSS SDK for PHP 2.0 menggunakan protokol HTTPS secara default saat membuat titik akhir. Ini adalah protokol yang direkomendasikan.
* • Untuk menggunakan protokol HTTP, tentukan http secara eksplisit saat mengatur titik akhir.
* • Contoh HTTPS: 'https://oss-cn-hangzhou.aliyuncs.com'
* • Contoh HTTP: 'http://oss-cn-hangzhou.aliyuncs.com'
*/
// 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);
// Metode 1: Tentukan hanya wilayah (direkomendasikan). SDK secara otomatis membuat titik akhir HTTPS.
// China (Hangzhou): cn-hangzhou
$cfg->setRegion(region: "cn-hangzhou");
// // Metode 2: Tentukan wilayah dan titik akhir.
// $cfg->setRegion(region: 'cn-hangzhou')->setEndpoint(endpoint: 'https://oss-cn-hangzhou.aliyuncs.com');
// Buat instance 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
);
Setelah menjalankan kode, hasil berikut dikembalikan, yang menunjukkan bahwa file berhasil diunggah.
status code: 200
request id: 687F2BEEDC44E0313527BA07
etag: "F0F18C2C66AE1DD512BDCD4366F76DA3"Konfigurasi klien
Gunakan nama domain kustom
Jika Anda menggunakan titik akhir OSS default, Anda mungkin mengalami masalah seperti tidak dapat mengakses atau melihat pratinjau file. Untuk mengatasi hal ini, Anda dapat mengakses OSS menggunakan nama domain kustom. Metode ini memungkinkan Anda melihat pratinjau file di browser dan menggunakan CDN Alibaba Cloud untuk mempercepat pengiriman konten.
<?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 China (Hangzhou), atur wilayah ke cn-hangzhou.
// Tentukan nama domain kustom Anda, misalnya www.example-***.com. Perhatikan bahwa Anda harus mengatur setUseCname ke true untuk mengaktifkan opsi CNAME. Jika tidak, Anda tidak dapat menggunakan nama domain kustom.
// Untuk memanggil operasi PutCname, Anda harus menggunakan PHP 8 atau versi yang lebih baru.
$cfg->setRegion('cn-hangzhou')->setEndpoint('www.example-***.com')->setUseCname(true);
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.Kontrol timeout
<?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 China (Hangzhou), atur wilayah ke cn-hangzhou.
$cfg->setRegion(region: "cn-hangzhou");
# Atur periode timeout koneksi.
$cfg->setConnectTimeout(connectTimeout: 30);
# Atur periode timeout untuk membaca dan menulis data.
$cfg->setReadwriteTimeout(readwriteTimeout:30);
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.Jumlah maksimum percobaan ulang
Jika permintaan gagal, OSSClient secara default mencoba ulang permintaan tersebut tiga kali.
Dalam skenario konkurensi tinggi atau jaringan tidak stabil, Anda dapat menggunakan setRetryMaxAttempts untuk meningkatkan jumlah percobaan ulang guna meningkatkan tingkat keberhasilan permintaan.
<?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);
// China (Hangzhou): cn-hangzhou
$cfg->setRegion(region: "cn-hangzhou");
// Atur jumlah maksimum percobaan ulang untuk permintaan HTTP. Nilai default adalah 3.
$cfg->setRetryMaxAttempts(5);
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.Protokol HTTP/HTTPS
Anda dapat menggunakan setDisableSSL(true) untuk menonaktifkan protokol HTTPS.
<?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);
// China (Hangzhou): cn-hangzhou
$cfg->setRegion(region: "cn-hangzhou");
// Nonaktifkan SSL.
$cfg->setDisableSSL(true);
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.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;
// Konfigurasikan klien OSS.
$region = 'cn-hangzhou'; // 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-cn-hangzhou.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 Instance 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
// 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.
// Metode 1: Tentukan wilayah dan atur setUseInternalEndpoint ke true.
// Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou.
$cfg->setRegion('cn-hangzhou')->setUseInternalEndpoint(true);
// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou.
// // Tentukan titik akhir internal wilayah bucket. Misalnya, untuk China (Hangzhou), atur titik akhir ke 'https://oss-cn-hangzhou-internal.aliyuncs.com'.
// // Untuk menggunakan protokol HTTP, atur titik akhir ke 'http://oss-cn-hangzhou-internal.aliyuncs.com'.
// $cfg->setRegion('cn-hangzhou')->setEndpoint('https://oss-cn-hanghzou-internal.aliyuncs.com');
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.Gunakan titik akhir percepatan
<?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.
// Metode 1: Tentukan wilayah dan atur setUseAccelerateEndpoint ke true.
// Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou.
$cfg->setRegion('cn-hangzhou')->setUseAccelerateEndpoint(true);
// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou.
// // Tentukan titik akhir percepatan wilayah bucket. Misalnya, untuk China (Hangzhou), atur titik akhir ke 'https://oss-accelerate.aliyuncs.com'.
// $cfg->setRegion('cn-hangzhou')->setEndpoint('https://oss-accelerate.aliyuncs.com');
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.Gunakan domain privat
<?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 China (Hangzhou), atur wilayah ke cn-hangzhou.
// Tentukan domain privat Anda. Contoh: https://service.corp.example.com
$cfg->setRegion('cn-hangzhou')->setEndpoint('https://service.corp.example.com');
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.
Gunakan titik akhir Alibaba Gov Cloud
Kode berikut memberikan contoh cara mengonfigurasi OSSClient menggunakan titik akhir Alibaba Gov Cloud.
<?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 instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.Konfigurasi kredensial akses
OSS menyediakan beberapa metode untuk menginisialisasi kredensial. Anda dapat memilih metode berdasarkan kebutuhan autentikasi dan otorisasi Anda.
Gunakan AccessKey pair dari Pengguna RAM
Anda dapat menginisialisasi penyedia kredensial menggunakan AccessKey pair (ID AccessKey dan Rahasia AccessKey) dari Akun Alibaba Cloud atau Pengguna RAM. Metode ini cocok jika aplikasi Anda dideploy di lingkungan aman dan stabil, tidak rentan terhadap serangan eksternal, memerlukan akses jangka panjang ke OSS, dan tidak dapat sering melakukan rotasi kredensial. Perhatikan bahwa metode ini mengharuskan Anda memelihara AccessKey pair secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan.
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran AccessKey pair Akun Alibaba Cloud menimbulkan risiko signifikan bagi sistem Anda. Kami menyarankan agar Anda menggunakan AccessKey pair dari Pengguna RAM yang diberikan izin minimum yang diperlukan.
Untuk informasi selengkapnya tentang cara membuat AccessKey pair untuk Pengguna RAM, lihat Buat AccessKey pair. ID AccessKey dan Rahasia AccessKey Pengguna RAM hanya ditampilkan saat AccessKey pair dibuat. Anda harus segera menyimpannya. Jika Anda lupa AccessKey pair tersebut, buat yang baru untuk rotasi.
Variabel lingkungan
Gunakan AccessKey pair dari Pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
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'" >> ~/.bashrcTerapkan perubahan.
source ~/.bashrcPeriksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
Jalankan perintah berikut di terminal untuk melihat jenis shell default:
echo $SHELLKonfigurasikan variabel lingkungan berdasarkan jenis shell default.
Zsh
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'" >> ~/.zshrcTerapkan perubahan.
source ~/.zshrcPeriksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
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_profileTerapkan perubahan.
source ~/.bash_profilePeriksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
Jalankan perintah berikut di CMD:
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"Periksa apakah variabel lingkungan berlaku:
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
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)Periksa apakah variabel lingkungan berlaku:
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
Setelah mengubah variabel lingkungan sistem, Anda harus me-restart atau merefresh lingkungan pengembangan Anda untuk memastikan variabel lingkungan sistem terbaru dimuat. Ini termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan backend.
Gunakan variabel lingkungan untuk meneruskan informasi kredensial.
<?php // Impor file autoload untuk memastikan dependensi dimuat dengan benar. require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; # Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou. $region = "cn-hangzhou"; // 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. // Buat instance klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang telah dibuat untuk operasi selanjutnya.
Kredensial statis
Kode contoh berikut menunjukkan cara menyematkan kredensial akses dengan secara eksplisit menyetel AccessKey pair yang akan digunakan.
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;
# Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou.
$region = "cn-hangzhou";
# Buat penyedia kredensial statis dan secara eksplisit atur ID AccessKey dan Rahasia AccessKey. Ganti dengan 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 tempat bucket berada.
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah 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 mengharuskan Anda 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.
Untuk mendapatkan token STS dengan cepat 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.
Variabel lingkungan
Atur variabel lingkungan menggunakan kredensial identitas sementara.
Mac OS X/Linux/Unix
PeringatanGunakan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan token STS) yang diperoleh dari STS. Jangan gunakan AccessKey pair dari 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
PeringatanGunakan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan token STS) yang diperoleh dari STS. Jangan gunakan AccessKey pair dari 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>Meneruskan 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; # Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou. $region = "cn-hangzhou"; // Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey, Rahasia AccessKey, dan token STS 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 instance klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang telah dibuat untuk operasi selanjutnya.
Kredensial statis
Anda dapat menyematkan kredensial dalam aplikasi Anda dengan secara eksplisit menyetel AccessKey pair sementara yang akan digunakan.
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;
# Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou.
$region = "cn-hangzhou";
# Tentukan ID AccessKey dan Rahasia AccessKey sementara yang Anda peroleh. Jangan gunakan ID AccessKey dan Rahasia AccessKey Akun Alibaba Cloud Anda.
# Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan STS, seperti pada contoh berikut.
$stsAccessKeyId = 'STS.****************';
$stsAccessKeySecret = 'yourAccessKeySecret';
# Tentukan token STS yang Anda peroleh.
$stsSecurityToken = 'yourSecurityToken';
# Buat penyedia kredensial statis dan secara eksplisit atur ID AccessKey sementara, Rahasia AccessKey, dan token STS.
$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 instance klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang telah dibuat untuk operasi selanjutnya.Gunakan ARN peran RAM
Jika aplikasi Anda memerlukan akses berotorisasi ke OSS, seperti untuk akses lintas akun, Anda dapat menginisialisasi penyedia kredensial menggunakan Nama Sumber Daya Alibaba Cloud (ARN) peran RAM. Metode ini menggunakan token STS. Dengan menentukan ARN peran RAM, alat Kredensial memperoleh token STS dari STS dan memanggil operasi AssumeRole untuk meminta token STS baru sebelum token saat ini kedaluwarsa. Anda juga dapat memberikan nilai ke parameter policy untuk memberikan izin yang lebih kecil kepada peran RAM.
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran AccessKey pair Akun Alibaba Cloud menimbulkan risiko signifikan bagi sistem Anda. Kami menyarankan agar Anda menggunakan AccessKey pair dari Pengguna RAM yang diberikan izin minimum yang diperlukan.
Untuk informasi selengkapnya tentang cara membuat AccessKey pair untuk Pengguna RAM, lihat Buat AccessKey pair. ID AccessKey dan Rahasia AccessKey Pengguna RAM hanya ditampilkan saat AccessKey pair dibuat. Anda harus segera menyimpannya. Jika Anda lupa AccessKey pair tersebut, buat yang baru untuk rotasi.
Untuk informasi selengkapnya tentang cara mendapatkan ARN peran RAM, lihat CreateRole.
Tambahkan library kredensial Alibaba Cloud credentials-php.
composer require alibabacloud/credentialsKonfigurasikan AccessKey pair dan ARN peran RAM sebagai kredensial akses.
<?php // Impor 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, yang digunakan untuk mengidentifikasi sesi saat ini. 'roleSessionName' => 'yourRoleSessionName', // Opsional. Kebijakan yang digunakan untuk membatasi izin token STS. 'policy' => 'Policy', ]); // Inisialisasi instance kredensial menggunakan objek konfigurasi. $credential = new Credential($config); // Muat konfigurasi SDK default. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial untuk menghasilkan kredensial secara dinamis menggunakan 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 STS. return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // ID AccessKey sementara. accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara. securityToken: $cred->getSecurityToken() // Token STS. ); })); // Atur informasi wilayah untuk klien OSS. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou. $region = 'cn-hangzhou'; $cfg->setRegion($region); // Buat instance klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang telah dibuat untuk operasi selanjutnya.
Gunakan peran RAM instans
Jika aplikasi Anda berjalan pada Instance ECS, Instance ECI, atau node pekerja Container Service for Kubernetes, kami menyarankan agar Anda menggunakan peran RAM instans untuk menginisialisasi penyedia kredensial. Logika dasar metode ini berbasis token Layanan Keamanan (STS). Peran RAM instans memungkinkan Anda mengaitkan peran dengan Instance ECS, Instance ECI, atau node pekerja Container Service for Kubernetes untuk merefresh token STS secara otomatis di dalam instans. Metode ini tidak memerlukan AccessKey pair atau token STS, yang menghilangkan risiko terkait dengan pengelolaan kredensial ini secara manual. Untuk informasi selengkapnya tentang cara mendapatkan peran RAM instans, lihat CreateRole.
Tambahkan library kredensial Alibaba Cloud credentials-php.
composer require alibabacloud/credentialsKonfigurasikan 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 menentukan jenis kredensial dan informasi terkait. $config = new Credential\Config([ // Tentukan jenis kredensial. Dalam contoh ini, digunakan jenis peran RAM instans ECS. Nilainya tetap ecs_ram_role. 'type' => 'ecs_ram_role', // Tentukan nama peran RAM yang dilampirkan ke Instance ECS. 'roleName' => "<role_name>", // Ganti dengan nama peran RAM yang sebenarnya. ]); // Inisialisasi instance kredensial menggunakan objek konfigurasi. $credential = new Credential($config); // Muat konfigurasi default dan peroleh objek konfigurasi OSS. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial untuk menghasilkan kredensial secara dinamis menggunakan 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 STS. return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // ID AccessKey sementara. accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara. securityToken: $cred->getSecurityToken() // Token STS. ); })); // Atur informasi wilayah untuk klien OSS. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou. $region = 'cn-hangzhou'; $cfg->setRegion($region); // Buat instance klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang telah dibuat untuk operasi selanjutnya.
Gunakan ARN peran OIDC
Setelah Anda menetapkan peran RAM ke node pekerja di Container Service for Kubernetes (ACK), aplikasi dalam pod pada node tersebut dapat memperoleh token STS dari layanan metadata. Hal ini mirip dengan aplikasi pada Instance ECS. Namun, Anda mungkin tidak ingin aplikasi yang tidak tepercaya, seperti aplikasi dari pelanggan Anda, memperoleh token STS dari peran RAM instans node pekerja. Untuk mengamankan sumber daya cloud Anda sekaligus memungkinkan aplikasi tersebut memperoleh token STS yang mereka butuhkan dengan izin minimal, Anda dapat menggunakan fitur Peran RAM untuk Akun Layanan (RRSA). Metode ini menggunakan token STS. ACK membuat dan memasang file token OpenID Connect (OIDC) untuk setiap pod aplikasi dan menyuntikkan informasi konfigurasi ke variabel lingkungan. Alat Kredensial membaca variabel ini dan memanggil operasi STS AssumeRoleWithOIDC untuk memperoleh token STS untuk peran yang dilampirkan. Metode ini tidak mengharuskan Anda menyediakan AccessKey pair atau token STS, yang menghilangkan risiko pengelolaan kredensial manual. Untuk informasi selengkapnya, lihat Gunakan RRSA untuk mengonfigurasi izin RAM untuk ServiceAccount dan mengisolasi izin pod.
Tambahkan library kredensial Alibaba Cloud credentials-php.
composer require alibabacloud/credentials
Konfigurasikan ARN peran OIDC 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 menentukan jenis kredensial dan informasi terkait. $config = new Credential\Config([ // Tentukan jenis kredensial. Dalam contoh ini, digunakan jenis ARN peran OIDC. 'type' => 'oidc_role_arn', // Tentukan ARN penyedia identitas OIDC. Anda dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN. 'oidcProviderArn' => '<oidc_provider_arn>', // Ganti dengan ARN penyedia OIDC yang sebenarnya. // Tentukan path file token OIDC. Anda dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE. 'oidcTokenFilePath' => '<oidc_token_file_path>', // Ganti dengan path file token OIDC yang sebenarnya. // Tentukan ARN peran RAM. Anda dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. 'roleArn' => '<role_arn>', // Ganti dengan ARN peran RAM yang sebenarnya. // Tentukan nama sesi peran. Anda dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME. 'roleSessionName' => '<role_session_name>', // Ganti dengan nama sesi peran yang sebenarnya. // Opsional. Tentukan kebijakan izin untuk peran RAM guna membatasi izinnya. // Contoh kebijakan: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} 'policy' => '', // Untuk membatasi izin, ganti ini dengan string JSON kebijakan yang sebenarnya. // Opsional. Tentukan periode validitas sesi dalam detik. Nilai default adalah 3.600 detik. 'roleSessionExpiration' => 3600, // Untuk menyesuaikan periode validitas, ubah nilai ini. ]); // Inisialisasi instance kredensial menggunakan objek konfigurasi. $credential = new Credential($config); // Muat konfigurasi default dan peroleh objek konfigurasi OSS. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial untuk menghasilkan kredensial secara dinamis menggunakan 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 STS. return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // ID AccessKey sementara. accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara. securityToken: $cred->getSecurityToken() // Token STS. ); })); // Atur informasi wilayah untuk klien OSS. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou. $region = 'cn-hangzhou'; $cfg->setRegion($region); // Buat instance klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang telah 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.
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 yang sebenarnya. accessKeySecret: 'secret' // Ganti dengan Rahasia AccessKey RAM yang sebenarnya. ); // Untuk mengembalikan kredensial sementara, yang mencakup token STS, Anda dapat menghapus komentar kode berikut dan mengganti nilainya dengan nilai yang sebenarnya. /* return new Credentials( accessKeyId: 'id', // Ganti dengan ID AccessKey sementara yang sebenarnya. accessKeySecret: 'secret', // Ganti dengan Rahasia AccessKey sementara yang sebenarnya. securityToken: 'token' // Ganti dengan token STS yang sebenarnya. ); */ } ); // Muat konfigurasi default dan peroleh objek konfigurasi OSS. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial ke penyedia kredensial yang dihasilkan secara dinamis. $cfg->setCredentialsProvider($provider); // Atur informasi wilayah untuk klien OSS. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou. $region = 'cn-hangzhou'; $cfg->setRegion($region); // Buat instance klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang telah dibuat untuk operasi selanjutnya.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 { /** * Metode untuk mendapatkan kredensial. Mengembalikan kredensial jangka panjang atau sementara. * * @return Credentials Mengembalikan objek kredensial yang berisi informasi AccessKey pair. */ 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 yang sebenarnya. accessKeySecret: 'secret' // Ganti dengan Rahasia AccessKey RAM yang sebenarnya. ); // Untuk mengembalikan kredensial sementara, yang mencakup token STS, Anda dapat menghapus komentar kode berikut dan mengganti nilainya dengan nilai yang sebenarnya. /* return new Credentials( accessKeyId: 'id', // Ganti dengan ID AccessKey sementara yang sebenarnya. accessKeySecret: 'secret', // Ganti dengan Rahasia AccessKey sementara yang sebenarnya. securityToken: 'token' // Ganti dengan token STS yang sebenarnya. ); */ } } // Instansiasi penyedia kredensial kustom. $provider = new CustomerCredentialsProvider(); // Muat konfigurasi default dan peroleh objek konfigurasi OSS. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial ke penyedia kredensial kustom. $cfg->setCredentialsProvider($provider); // Atur informasi wilayah untuk klien OSS. Misalnya, untuk China (Hangzhou), atur wilayah ke cn-hangzhou. $region = 'cn-hangzhou'; $cfg->setRegion($region); // Buat instance klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang telah dibuat untuk operasi selanjutnya.
Pemecahan masalah kesalahan
Saat Anda menggunakan OSS SDK for PHP 2.0 untuk mengakses OSS, OSS mengembalikan informasi seperti kode status HTTP, pesan, ID permintaan, dan kode kesalahan (EC) jika terjadi kesalahan. EC tersebut berkorespondensi dengan penyebab spesifik kesalahan tersebut. Anda dapat menggunakan EC untuk memecahkan masalah kesalahan tersebut.
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 tersebut 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 tersebut. echo "Kesalahan: argumen berikut wajib: --$key, $help" . PHP_EOL; exit(1); // Keluar dari program jika parameter wajib tidak tersedia. } } // 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 tersebut. } // Buat instance klien OSS. $client = new Oss\Client($cfg); // Buat objek GetObjectRequest untuk mendapatkan konten objek yang ditentukan. $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 yang sebenarnya. // Tulis konten ke file lokal. file_put_contents( $localFilePath, $result->body->getContents()); // Cetak hasilnya. // Keluarkan 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. );Tanggapan contoh berikut dikembalikan. Tanggapan tersebut berisi 'EC': '0026-00000001', yang merupakan pengenal unik untuk penyebab kesalahan.
Ikuti langkah-langkah berikut untuk menemukan penyebab masalah dan solusi yang sesuai berdasarkan EC yang dikembalikan dalam contoh permintaan kesalahan di atas.
Di kotak pencarian, masukkan EC tersebut, misalnya, 0026-00000001.
Temukan penyebab masalah dan solusi yang sesuai dalam hasil pencarian.
Kode contoh
OSS SDK for PHP 2.0 menyediakan berbagai kode contoh untuk referensi Anda.