Untuk mengirim permintaan ke OSS menggunakan PHP SDK, Anda harus mengonfigurasi kredensial akses. Layanan Alibaba Cloud menggunakan kredensial ini untuk memverifikasi identitas dan izin akses Anda. Anda dapat memilih berbagai jenis kredensial akses berdasarkan kebutuhan autentikasi dan otorisasi Anda. Topik ini menjelaskan cara mengonfigurasi kredensial akses temporary dan jangka panjang.
Prasyarat
Sebelum mengonfigurasi kredensial akses, Anda harus menginstal OSS PHP SDK. Untuk informasi selengkapnya, lihat Installation (PHP SDK V1).
Inisialisasi penyedia kredensial
Pilih penyedia kredensial
OSS mendukung beberapa metode untuk menginisialisasi penyedia kredensial. Anda dapat memilih metode berdasarkan kebutuhan autentikasi dan otorisasi skenario Anda.
Metode inisialisasi | Skenario | Memerlukan AccessKey atau token STS yang sudah ada | Kredensial dasar | Masa berlaku kredensial | Metode rotasi atau pembaruan kredensial |
Aplikasi yang berjalan di lingkungan aman dan memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering. | Ya | AccessKey | Jangka panjang | Rotasi manual | |
Aplikasi yang berjalan di lingkungan tidak tepercaya di mana Anda perlu mengontrol periode validitas dan izin akses. | Ya | Token STS | Sementara | Pembaruan manual | |
Aplikasi yang memerlukan akses terotorisasi ke layanan Alibaba Cloud, seperti untuk akses lintas akun. | Ya | Token STS | Sementara | Auto-refresh | |
Aplikasi yang berjalan pada instance ECS Alibaba Cloud, instance ECI, atau node pekerja Container Service for Kubernetes. | Tidak | Token STS | Sementara | Auto-refresh | |
Fungsi aplikasi yang berjalan di Alibaba Cloud Function Compute. | Tidak | Token STS | Sementara | Tidak perlu refresh | |
Aplikasi tidak tepercaya yang berjalan pada node pekerja Container Service for Kubernetes. | Tidak | Token STS | Sementara | Auto-refresh | |
Aplikasi yang perlu mendapatkan kredensial akses dari sistem eksternal. | Tidak | Token STS | Sementara | Auto-refresh | |
Jika metode sebelumnya tidak memenuhi kebutuhan Anda, Anda dapat menentukan metode kustom untuk mendapatkan kredensial. | Kustom | Kustom | Kustom | Kustom |
Metode 1: Gunakan pasangan AccessKey
Jika aplikasi Anda berjalan di lingkungan aman dan memerlukan akses jangka panjang ke OSS tanpa rotasi kredensial yang sering, Anda dapat menginisialisasi penyedia kredensial menggunakan pasangan AccessKey dari Akun Alibaba Cloud atau Pengguna Resource Access Management (RAM). Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey. Metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, yang dapat meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Untuk informasi selengkapnya, lihat CreateAccessKey - Buat pasangan AccessKey untuk Akun Alibaba Cloud atau Pengguna RAM.
Variabel lingkungan
Akun Alibaba Cloud memiliki izin penuh atas sumber dayanya. Jika pasangan AccessKey Akun Alibaba Cloud bocor, hal ini menimbulkan ancaman keamanan kritis. Kami menyarankan agar Anda menggunakan pasangan AccessKey Pengguna RAM dengan izin minimum yang diperlukan.
Gunakan pasangan AccessKey untuk mengatur variabel lingkungan.
Mac OS X/Linux/Unix
export OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> export OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>Windows
set OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> set OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>Teruskan informasi kredensial menggunakan variabel lingkungan.
<?php require_once __DIR__ . '/vendor/autoload.php'; use OSS\Credentials\EnvironmentVariableCredentialsProvider; use OSS\OssClient; use OSS\Core\OssException; try { // Dapatkan kredensial akses dari variabel lingkungan dan simpan dalam penyedia. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. $provider = new EnvironmentVariableCredentialsProvider(); // Atur Endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; $bucket = "bucket"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { printf($e->getMessage() . "\n"); return; }
Kredensial statis
Anda dapat menggunakan variabel dalam kode untuk mereferensikan kredensial. Saat waktu proses, variabel ini diberi nilai kredensial aktual dari variabel lingkungan, file konfigurasi, atau sumber data eksternal lainnya.
Langkah-langkah berikut menunjukkan contoh yang menggunakan file konfigurasi.
Buat file konfigurasi bernama
config.ini.[credentials] alibaba_cloud_access_key_id = <ALIBABA_CLOUD_ACCESS_KEY_ID> alibaba_cloud_access_key_secret = <ALIBABA_CLOUD_ACCESS_KEY_SECRET>Teruskan informasi kredensial menggunakan file konfigurasi.
<?php if (is_file(__DIR__ . '/../autoload.php')) { require_once __DIR__ . '/../autoload.php'; } if (is_file(__DIR__ . '/../vendor/autoload.php')) { require_once __DIR__ . '/../vendor/autoload.php'; } use OSS\Credentials\StaticCredentialsProvider; use OSS\OssClient; use OSS\Core\OssException; try { $config = parse_ini_file('config.ini'); // Dapatkan ID AccessKey dan Rahasia AccessKey. $accessKeyId = $config['alibaba_cloud_access_key_id']; $accessKeySecret = $config['alibaba_cloud_access_key_secret']; $provider = new StaticCredentialsProvider($accessKeyId,$accessKeySecret); $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); printf($ossClient); } catch (OssException $e) { printf($e->getMessage() . "\n"); return; }
Metode 2: Gunakan token STS
Jika aplikasi Anda memerlukan akses temporary ke OSS, Anda dapat menginisialisasi penyedia kredensial menggunakan kredensial identitas temporary dari Security Token Service (STS). Kredensial ini mencakup ID AccessKey, Rahasia AccessKey, dan token keamanan. Metode ini mengharuskan Anda memelihara token STS secara manual, yang dapat meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Untuk mengakses OSS beberapa kali, Anda harus merefresh token STS secara manual. Untuk informasi selengkapnya, lihat AssumeRole - Dapatkan kredensial identitas temporary untuk peran RAM.
Gunakan kredensial identitas temporary untuk mengatur variabel lingkungan.
Mac OS X/Linux/Unix
export OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> export OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> export OSS_SESSION_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>Windows
set OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID> set OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> set OSS_SESSION_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>Teruskan informasi kredensial menggunakan variabel lingkungan.
<?php require_once __DIR__ . '/vendor/autoload.php'; use OSS\Credentials\EnvironmentVariableCredentialsProvider; use OSS\OssClient; use OSS\Core\OssException; try { // Dapatkan kredensial akses dari variabel lingkungan dan simpan dalam penyedia. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN telah diatur. $provider = new EnvironmentVariableCredentialsProvider(); // Atur Endpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; $bucket = "bucket"; $config = array( "provider" => $provider, "endpoint" => $endpoint, "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { printf($e->getMessage() . "\n"); return; }
Metode 3: Gunakan RAMRoleARN
Metode ini memerlukan alibabacloud/credentials versi 1.2.0 atau lebih baru.
Jika aplikasi Anda memerlukan otorisasi untuk mengakses OSS, seperti untuk akses lintas akun, Anda dapat menggunakan RAMRoleARN untuk menginisialisasi penyedia kredensial. Metode ini menggunakan token STS sebagai kredensial dasar. Dengan menentukan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM, tool Credentials mengambil token STS dari STS dan secara otomatis merefresh-nya sebelum kedaluwarsa. Anda juga dapat memberikan nilai pada parameter policy untuk membatasi peran RAM pada set izin yang lebih kecil. Metode ini mengharuskan Anda menyediakan pasangan AccessKey, yang dapat meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Untuk informasi selengkapnya tentang cara mendapatkan pasangan AccessKey, lihat CreateAccessKey - Buat pasangan AccessKey untuk Pengguna RAM. Untuk informasi selengkapnya tentang cara mendapatkan RAMRoleARN, lihat CreateRole - Buat peran RAM.
Tambahkan dependensi klien kredensial.
composer require alibabacloud/credentialsKonfigurasikan kredensial akses.
<?php require_once __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Credentials\Credential; use OSS\Core\OssException; use OSS\OssClient; use OSS\Credentials\CredentialsProvider; use OSS\Credentials\StaticCredentialsProvider; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { $config = new Credential\Config([ // Jenis kredensial. Atur nilainya ke ram_role_arn. 'type' => 'ram_role_arn', // Dapatkan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) Pengguna RAM dari variabel lingkungan. 'accessKeyId' => getenv('OSS_ACCESS_KEY_ID'), 'accessKeySecret' => getenv('OSS_ACCESS_KEY_SECRET'), // Dapatkan ARN peran RAM dari variabel lingkungan. Ini adalah ID peran yang akan diasumsikan, dalam format acs:ram::$accountID:role/$roleName. 'roleArn' => getenv('OSS_STS_ROLE_ARN'), // Nama sesi peran kustom untuk membedakan token yang berbeda. 'roleSessionName' => 'yourRoleSessionName', // Kebijakan akses kustom. 'policy' => '', ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sebenarnya. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Metode 4: Gunakan ECSRAMRole
Metode ini memerlukan alibabacloud/credentials 1.2.0 atau versi yang lebih baru.
Jika aplikasi Anda berjalan pada instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes, Anda dapat menggunakan ECSRAMRole untuk menginisialisasi penyedia kredensial. Metode ini menggunakan token STS sebagai kredensial dasar. ECSRAMRole memungkinkan Anda menyambungkan peran RAM ke instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes untuk secara otomatis merefresh token STS pada instance tersebut. Metode ini menghilangkan risiko yang terkait dengan pemeliharaan manual pasangan AccessKey atau token STS. Untuk informasi selengkapnya tentang cara mendapatkan ECSRAMRole, lihat CreateRole - Buat peran RAM.
Tambahkan dependensi klien kredensial.
composer require alibabacloud/credentialsKonfigurasikan ECSRAMRole sebagai kredensial akses.
<?php require_once __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Credentials\Credential; use OSS\Core\OssException; use OSS\OssClient; use OSS\Credentials\CredentialsProvider; use OSS\Credentials\StaticCredentialsProvider; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { $config = new Credential\Config([ // Jenis kredensial. Atur nilainya ke ecs_ram_role. 'type' => 'ecs_ram_role', 'roleName' => "<role_name>", ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sebenarnya. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Metode 5: Gunakan kredensial dari konteks Function Compute
Jika fungsi aplikasi Anda berjalan di Function Compute, Anda dapat menggunakan kredensial dalam konteks fungsi untuk menginisialisasi penyedia kredensial. Metode ini menggunakan token STS sebagai kredensial dasar. Function Compute memperoleh token STS dengan mengasumsikan peran layanan berdasarkan konfigurasi fungsi. Token STS kemudian diteruskan ke aplikasi Anda melalui parameter Credentials dalam konteks. Token STS berlaku selama 36 jam, dan periode ini tidak dapat diubah. Waktu eksekusi maksimum suatu fungsi adalah 24 jam. Oleh karena itu, token STS tidak kedaluwarsa selama eksekusi fungsi, dan Anda tidak perlu merefresh-nya. Metode ini menghilangkan risiko yang terkait dengan pemeliharaan manual pasangan AccessKey atau token STS. Untuk informasi selengkapnya tentang cara memberikan izin Function Compute untuk mengakses OSS, lihat Gunakan peran fungsi untuk memberikan izin Function Compute mengakses layanan Alibaba Cloud lainnya.
Inisialisasi penyedia kredensial menggunakan kredensial dari konteks Function Compute.
<?php use OSS\OssClient; use OSS\Core\OssException; function handler($event, $context) { /* Pasangan AccessKey Akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan agar Anda menggunakan Pengguna RAM untuk akses API atau O&M rutin. Jangan hard-code ID AccessKey dan Rahasia AccessKey Anda dalam kode proyek. Jika tidak, pasangan AccessKey dapat bocor dan keamanan semua sumber daya Anda dapat dikompromikan. Contoh ini menunjukkan cara mendapatkan ID AccessKey dan Rahasia AccessKey dari konteks. */ $creds = $context["credentials"]; $accessKeyId = $creds["accessKeyId"]; $accessKeySecret = $creds["accessKeySecret"]; $securityToken = $creds["securityToken"]; $endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com"; try{ $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken); print_r($ossClient); } catch(OssException $e) { printf(__FUNCTION__ . ": GAGAL\n"); printf($e->getMessage() . "\n"); return $e->getMessage(); } return 'hello world'; }
Metode 6: Gunakan OIDCRoleARN
Metode ini memerlukan alibabacloud/credentials 1.2.0 atau versi yang lebih baru.
Setelah Anda mengonfigurasi peran RAM untuk node pekerja Container Service for Kubernetes, aplikasi dalam pod pada node tersebut dapat memperoleh token STS dari peran terkait dari server metadata. Hal ini mirip dengan cara kerja aplikasi pada instance ECS. Namun, jika aplikasi tidak tepercaya ditempatkan pada kluster, Anda mungkin tidak ingin aplikasi tersebut memperoleh token STS dari peran RAM instans dari server metadata. Contohnya adalah aplikasi yang dikirim oleh pelanggan Anda yang kodenya tidak terbuka bagi Anda. Untuk melindungi sumber daya cloud Anda dan memungkinkan aplikasi tidak tepercaya ini memperoleh token STS yang diperlukan secara aman dengan izin minimum, Anda dapat menggunakan fitur RAM Roles for Service Account (RRSA). Metode ini menggunakan token STS sebagai kredensial dasar. Kluster container Alibaba Cloud membuat dan memasang file token OpenID Connect (OIDC) penyedia layanan yang sesuai untuk setiap pod aplikasi. Kluster juga menyuntikkan informasi konfigurasi ke dalam variabel lingkungan. Tool Credentials mengambil konfigurasi dari variabel lingkungan dan memanggil operasi AssumeRoleWithOIDC STS untuk menukar token OIDC dengan token STS dari peran yang terikat. Metode ini menghilangkan risiko yang terkait dengan pemeliharaan manual pasangan AccessKey atau token STS. Untuk informasi selengkapnya, lihat Isolasi izin Pod berdasarkan RRSA.
Tambahkan dependensi klien kredensial.
composer require alibabacloud/credentialsKode contoh berikut menunjukkan cara mengonfigurasi peran RAM penyedia OIDC sebagai kredensial akses.
<?php require_once __DIR__ . '/vendor/autoload.php'; use OSS\Credentials\CredentialsProvider; use AlibabaCloud\Credentials\Credential; use OSS\Credentials\StaticCredentialsProvider; use OSS\Core\OssException; use OSS\OssClient; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { // Inisialisasi Klien Credentials menggunakan OIDCRoleArn. $config = new Credential\Config([ // Jenis kredensial. 'type' => 'oidc_role_arn', // ARN penyedia OIDC. Anda dapat mengatur oidc_provider_arn menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN. 'oidcProviderArn' => '<OidcProviderArn>', // Jalur file token OIDC. Anda dapat mengatur oidc_token_file_path menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE. 'oidcTokenFilePath' => '<OidcTokenFilePath>', // ARN peran RAM. Contoh: acs:ram::123456789012****:role/adminrole. Anda dapat mengatur role_arn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. 'roleArn' => '<RoleArn>', // Nama sesi peran. Anda dapat mengatur role_session_name menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME. 'roleSessionName' => '<RoleSessionName>', // Opsional. Kebijakan akses yang lebih kecil. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} 'policy' => '<Policy>', # Atur waktu kedaluwarsa sesi. 'durationSeconds' => 3600, ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sebenarnya. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Metode 7: Gunakan CredentialsURI
Metode ini memerlukan alibabacloud/credentials 1.2.0 atau versi yang lebih baru.
Jika aplikasi Anda perlu memperoleh kredensial Alibaba Cloud dari sistem eksternal untuk manajemen kredensial yang fleksibel dan akses tanpa kunci, Anda dapat menggunakan CredentialsURI untuk menginisialisasi penyedia kredensial. Metode ini menggunakan token STS sebagai kredensial dasar. Tool Credentials memperoleh token STS dari URI yang Anda sediakan untuk menginisialisasi klien kredensial. Metode ini menghilangkan risiko yang terkait dengan pemeliharaan manual pasangan AccessKey atau token STS. Layanan backend yang menyediakan respons CredentialsURI harus mengimplementasikan logika untuk secara otomatis merefresh token STS. Hal ini memastikan bahwa aplikasi Anda selalu memiliki kredensial yang valid.
Tambahkan dependensi klien kredensial.
composer require alibabacloud/credentialsKode contoh berikut menunjukkan cara mengonfigurasi CredentialsURI sebagai kredensial akses.
<?php require_once __DIR__ . '/vendor/autoload.php'; use AlibabaCloud\Credentials\Credential; use OSS\Core\OssException; use OSS\Credentials\CredentialsProvider; use OSS\Credentials\StaticCredentialsProvider; use OSS\OssClient; class AlibabaCloudCredentialsWrapper implements CredentialsProvider { /** * @var Credential */ private $wrapper; public function __construct($wrapper) { $this->wrapper = $wrapper; } public function getCredentials() { $cred = $this->wrapper->getCredential(); $ak = $cred->getAccessKeyId(); $sk = $cred->getAccessKeySecret(); $token = $cred->getSecurityToken(); return new StaticCredentialsProvider($ak, $sk, $token); } } try { $config = new Credential\Config([ // Jenis kredensial. 'type' => 'credentials_uri', // URI kredensial, dalam format http://local_or_remote_uri/. Anda dapat mengatur credentials_uri menggunakan variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_URI. 'credentialsURI' => '<CredentialsUri>', ]); $credential = new Credential($config); $providerWrapper = new AlibabaCloudCredentialsWrapper($credential); $provider = $providerWrapper->getCredentials(); $config = array( 'provider' => $provider, // Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sebenarnya. 'endpoint' => 'https://oss-cn-hangzhou.aliyuncs.com' "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4, "region"=> "cn-hangzhou" ); $ossClient = new OssClient($config); var_dump($ossClient); } catch (OssException $e) { print $e->getMessage(); }
Metode 8: Gunakan kredensial akses kustom
Jika metode sebelumnya tidak memenuhi kebutuhan Anda, Anda dapat menentukan penyedia kredensial kustom dengan mengimplementasikan antarmuka Credential Providers.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\CredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
class CustomerCredentialsProvider implements CredentialsProvider
{
public function getCredentials()
{
// Kembalikan kredensial jangka panjang.
return [
'AccessKeyId' => 'id',
'AccessKeySecret' => 'secret',
];
// Kembalikan kredensial sementara.
//return [
// 'AccessKeyId' => 'id',
// 'AccessKeySecret' => 'secret',
// 'SecurityToken' => 'token',
//];
}
}
$provider = new CustomerCredentialsProvider();
try {
$provider = new CustomerCredentialsProvider();
$endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
printf($ossClient);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
Apa yang harus dilakukan selanjutnya
Setelah Anda menginisialisasi penyedia kredensial, Anda dapat menggunakannya untuk membuat instance OSSClient. Untuk informasi selengkapnya, lihat Initialization (PHP SDK V1).