すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSS SDK for PHPを使用してOSSClientインスタンスを初期化する

最終更新日:Mar 13, 2024

OSSClientは、Object Storage Service (OSS) のPHPクライアントです。 バケットやオブジェクトなどのOSSリソースの管理に使用されます。 OSS SDK for PHPを使用してリクエストを開始するには、OSSClientインスタンスを初期化し、デフォルトの設定項目を変更する必要があります。

OSSClientインスタンスの作成

V1署名アルゴリズムの使用

OSSエンドポイントを使用したOSSClientインスタンスの作成

次のサンプルコードは、OSSエンドポイントを使用してOSSClientインスタンスを作成する方法の例を示しています。 さまざまなリージョンのOSSエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

<?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';
}

OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\CoreOssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。  
$provider = new EnvironmentVariableCredentialsProvider();
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
$end point = "https://oss-cn-hangzhou.aliyuncs.com";

try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}
                    

カスタムドメイン名を使用したOSSClientインスタンスの作成

次のサンプルコードは、カスタムドメイン名を使用してOSSClientインスタンスを作成する方法の例を示しています。 詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。

重要

カスタムドメイン名が使用されている場合、listBucketsメソッドは使用できません。

<?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';
}

OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\CoreOssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。  
$provider = new EnvironmentVariableCredentialsProvider();
// カスタムドメイン名を指定します。 例: http://example.com。 
$end point = "http://example.com";

try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
        "cname" => true
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}    
                

STSから取得したアクセス資格情報を使用したOSSClientインスタンスの作成

次のサンプルコードは、Security Token Service (STS) から取得したアクセス資格情報を使用してOSSClientインスタンスを作成する方法の例を示しています。

<?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';
}

OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// サンプルコードを実行する前に、アクセス資格情報が設定されていることを確認してください。 アクセス資格情報は、AccessKeyペアとセキュリティトークンで構成されます。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 
$provider = new EnvironmentVariableCredentialsProvider();
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
$end point = "https://oss-cn-hangzhou.aliyuncs.com";

try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、        
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}
                    
                    

EcsRamRoleを使用したOSSClientインスタンスの作成

RAMロールをECS (Elastic Compute Service) インスタンスにアタッチして、STSから取得した一時的なアクセス資格情報を使用して、インスタンスからOSSにアクセスできます。 STSの一時的なアクセス資格情報は自動的に生成および更新されます。 アプリケーションは、インスタンスメタデータURLを使用してSTSの一時的なアクセス資格情報を取得できます。

重要

EcsRamRoleを使用してOSSClientインスタンスを作成する前に、以下のコマンドを実行して、Composerを使用してOSS SDK for PHPをインストールします。

作曲家にはalibabacloud /資格情報
が必要

次のサンプルコードは、EcsRamRoleを使用してOSSClientインスタンスを作成する方法の例を示しています。

<?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';
}

OSS\Credentials\CredentialsProviderを使用します。listaCloud \Credentials\Credential; を使用します。OSS\Credentials\StaticCredentialsProviderを使用します。OSS\Core\OssExceptionを使用します。OSS\OssClientを使用します。クラスAlibaba CloudCredentialsWrapperがCredentialsProviderを実装 {
    /**
     * @ var \OSS\Credentials\Credentials
     */
    プライベート $ラッパー;
    public function __construct($wrapper){
        $this->wrapper = $wrapper;
    }
    public関数getCredentials(){
        $ak = $this->wrapper->getAccessKeyId();
        $sk = $this->wrapper->getAccessKeySecret();
        $token = $this->wrapper->getSecurityToken();
        新しいStaticCredentialsProvider($ak、$sk、$token) を返します。
    }
}
$ecsRamRole = new Credential (配列)
    // 資格情報のタイプをecs_ram_roleに設定します。 
    'type' => 'ecs_ram_role '、
    // ロール名を指定します。 
    'role_name' => 'EcsRamRoleOssTest' 、));
$providerWarpper = new Alibaba CloudCredentialsWrapper($ecsRamRole);
$provider = $providerWarpper->getCredentials();
$config=配列 (
    'provider' => $provider,
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    'endpoint'=> 'https:// oss-cn-hangzhou.aliyuncs.com'
);
try {
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
} 

STSAssumeRoleを使用したOSSClientインスタンスの作成

重要

STSAssumeRoleを使用してOSSClientインスタンスを作成する前に、以下のコマンドを実行して、Composerを使用してOSS SDK for PHPをインストールします。

作曲家にはalibabacloud /資格情報
が必要

次のサンプルコードは、STSAssumeRoleを使用してOSSClientインスタンスを作成する方法の例を示しています。

<?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';
}

