GitHub|OSS SDK for PHP 2.0 開発者ガイド|SDK リリース
クイック統合
OSS SDK for PHP 2.0 を統合するには、次の手順を実行します。
前提条件
PHP 7.4 以降が必要です。詳細については、composer の公式サイトにアクセスして、Composer パッケージ管理ツールをダウンロードしてください。
php -version コマンドを実行して PHP のバージョンを確認できます。PHP がインストールされていない場合、またはバージョンが 7.4 より前の場合は、PHP をダウンロードしてインストールできます。SDK のインストール
プロジェクトディレクトリを作成します。次に、以下のコマンドを実行して、Composer を使用して OSS SDK for PHP 2.0 を取得します。要件に基づいて OSS SDK for PHP 2.0 のバージョンを選択します。このトピックのサンプルコードが期待どおりに実行されるように、最新バージョンを使用することを推奨します。
mkdir oss-php-example && cd oss-php-example && composer require alibabacloud/oss-v2次のコードを使用して、OSS SDK for PHP 2.0 パッケージをインポートします。
require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss;
アクセス認証情報の設定
RAM ユーザーの AccessKey ペアを使用してアクセス認証情報を設定します。
RAM コンソールで、永続的な [AccessKey ペア] を使用してアクセスする RAM ユーザーを作成します。AccessKey ペアを保存し、RAM ユーザーに
AliyunOSSFullAccess権限を付与します。RAM ユーザーの AccessKey ペアを使用して環境変数を設定します。
Linux
次のコマンドを実行して、環境変数の設定を
~/.bashrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc次のコマンドを実行して変更を適用します。
source ~/.bashrc次のコマンドを実行して、環境変数が設定されているかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを表示します。
echo $SHELLデフォルトのシェルタイプに基づいて、次の手順を実行します。
Zsh
次のコマンドを実行して、環境変数の設定を
~/.zshrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc次のコマンドを実行して変更を適用します。
source ~/.zshrc次のコマンドを実行して、環境変数が設定されているかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
次のコマンドを実行して、環境変数の設定を
~/.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以下のコマンドを実行して、変更を適用します。
source ~/.bash_profile次のコマンドを実行して、環境変数が設定されているかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
コマンドプロンプトウィンドウで次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"次のコマンドを実行して、環境変数が設定されているかどうかを確認します。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
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)次のコマンドを実行して、環境変数が設定されているかどうかを確認します。
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
クライアントの初期化
リージョンとエンドポイントを指定して OSSClient を初期化します。次に、テストコードを実行します。
<?php
/**
* OSS SDK for PHP 2.0 クライアント設定の完全ガイド
*
* ===========================================
* V4 署名とリージョン設定
* ===========================================
* • OSS SDK for PHP 2.0 は、デフォルトで V4 署名アルゴリズムを使用します。
* • クライアントを初期化する際、リクエストリージョンを識別するために Alibaba Cloud リージョン ID を指定する必要があります。
* • この例では、中国 (杭州) リージョン ID:cn-hangzhou を使用します。他のリージョン ID については、「リージョンとエンドポイント」をご参照ください。
*
* ===========================================
* エンドポイント設定
* ===========================================
* • OSS SDK for PHP 2.0 では、endpoint パラメーターを使用してサービスリクエストのエンドポイントをカスタマイズできます。
* • エンドポイントを指定しない場合、SDK はリージョン情報に基づいてパブリックエンドポイントを構築します。
* • たとえば、リージョンが 'cn-hangzhou' の場合、構築されるエンドポイントは 'https://oss-cn-hangzhou.aliyuncs.com' です。
*
* ===========================================
* プロトコルの選択
* ===========================================
* • OSS SDK for PHP 2.0 は、エンドポイントを構築する際にデフォルトで HTTPS プロトコルを使用します。これは推奨されるプロトコルです。
* • HTTP プロトコルを使用するには、エンドポイントを設定する際に明示的に http を指定します。
* • HTTPS の例:'https://oss-cn-hangzhou.aliyuncs.com'
* • HTTP の例:'http://oss-cn-hangzhou.aliyuncs.com'
*/
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
// 方法 1:リージョンのみを指定します (推奨)。SDK は自動的に HTTPS エンドポイントを構築します。
// 中国 (杭州):cn-hangzhou
$cfg->setRegion(region: "cn-hangzhou");
// // 方法 2:リージョンとエンドポイントの両方を指定します。
// $cfg->setRegion(region: 'cn-hangzhou')->setEndpoint(endpoint: 'https://oss-cn-hangzhou.aliyuncs.com');
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// アップロードするデータ。
$data = 'Hello OSS';
// PutObjectRequest オブジェクトを作成してオブジェクトをアップロードします。
$request = new Oss\Models\PutObjectRequest(
bucket: "ご利用のバケット名",
key: "ご利用のオブジェクトキー",
);
$request->body = Oss\Utils::streamFor($data); // リクエストボディをデータストリームに設定します。
// アップロード操作を実行します。
$result = $client->putObject($request);
// アップロード結果を出力します。
printf(
'status code: %s' . PHP_EOL . // HTTP ステータスコード。
'request id: %s' . PHP_EOL . // リクエスト ID。
'etag: %s' . PHP_EOL, // オブジェクトの ETag。
$result->statusCode,
$result->requestId,
$result->etag
);
コードを実行すると、次の結果が返され、ファイルがアップロードされたことを示します。
status code: 200
request id: 687F2BEEDC44E0313527BA07
etag: "F0F18C2C66AE1DD512BDCD4366F76DA3"クライアント設定
カスタムドメイン名の使用
デフォルトの OSS エンドポイントを使用すると、ファイルにアクセスできない、またはプレビューできないなどの問題が発生する可能性があります。これを解決するには、カスタムドメイン名を使用して OSS にアクセスできます。この方法により、ブラウザでファイルをプレビューしたり、Alibaba Cloud CDN を使用してコンテンツ配信を高速化したりできます。
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // 認証情報プロバイダーを設定します。
// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
// カスタムドメイン名を指定します。例:www.example-***.com。CNAME オプションを有効にするには、setUseCname を true に設定する必要があることに注意してください。そうしないと、カスタムドメイン名を使用できません。
// PutCname 操作を呼び出すには、PHP 8 以降を使用する必要があります。
$cfg->setRegion('cn-hangzhou')->setEndpoint('www.example-***.com')->setUseCname(true);
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。タイムアウト制御
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // 認証情報プロバイダーを設定します。
// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
$cfg->setRegion(region: "cn-hangzhou");
# 接続タイムアウト期間を設定します。
$cfg->setConnectTimeout(connectTimeout: 30);
# データの読み書きのタイムアウト期間を設定します。
$cfg->setReadwriteTimeout(readwriteTimeout:30);
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。最大リトライ回数
リクエストが失敗した場合、OSSClient はデフォルトでリクエストを 3 回リトライします。
高並行性または不安定なネットワークシナリオでは、setRetryMaxAttempts を使用してリトライ回数を増やすことができます。これにより、リクエストの成功率が向上します。
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
// 中国 (杭州):cn-hangzhou
$cfg->setRegion(region: "cn-hangzhou");
// HTTP リクエストの最大リトライ回数を設定します。デフォルト値は 3 です。
$cfg->setRetryMaxAttempts(5);
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。HTTP/HTTPS プロトコル
setDisableSSL(true) を使用して HTTPS プロトコルを無効にできます。
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
// 中国 (杭州):cn-hangzhou
$cfg->setRegion(region: "cn-hangzhou");
// SSL を無効にします。
$cfg->setDisableSSL(true);
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。Swoole フレームワークでのコルーチンの使用
次のコードは、Swoole フレームワークに基づいてコルーチンをサポートする OSS クライアントを作成する方法の例を示しています。
<?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;
// OSS クライアントを設定します。
$region = 'cn-hangzhou'; // OSS リージョン。
$bucket = 'bucket-name'; // 宛先バケット。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // 環境変数から認証情報を読み込みます。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // 認証情報プロバイダーを設定します。
$cfg->setRegion(region: $region); // リージョンを設定します。
$cfg->setEndpoint(endpoint: 'http://oss-cn-hangzhou.aliyuncs.com'); // エンドポイントを設定します。
// コルーチンをサポートする OSS クライアントを作成します。
$client = new Oss\Client(config: $cfg, options: ['handler' => HandlerStack::create(handler: new CoroutineHandler())]);
// コルーチンタスク 1:swoole.txt をアップロードします。
co(function () use ($client, $bucket) {
try {
$key = 'swoole.txt'; // オブジェクト名。
$data = 'Hello OSS'; // オブジェクトの内容。
$request = new Oss\Models\PutObjectRequest($bucket, $key); // アップロードリクエストを作成します。
$request->body = Oss\Utils::streamFor($data); // リクエストボディを設定します。
$result = $client->putObject(request: $request); // アップロードを実行します。
echo "Task 1 Result:\n" . var_export($result, true) . "\n"; // 結果を出力します。
} catch (\Exception $e) {
echo "Task 1 Error: " . $e->getMessage() . "\n"; // 例外をキャッチします。
}
});
// コルーチンタスク 2:hyperf.txt をアップロードします。
co(function () use ($client, $bucket) {
try {
$key = 'hyperf.txt'; // オブジェクト名。
$data = 'Hello OSS'; // オブジェクトの内容。
$request = new Oss\Models\PutObjectRequest($bucket, $key); // アップロードリクエストを作成します。
$request->body = Oss\Utils::streamFor($data); // リクエストボディを設定します。
$result = $client->putObject($request); // アップロードを実行します。
echo "Task 2 Result:\n" . var_export($result, true) . "\n"; // 結果を出力します。
} catch (\Exception $e) {
echo "Task 2 Error: " . $e->getMessage() . "\n"; // 例外をキャッチします。
}
});
内部エンドポイントの使用
ご利用のアプリケーションが Alibaba Cloud Elastic Compute Service (ECS) インスタンスにデプロイされており、同じリージョン内の OSS リソースに頻繁にアクセスする必要がある場合は、内部エンドポイントを使用してトラフィックコストを削減し、アクセス速度を向上させることができます。
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // 認証情報プロバイダーを設定します。
// 方法 1:リージョンを指定し、setUseInternalEndpoint を true に設定します。
// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
$cfg->setRegion('cn-hangzhou')->setUseInternalEndpoint(true);
// // 方法 2:リージョンとエンドポイントを直接指定します。
// // バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
// // バケットのリージョンの内部エンドポイントを指定します。たとえば、中国 (杭州) の場合は、エンドポイントを 'https://oss-cn-hangzhou-internal.aliyuncs.com' に設定します。
// // HTTP プロトコルを使用するには、エンドポイントを 'http://oss-cn-hangzhou-internal.aliyuncs.com' に設定します。
// $cfg->setRegion('cn-hangzhou')->setEndpoint('https://oss-cn-hanghzou-internal.aliyuncs.com');
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。アクセラレーションエンドポイントの使用
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // 認証情報プロバイダーを設定します。
// 方法 1:リージョンを指定し、setUseAccelerateEndpoint を true に設定します。
// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
$cfg->setRegion('cn-hangzhou')->setUseAccelerateEndpoint(true);
// // 方法 2:リージョンとエンドポイントを直接指定します。
// // バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
// // バケットのリージョンのアクセラレーションエンドポイントを指定します。たとえば、中国 (杭州) の場合は、エンドポイントを 'https://oss-accelerate.aliyuncs.com' に設定します。
// $cfg->setRegion('cn-hangzhou')->setEndpoint('https://oss-accelerate.aliyuncs.com');
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。プライベートドメインの使用
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // 認証情報プロバイダーを設定します。
// バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
// プライベートドメインを指定します。例:https://service.corp.example.com
$cfg->setRegion('cn-hangzhou')->setEndpoint('https://service.corp.example.com');
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。
Alibaba Gov Cloud エンドポイントの使用
次のコードは、Alibaba Gov Cloud エンドポイントを使用して OSSClient を設定する方法の例を示しています。
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# デフォルトの SDK 設定を読み込み、認証情報プロバイダーを設定します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // 認証情報プロバイダーを設定します。
// バケットが配置されているリージョンを指定します。たとえば、中国 (北京) Alibaba Gov Cloud 1 の場合は、リージョンを cn-north-2-gov-1 に設定します。
// バケットのリージョンの内部エンドポイントを指定します。たとえば、中国 (北京) Alibaba Gov Cloud 1 の場合は、エンドポイントを 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com' に設定します。
// HTTP プロトコルを使用するには、エンドポイントを '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');
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。アクセス認証情報の設定
OSS は、認証情報を初期化するための複数の方法を提供しています。認証と権限付与の要件に基づいて方法を選択できます。
RAM ユーザーの AccessKey ペアの使用
Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペア (AccessKey ID と AccessKey Secret) を使用して、認証情報プロバイダーを初期化できます。この方法は、ご利用のアプリケーションが安全で安定した環境にデプロイされており、外部攻撃の影響を受けにくく、OSS への長期的なアクセスが必要で、認証情報を頻繁にローテーションできない場合に適しています。この方法では AccessKey ペアを手動で維持する必要があり、セキュリティリスクとメンテナンスの複雑さが増すことに注意してください。
Alibaba Cloud アカウントは、すべてのリソースに対する完全な権限を持っています。Alibaba Cloud アカウントの AccessKey ペアが漏洩すると、システムに重大なリスクが生じます。最小限の必要な権限が付与された RAM ユーザーの AccessKey ペアを使用することを推奨します。
RAM ユーザーの AccessKey ペアを作成する方法の詳細については、「AccessKey ペアの作成」をご参照ください。RAM ユーザーの AccessKey ID と AccessKey Secret は、AccessKey ペアが作成されたときにのみ表示されます。すぐに保存する必要があります。AccessKey ペアを忘れた場合は、ローテーションのために新しいものを作成してください。
環境変数
RAM ユーザーの AccessKey ペアを使用して環境変数を設定します。
Linux
CLI で次のコマンドを実行して、環境変数の設定を
~/.bashrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc変更を適用します。
source ~/.bashrc環境変数が有効になっているかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを表示します。
echo $SHELLデフォルトのシェルタイプに基づいて環境変数を設定します。
Zsh
次のコマンドを実行して、環境変数の設定を
~/.zshrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc変更を適用します。
source ~/.zshrc環境変数が有効になっているかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
次のコマンドを実行して、環境変数の設定を
~/.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変更を適用します。
source ~/.bash_profile環境変数が有効になっているかどうかを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
CMD で次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"環境変数が有効になっているかどうかを確認します。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
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)環境変数が有効になっているかどうかを確認します。
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
システム環境変数を変更した後は、開発環境を再起動または更新して、最新のシステム環境変数が読み込まれるようにする必要があります。これには、IDE、コマンドラインインターフェイス、その他のデスクトップアプリケーション、およびバックエンドサービスが含まれます。
環境変数を使用して認証情報を渡します。
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; # バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。 $region = "cn-hangzhou"; // EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。 $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // デフォルトの SDK 設定を使用します。 $cfg = Oss\Config::loadDefault(); $cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを設定します。 $cfg->setRegion($region); // バケットが配置されているリージョンを設定します。 // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 作成したクライアントを後続の操作に使用します。
静的認証情報
次のサンプルコードは、使用する AccessKey ペアを明示的に設定することで、アクセス認証情報をハードコーディングする方法を示しています。
本番環境のアプリケーションにアクセス認証情報を埋め込まないでください。この方法はテスト目的でのみ使用します。
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
# バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
$region = "cn-hangzhou";
# 静的な認証情報プロバイダーを作成し、AccessKey ID と AccessKey Secret を明示的に設定します。ご利用の RAM ユーザーの AccessKey ID と AccessKey Secret に置き換えてください。
$credentialsProvider = new Oss\Credentials\StaticCredentialsProvider("RAM AccessKey ID","RAM AccessKey Secret");
// デフォルトの SDK 設定を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを設定します。
$cfg->setRegion($region); // バケットが配置されているリージョンを設定します。
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。STS トークンの使用
ご利用のアプリケーションが OSS への一時的なアクセスを必要とする場合は、Security Token Service (STS) から取得した一時的な ID 認証情報 (AccessKey ID、AccessKey Secret、および STS トークン) を使用して認証情報プロバイダーを初期化できます。この方法では STS トークンを手動で維持する必要があり、セキュリティリスクとメンテナンスの複雑さが増すことに注意してください。さらに、OSS に複数回一時的にアクセスしたい場合は、STS トークンを手動で更新する必要があります。
OpenAPI を使用して STS トークンを迅速に取得する方法については、「AssumeRole」をご参照ください。
SDK を使用して STS トークンを取得する方法については、「STS トークンを使用して OSS にアクセスする」をご参照ください。
STS トークンには、トークンが生成されるときに指定された有効期限があることに注意してください。トークンの有効期限が切れると、無効になり使用できなくなります。
STS サービスエンドポイントのリストについては、「エンドポイント」をご参照ください。
環境変数
一時的な ID 認証情報を使用して環境変数を設定します。
Mac OS X/Linux/UNIX
警告STS から取得した一時的な ID 認証情報 (AccessKey ID、AccessKey Secret、および STS トークン) を使用します。RAM ユーザーの AccessKey ペアは使用しないでください。
STS から取得した AccessKey ID は「STS」で始まることに注意してください。例:「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
警告STS から取得した一時的な ID 認証情報 (AccessKey ID、AccessKey Secret、および STS トークン) を使用します。RAM ユーザーの AccessKey ペアは使用しないでください。
STS から取得した AccessKey ID は「STS」で始まることに注意してください。例:「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>環境変数を使用して認証情報を渡します。
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; # バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。 $region = "cn-hangzhou"; // EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID、AccessKey Secret、および STS トークンを読み取ります。 $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // デフォルトの SDK 設定を使用します。 $cfg = Oss\Config::loadDefault(); $cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを設定します。 $cfg->setRegion($region); // バケットが配置されているリージョンを設定します。 // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 作成したクライアントを後続の操作に使用します。
静的認証情報
使用する一時的な AccessKey ペアを明示的に設定することで、アプリケーションに認証情報をハードコーディングできます。
本番環境のアプリケーションにアクセス認証情報を埋め込まないでください。この方法はテスト目的でのみ使用します。
<?php
// autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
# バケットが配置されているリージョンを指定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。
$region = "cn-hangzhou";
# 取得した一時的な AccessKey ID と AccessKey Secret を指定します。Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret は使用しないでください。
# STS から取得した AccessKey ID は、次の例のように STS で始まることに注意してください。
$stsAccessKeyId = 'STS.****************';
$stsAccessKeySecret = 'yourAccessKeySecret';
# 取得した STS トークンを指定します。
$stsSecurityToken = 'yourSecurityToken';
# 静的な認証情報プロバイダーを作成し、一時的な AccessKey ID、AccessKey Secret、および STS トークンを明示的に設定します。
$credentialsProvider = new Oss\Credentials\StaticCredentialsProvider($stsAccessKeyId, $stsAccessKeySecret, $stsSecurityToken);
// デフォルトの SDK 設定を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを設定します。
$cfg->setRegion($region); // バケットが配置されているリージョンを設定します。
// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);
// 作成したクライアントを後続の操作に使用します。RAM ロールの ARN の使用
ご利用のアプリケーションがクロスアカウントアクセスなど、OSS への承認済みアクセスを必要とする場合は、RAM ロールの Alibaba Cloud リソースネーム (ARN) を使用して認証情報プロバイダーを初期化できます。この方法は STS トークンを使用します。RAM ロールの ARN を指定することにより、Credentials ツールは STS から STS トークンを取得し、現在のトークンが有効期限切れになる前に AssumeRole 操作を呼び出して新しい STS トークンをリクエストします。policy パラメーターに値を割り当てて、RAM ロールにより小さな権限セットを付与することもできます。
Alibaba Cloud アカウントは、すべてのリソースに対する完全な権限を持っています。Alibaba Cloud アカウントの AccessKey ペアが漏洩すると、システムに重大なリスクが生じます。最小限の必要な権限が付与された RAM ユーザーの AccessKey ペアを使用することを推奨します。
RAM ユーザーの AccessKey ペアを作成する方法の詳細については、「AccessKey ペアの作成」をご参照ください。RAM ユーザーの AccessKey ID と AccessKey Secret は、AccessKey ペアが作成されたときにのみ表示されます。すぐに保存する必要があります。AccessKey ペアを忘れた場合は、ローテーションのために新しいものを作成してください。
RAM ロールの ARN を取得する方法の詳細については、「CreateRole」をご参照ください。
Alibaba Cloud 認証情報ライブラリ credentials-php を追加します。
composer require alibabacloud/credentialsAccessKey ペアと RAM ロールの ARN をアクセス認証情報として設定します。
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Credentials\Credential; // 認証情報の種類と関連情報を定義するための設定オブジェクトを作成します。 $config = new Credential\Config([ // 認証情報の種類を指定します。この例では、RAM ロールの ARN タイプが使用されます。 'type' => 'ram_role_arn', // Alibaba Cloud アカウントの AccessKey ID。 'accessKeyId' => 'AccessKeyId', // Alibaba Cloud アカウントの AccessKey Secret。 'accessKeySecret' => 'AccessKeySecret', // RAM ロールの ARN。例:acs:ram::USER_Id:role/ROLE_NAME。 'roleArn' => 'RoleArn', // 現在のセッションを識別するために使用されるロールセッション名。 'roleSessionName' => 'yourRoleSessionName', // オプション。STS トークンの権限を制限するために使用されるポリシー。 'policy' => 'Policy', ]); // 設定オブジェクトを使用して認証情報インスタンスを初期化します。 $credential = new Credential($config); // デフォルトの SDK 設定を読み込みます。 $cfg = Oss\Config::loadDefault(); // コールバック関数を使用して動的に認証情報を生成するように認証情報プロバイダーを設定します。 $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) { // 一時的な認証情報 (STS トークン) を取得します。 $cred = $credential->getCredential(); // AccessKey ID、AccessKey Secret、および STS トークンを含む認証情報オブジェクトを返します。 return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // 一時的な AccessKey ID。 accessKeySecret: $cred->getAccessKeySecret(), // 一時的な AccessKey Secret。 securityToken: $cred->getSecurityToken() // STS トークン。 ); })); // OSS クライアントのリージョン情報を設定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。 $region = 'cn-hangzhou'; $cfg->setRegion($region); // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 作成したクライアントを後続の操作に使用します。
インスタンス RAM ロールの使用
アプリケーションが ECS インスタンス、ECI インスタンス、または Container Service for Kubernetes のワーカーノードで実行されている場合、RAM ロールを使用して資格情報プロバイダーを初期化することをお勧めします。このメソッドの基盤となるロジックは、セキュリティトークンサービス (STS) トークンに基づいています。RAM ロールを使用すると、ロールを ECS インスタンス、ECI インスタンス、または Container Service for Kubernetes のワーカーノードに関連付けて、インスタンス内の STS トークンを自動的にリフレッシュできます。このメソッドでは AccessKey ペアまたは STS トークンは不要なため、これらの資格情報を手動で管理することに伴うリスクが排除されます。RAM ロールの取得方法の詳細については、「CreateRole」をご参照ください。
Alibaba Cloud 認証情報ライブラリ credentials-php を追加します。
composer require alibabacloud/credentialsインスタンス RAM ロールをアクセス認証情報として設定します。
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once 'vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Credentials\Credential; // 認証情報の種類と関連情報を定義するための設定オブジェクトを作成します。 $config = new Credential\Config([ // 認証情報の種類を指定します。この例では、ECS インスタンス RAM ロールタイプが使用されます。値は ecs_ram_role に固定されます。 'type' => 'ecs_ram_role', // ECS インスタンスにアタッチされている RAM ロールの名前を指定します。 'roleName' => "<role_name>", // 実際の RAM ロール名に置き換えてください。 ]); // 設定オブジェクトを使用して認証情報インスタンスを初期化します。 $credential = new Credential($config); // デフォルトの設定を読み込み、OSS 設定オブジェクトを取得します。 $cfg = Oss\Config::loadDefault(); // コールバック関数を使用して動的に認証情報を生成するように認証情報プロバイダーを設定します。 $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) { // 一時的な認証情報 (STS トークン) を取得します。 $cred = $credential->getCredential(); // AccessKey ID、AccessKey Secret、および STS トークンを含む認証情報オブジェクトを返します。 return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // 一時的な AccessKey ID。 accessKeySecret: $cred->getAccessKeySecret(), // 一時的な AccessKey Secret。 securityToken: $cred->getSecurityToken() // STS トークン。 ); })); // OSS クライアントのリージョン情報を設定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。 $region = 'cn-hangzhou'; $cfg->setRegion($region); // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 作成したクライアントを後続の操作に使用します。
OIDC ロールの ARN の使用
Container Service for Kubernetes (ACK) のワーカーノードに RAM ロールを割り当てた後、そのノード上の Pod 内のアプリケーションは、ECS インスタンス上のアプリケーションと同様に、メタデータサービスから STS トークンを取得できます。ただし、顧客からのアプリケーションなど、信頼できないアプリケーションがワーカーノードのインスタンス RAM ロールの STS トークンを取得することを望まない場合があります。これらのアプリケーションが必要な STS トークンを最小限の権限で取得できるようにしつつ、クラウドリソースを保護するには、RAM Roles for Service Account (RRSA) 機能を使用できます。この方法は STS トークンを使用します。ACK は、各アプリケーション Pod に対して OpenID Connect (OIDC) トークンファイルを作成してマウントし、環境変数に設定情報を注入します。Credentials ツールはこれらの変数を読み取り、STS の AssumeRoleWithOIDC 操作を呼び出して、アタッチされたロールの STS トークンを取得します。この方法では、AccessKey ペアや STS トークンを提供する必要がないため、手動での認証情報管理のリスクが排除されます。詳細については、「RRSA を使用して ServiceAccount の RAM 権限を設定し、Pod の権限を分離する」をご参照ください。
Alibaba Cloud 認証情報ライブラリ credentials-php を追加します。
composer require alibabacloud/credentials
OIDC ロールの ARN をアクセス認証情報として設定します。
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once 'vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Credentials\Credential; // 認証情報の種類と関連情報を定義するための設定オブジェクトを作成します。 $config = new Credential\Config([ // 認証情報の種類を指定します。この例では、OIDC ロールの ARN タイプが使用されます。 'type' => 'oidc_role_arn', // OIDC ID プロバイダーの ARN を指定します。これは ALIBABA_CLOUD_OIDC_PROVIDER_ARN 環境変数を使用して設定できます。 'oidcProviderArn' => '<oidc_provider_arn>', // 実際の OIDC プロバイダーの ARN に置き換えてください。 // OIDC トークンファイルのパスを指定します。これは ALIBABA_CLOUD_OIDC_TOKEN_FILE 環境変数を使用して設定できます。 'oidcTokenFilePath' => '<oidc_token_file_path>', // 実際の OIDC トークンファイルのパスに置き換えてください。 // RAM ロールの ARN を指定します。これは ALIBABA_CLOUD_ROLE_ARN 環境変数を使用して設定できます。 'roleArn' => '<role_arn>', // 実際の RAM ロールの ARN に置き換えてください。 // ロールセッション名を指定します。これは ALIBABA_CLOUD_ROLE_SESSION_NAME 環境変数を使用して設定できます。 'roleSessionName' => '<role_session_name>', // 実際のロールセッション名に置き換えてください。 // オプション。RAM ロールの権限を制限するための権限ポリシーを指定します。 // ポリシーの例:{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} 'policy' => '', // 権限を制限するには、これを実際のポリシー JSON 文字列に置き換えてください。 // オプション。セッションの有効期間を秒単位で指定します。デフォルト値は 3,600 秒です。 'roleSessionExpiration' => 3600, // 有効期間を調整するには、この値を変更してください。 ]); // 設定オブジェクトを使用して認証情報インスタンスを初期化します。 $credential = new Credential($config); // デフォルトの設定を読み込み、OSS 設定オブジェクトを取得します。 $cfg = Oss\Config::loadDefault(); // コールバック関数を使用して動的に認証情報を生成するように認証情報プロバイダーを設定します。 $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) { // 一時的な認証情報 (STS トークン) を取得します。 $cred = $credential->getCredential(); // AccessKey ID、AccessKey Secret、および STS トークンを含む認証情報オブジェクトを返します。 return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // 一時的な AccessKey ID。 accessKeySecret: $cred->getAccessKeySecret(), // 一時的な AccessKey Secret。 securityToken: $cred->getSecurityToken() // STS トークン。 ); })); // OSS クライアントのリージョン情報を設定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。 $region = 'cn-hangzhou'; $cfg->setRegion($region); // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 作成したクライアントを後続の操作に使用します。
カスタムアクセス認証情報の使用
前述の認証情報設定方法が要件を満たさない場合は、認証情報を取得する方法をカスタマイズできます。SDK は複数の実装方法をサポートしています。
Oss\Credentials\CredentialsProviderFunc の使用
Oss\Credentials\CredentialsProviderFunc は、Oss\Credentials\CredentialsProvider のユーザビリティラッパーです。
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once 'vendor/autoload.php'; // 必要な名前空間をインポートします。 use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Oss\V2\Credentials\Credentials; // 無名関数を使用して動的に認証情報を生成する認証情報プロバイダーを作成します。 $provider = new Oss\Credentials\CredentialsProviderFunc( function () { // 長期的な認証情報を返します。これには AccessKey ID と AccessKey Secret のみが含まれます。 return new Credentials( accessKeyId: 'id', // 実際の RAM AccessKey ID に置き換えてください。 accessKeySecret: 'secret' // 実際の RAM AccessKey Secret に置き換えてください。 ); // STS トークンを含む一時的な認証情報を返すには、次のコードのコメントを解除し、値を実際の値に置き換えることができます。 /* return new Credentials( accessKeyId: 'id', // 実際の一時的な AccessKey ID に置き換えてください。 accessKeySecret: 'secret', // 実際の一時的な AccessKey Secret に置き換えてください。 securityToken: 'token' // 実際の STS トークンに置き換えてください。 ); */ } ); // デフォルトの設定を読み込み、OSS 設定オブジェクトを取得します。 $cfg = Oss\Config::loadDefault(); // 認証情報プロバイダーを動的に生成された認証情報プロバイダーに設定します。 $cfg->setCredentialsProvider($provider); // OSS クライアントのリージョン情報を設定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。 $region = 'cn-hangzhou'; $cfg->setRegion($region); // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 作成したクライアントを後続の操作に使用します。Oss\Credentials\CredentialsProvider の実装
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once 'vendor/autoload.php'; // 必要な名前空間をインポートします。 use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Oss\V2\Credentials\Credentials; // CredentialsProvider インターフェイスを実装するカスタム認証情報プロバイダークラス。 class CustomerCredentialsProvider implements Oss\Credentials\CredentialsProvider { /** * 認証情報を取得するメソッド。長期的または一時的な認証情報を返します。 * * @return Credentials AccessKey ペア情報を含む認証情報オブジェクトを返します。 */ public function getCredentials(): Credentials { // 長期的な認証情報を返します。これには AccessKey ID と AccessKey Secret のみが含まれます。 return new Credentials( accessKeyId: 'id', // 実際の RAM AccessKey ID に置き換えてください。 accessKeySecret: 'secret' // 実際の RAM AccessKey Secret に置き換えてください。 ); // STS トークンを含む一時的な認証情報を返すには、次のコードのコメントを解除し、値を実際の値に置き換えることができます。 /* return new Credentials( accessKeyId: 'id', // 実際の一時的な AccessKey ID に置き換えてください。 accessKeySecret: 'secret', // 実際の一時的な AccessKey Secret に置き換えてください。 securityToken: 'token' // 実際の STS トークンに置き換えてください。 ); */ } } // カスタム認証情報プロバイダーをインスタンス化します。 $provider = new CustomerCredentialsProvider(); // デフォルトの設定を読み込み、OSS 設定オブジェクトを取得します。 $cfg = Oss\Config::loadDefault(); // 認証情報プロバイダーをカスタム認証情報プロバイダーに設定します。 $cfg->setCredentialsProvider($provider); // OSS クライアントのリージョン情報を設定します。たとえば、中国 (杭州) の場合は、リージョンを cn-hangzhou に設定します。 $region = 'cn-hangzhou'; $cfg->setRegion($region); // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 作成したクライアントを後続の操作に使用します。
エラーのトラブルシューティング
OSS SDK for PHP 2.0 を使用して OSS にアクセスする際にエラーが発生した場合、OSS は HTTP ステータスコード、メッセージ、リクエスト ID、エラーコード (EC) などの情報を返します。EC はエラーの特定の原因に対応しています。EC を使用してエラーをトラブルシューティングできます。
たとえば、次のコードを使用して存在しないファイルをダウンロードします。
<?php // autoload ファイルをインポートして、依存関係が正しく読み込まれるようにします。 require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; // コマンドライン引数の説明を定義します。 $optsdesc = [ "region" => ['help' => 'バケットが配置されているリージョン。', 'required' => True], // バケットが配置されているリージョン (必須)。 "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False], // エンドポイント (オプション)。 "bucket" => ['help' => 'バケットの名前', 'required' => True], // バケット名 (必須)。 "key" => ['help' => 'オブジェクトの名前', 'required' => True], // オブジェクト名 (必須)。 ]; // パラメーターの説明を getopt で必要なロングオプション形式に変換します。 // 各パラメーターの後のコロン「:」は、パラメーターが値を必要とすることを示します。 $longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc)); // コマンドライン引数を解析します。 $options = getopt("", $longopts); // すべての必須パラメーターが存在することを確認します。 foreach ($optsdesc as $key => $value) { if ($value['required'] === True && empty($options[$key])) { $help = $value['help']; // パラメーターのヘルプ情報を取得します。 echo "Error: the following arguments are required: --$key, $help" . PHP_EOL; exit(1); // 必須パラメーターが欠落している場合はプログラムを終了します。 } } // 解析されたパラメーターから値を抽出します。 $region = $options["region"]; // バケットが配置されているリージョン。 $bucket = $options["bucket"]; // バケット名。 $key = $options["key"]; // オブジェクト名。 // 環境変数から認証情報を読み込みます。 // EnvironmentVariableCredentialsProvider を使用して、環境変数から AccessKey ID と AccessKey Secret を読み取ります。 $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // デフォルトの SDK 設定を使用します。 $cfg = Oss\Config::loadDefault(); $cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを設定します。 $cfg->setRegion($region); // バケットが配置されているリージョンを設定します。 if (isset($options["endpoint"])) { $cfg->setEndpoint($options["endpoint"]); // エンドポイントが提供されている場合は、エンドポイントを設定します。 } // OSS クライアントインスタンスを作成します。 $client = new Oss\Client($cfg); // 指定されたオブジェクトのコンテンツを取得するための GetObjectRequest オブジェクトを作成します。 $request = new Oss\Models\GetObjectRequest(bucket: $bucket, key: $key); // オブジェクト取得操作を実行します。 $result = $client->getObject($request); // コンテンツを保存するローカルファイルパスを定義します。 $localFilePath = './test/file.txt'; // 実際のファイルパスに置き換えてください。 // コンテンツをローカルファイルに書き込みます。 file_put_contents( $localFilePath, $result->body->getContents()); // 結果を出力します。 // HTTP ステータスコード、リクエスト ID、およびオブジェクトのコンテンツを出力します。 printf( 'status code:' . $result->statusCode . PHP_EOL . // HTTP ステータスコード。たとえば、200 は成功を示します。 'request id:' . $result->requestId . PHP_EOL // リクエスト ID。デバッグやリクエストの追跡に使用されます。 );次のサンプル応答が返されます。応答には 'EC': '0026-00000001' が含まれており、これはエラーの原因の一意の識別子です。
前述のサンプルエラーリクエストで返された EC に基づいて、問題の原因と対応するソリューションを見つけるには、次の手順を実行します。
OpenAPI トラブルシューティングセンターを開きます。
検索ボックスに EC (例:0026-00000001) を入力します。
検索結果で問題の原因と対応するソリューションを見つけます。
サンプルコード
OSS SDK for PHP 2.0 は、参照用に豊富なサンプルコードを提供しています。
サンプル内容 | GitHub サンプルファイル |
オブジェクトタグの設定 (OSS SDK for PHP 2.0) | |