OSS\Credentials\CredentialsProviderを使用します。listaCloud \Credentials\Credential; を使用します。OSS\Credentials\StaticCredentialsProviderを使用します。OSS\Core\OssExceptionを使用します。OSS\OssClientを使用します。クラスAlibaba CloudCredentialsWrapperがCredentialsProviderを実装 {
 /**
 * @ var \OSS\Credentials\Credentials
 */
 プライベート $ラッパー;
 public function __construct($wrapper){
 $this->wrapper = $wrapper;
 }
 public関数getCredentials(){
 $ak = $this->wrapper->getAccessKeyId();
 $sk = $this->wrapper->getAccessKeySecret();
 $token = $this->wrapper->getSecurityToken();
 新しいStaticCredentialsProvider($ak、$sk、$token) を返します。
 }
}
$ramRoleArn = new Credential (配列)
 // 資格情報のタイプをram_role_arnに設定します。 
 'type' => 'ram_role_arn '、
 // サンプルコードを実行する前に、RAMユーザーのAccessKeyペアを使用して、YOUR_ACCESS_KEY_IDとYOUR_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
 'access_key_id ' => getenv('YOUR_ACCESS_KEY_ID') 、
 'access_key_secret ' => getenv('YOUR_ACCESS_KEY_SECRET') 、
 // RAMロールのAlibaba Cloud Resource Name (ARN) を指定します。これは、想定されるロールのIDです。 形式: acs:ram ::$ accountID:role/$roleName。 
 'role_arn' => 'acs:ram::17464958 *********: role /ossstest' 、
 // 異なるトークンを区別するために、ロールのカスタムセッション名を指定します。 
 'role_session_name ' => 'yourRoleSessionName' 、
 // カスタムポリシーを指定します。 
 'policy' => ''、));
$providerWarpper = new Alibaba CloudCredentialsWrapper($ramRoleArn);
$provider = $providerWarpper->getCredentials();
$config=配列 (
 'provider' => $provider,
 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
 'endpoint'=> 'https:// oss-cn-hangzhou.aliyuncs.com'
);
try {
 $ossClient = new OssClient($config);
 var_dump($ossClient);
} catch (OssException $e) {
 print $e->getMessage();
} 

V4署名アルゴリズムの使用 (推奨)

V4署名アルゴリズムを使用する場合は、初期化の前にOSSClientインスタンスにエンドポイントのリージョンを追加し、OssClientをOSS_SIGNATURE_VERSION_V4に設定する必要があります。 V4署名アルゴリズムは、V1署名アルゴリズムよりも安全である。 OSS SDK for PHP 2.7.0以降はV4署名をサポートしています。

次のサンプルコードは、OSSエンドポイントを使用してOSSClientインスタンスを作成し、V4署名アルゴリズムを使用してリクエストに署名する方法の例を示しています。 STSから取得したカスタムドメイン名またはアクセス資格情報を使用してOSSClientインスタンスを作成するには、次のサンプルコードを参照して変数を変更します。

<?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';
}

OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。try {
    // 環境変数からアクセス資格情報を取得し、プロバイダーに資格情報を保存します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    $provider = new EnvironmentVariableCredentialsProvider();
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
    $end point = "https://oss-cn-hangzhou.aliyuncs.com";    
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4、
        // エンドポイントのリージョンを指定します。 例:cn-hangzhou。 
        "region" => "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    printf($e->getMessage()) 。 "\n");
    戻ります。} 

OSSClient インスタンスの設定

OSSClientインスタンスを使用して、プロキシ、接続タイムアウト、最大接続数などのパラメーターを設定できます。

パラメーター

説明

メソッド

timeout

Socketレイヤーでのデータ送信のタイムアウト期間。 単位は秒です。 デフォルト値: 5184000

$ossClient->setTimeout(60);

connectTimeout

接続を確立するためのタイムアウト期間。 単位は秒です。 デフォルト値は 10 です。

$ossClient->setConnectTimeout(600);

maxRetries

リクエストエラー発生時の最大リトライ回数。 デフォルト値: 3。

$ossClient->setMaxTries(5);

useSSL

SSLベースの認証を有効にするかどうかを指定します。 有効な値:

  • true

  • false

$ossClient->setUseSSL(true);

<?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';
}

OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\CoreOssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。  
$provider = new EnvironmentVariableCredentialsProvider();
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
$end point = "https://oss-cn-hangzhou.aliyuncs.com";

try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
    );
    $ossClient = new OssClient($config);
    // 接続を確立するためのタイムアウト時間を指定します。 
    $ossClient->setConnectTimeout(300);
    // リクエストエラー発生時の最大リトライ回数を指定します。 
    $ossClient->setMaxTries(5);    
    // ソケット層でのデータ送信のタイムアウト期間を指定します。 
    $ossClient->setTimeout(30);
    // SSLベースの認証を有効にするかどうかを指定します。 
    $ossClient->setUseSSL(true);
} catch (OssException $e) {
    print $e->getMessage();
} 

プロキシサーバーの構成

OSS SDK for PHP 5.3のプロキシサーバーを設定できます。

? 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';
}

OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// サンプルコードを実行する前に、アクセス資格情報が設定されていることを確認してください。 アクセス資格情報は、AccessKeyペアとセキュリティトークンで構成されます。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 
$provider = new EnvironmentVariableCredentialsProvider();
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
$end point = "https://oss-cn-hangzhou.aliyuncs.com";
// プロキシサーバーのIPアドレスを指定します。 例: http://<username >:< password >@< proxyip >:< proxyport> 
$request_proxy = "yourRequestProxy"
try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
        "request_proxy"=> $request_proxy,
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}