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

Object Storage Service:アクセス認証情報の設定 (PHP SDK V1)

最終更新日:Nov 30, 2025

PHP SDK を使用して OSS にリクエストを送信するには、アクセス認証情報を設定する必要があります。Alibaba Cloud サービスはこれらの認証情報を使用して、お客様の ID とアクセス権限を検証します。認証と権限付与の要件に基づいて、さまざまな種類のアクセス認証情報から選択できます。このトピックでは、一時的なアクセス認証情報と長期的なアクセス認証情報を設定する方法について説明します。

前提条件

アクセス認証情報を設定する前に、OSS PHP SDK をインストールする必要があります。詳細については、「インストール (PHP SDK V1)」をご参照ください。

認証情報プロバイダーの初期化

認証情報プロバイダーの選択

OSS は、認証情報プロバイダーを初期化するための複数のメソッドをサポートしています。シナリオの認証と権限付与の要件に基づいてメソッドを選択できます。

初期化メソッド

シナリオ

既存の AccessKey または STS トークンが必要か

基になる資格情報

資格情報の有効期間

資格情報のローテーションまたはリフレッシュ方法

方法 1: AccessKey ペアを使用する

安全な環境で実行され、頻繁な認証情報のローテーションなしで Alibaba Cloud サービスへの長期的なアクセスを必要とするアプリケーション。

はい

AccessKey

長期

手動ローテーション

方法 2:STS トークンの使用

有効期間とアクセス権限をコントロールする必要がある、信頼できない環境で実行されるアプリケーション。

はい

STS トークン

一時的

手動リフレッシュ

方法 3: RAMRoleARN を使用する

クロスアカウントアクセスなど、Alibaba Cloud サービスへの権限付与されたアクセスを必要とするアプリケーション。

はい

STS トークン

一時的

自動更新

方法 4: ECSRAMRole を使用する

Alibaba Cloud ECS インスタンス、ECI インスタンス、または Container Service for Kubernetes ワーカーノードで実行されるアプリケーション。

いいえ

STS トークン

一時的

自動更新

方法 5:Function Compute コンテキストからの認証情報の使用

Alibaba Cloud Function Compute で実行されるアプリケーションの関数。

いいえ

STS トークン

一時的

更新不要

方法 6: OIDCRoleARN を使用する

Container Service for Kubernetes ワーカーノードで実行される信頼できないアプリケーション。

いいえ

STS トークン

一時的

自動更新

方法 7: CredentialsURI を使用する

外部システムからアクセス認証情報を取得する必要があるアプリケーション。

いいえ

STS トークン

一時的

自動更新

方法 8:カスタムアクセス認証情報の使用

上記の方法が要件を満たさない場合、カスタムメソッドを定義して認証情報を取得できます。

カスタム

カスタム

カスタム

カスタム

方法 1:AccessKey ペアの使用

アプリケーションが安全な環境で実行され、頻繁な認証情報のローテーションなしで OSS への長期的なアクセスが必要な場合は、Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの AccessKey ペアを使用して認証情報プロバイダーを初期化できます。AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。この方法では AccessKey ペアを手動でメンテナンスする必要があり、セキュリティリスクとメンテナンスの複雑さが増す可能性があります。詳細については、「CreateAccessKey - Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアの作成」をご参照ください。

環境変数

警告

Alibaba Cloud アカウントは、そのリソースに対する完全な権限を持っています。Alibaba Cloud アカウントの AccessKey ペアが漏洩すると、重大なセキュリティ脅威となります。最小限の権限を持つ RAM ユーザーの AccessKey ペアを使用することを推奨します。

  1. AccessKey ペアを使用して環境変数を設定します。

    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>
  2. 環境変数を使用して認証情報を渡します。

    <?php
    require_once __DIR__ . '/vendor/autoload.php';
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\Core\OssException;
    
    try {
        // 環境変数からアクセス認証情報を取得し、プロバイダーに保存します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        $provider = new EnvironmentVariableCredentialsProvider();
        // エンドポイントを、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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;
    }
    

静的資格情報

コード内の変数を使用して認証情報を参照できます。実行時に、これらの変数には環境変数、設定ファイル、またはその他の外部データソースからの実際の認証情報値が割り当てられます。

以下の手順は、設定ファイルを使用する例を示しています。

  1. config.ini という名前の設定ファイルを作成します。

    [credentials]
    alibaba_cloud_access_key_id = <ALIBABA_CLOUD_ACCESS_KEY_ID>
    alibaba_cloud_access_key_secret = <ALIBABA_CLOUD_ACCESS_KEY_SECRET>
  2. 設定ファイルを使用して認証情報を渡します。

    <?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');
        // AccessKey ID と AccessKey Secret を取得します。
        $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;
    }
    

方法 2:STS トークンの使用

アプリケーションが OSS への一時的なアクセスを必要とする場合は、Security Token Service (STS) からの一時的な ID 認証情報を使用して認証情報プロバイダーを初期化できます。これらの認証情報には、AccessKey ID、AccessKey Secret、およびセキュリティトークンが含まれます。この方法では STS トークンを手動でメンテナンスする必要があり、セキュリティリスクとメンテナンスの複雑さが増す可能性があります。OSS に複数回アクセスするには、STS トークンを手動で更新する必要があります。詳細については、「AssumeRole - RAM ロールの一時的な ID 認証情報の取得」をご参照ください。

  1. 一時的な ID 認証情報を使用して環境変数を設定します。

    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>
  2. 環境変数を使用して認証情報を渡します。

    <?php
    require_once __DIR__ . '/vendor/autoload.php';
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\Core\OssException;
    
    try {
        // 環境変数からアクセス認証情報を取得し、プロバイダーに保存します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET、および OSS_SESSION_TOKEN 環境変数が設定されていることを確認してください。
        $provider = new EnvironmentVariableCredentialsProvider();
        // エンドポイントを、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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;
    }
    

方法 3: RAMRoleARN を使用する

重要

この方法には、alibabacloud/credentials 1.2.0 以降が必要です。

アプリケーションがクロスアカウントアクセスなど、OSS へのアクセスに権限付与を必要とする場合は、RAMRoleARN を使用して認証情報プロバイダーを初期化できます。この方法では、基盤となる認証情報として STS トークンを使用します。RAM ロールの Alibaba Cloud リソースネーム (ARN) を指定することで、Credentials ツールは STS から STS トークンを取得し、有効期限が切れる前に自動的に更新します。policy パラメーターに値を割り当てて、RAM ロールをより小さな権限セットに制限することもできます。この方法では AccessKey ペアを提供する必要があり、セキュリティリスクとメンテナンスの複雑さが増す可能性があります。AccessKey ペアの取得方法の詳細については、「CreateAccessKey - RAM ユーザーの AccessKey ペアの作成」をご参照ください。RAMRoleARN の取得方法の詳細については、「CreateRole - RAM ロールの作成」をご参照ください。

  1. 認証情報クライアントの依存関係を追加します。

    composer require alibabacloud/credentials
  2. アクセス資格情報を設定します。

    <?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([
            // 認証情報の種類。値を ram_role_arn に設定します。
            'type' => 'ram_role_arn',
            // RAM ユーザーの AccessKey ペア (AccessKey ID と AccessKey Secret) を環境変数から取得します。
            'accessKeyId' => getenv('OSS_ACCESS_KEY_ID'),
            'accessKeySecret' => getenv('OSS_ACCESS_KEY_SECRET'),
            // 環境変数から RAM ロールの ARN を取得します。これは、引き受けるロールの ID で、acs:ram::$accountID:role/$roleName の形式です。
            'roleArn' => getenv('OSS_STS_ROLE_ARN'),
            // 異なるトークンを区別するためのカスタムロールセッション名。
            'roleSessionName' => 'yourRoleSessionName',
            // カスタムアクセスポリシー。
            'policy' => '',
        ]);
    
        $credential = new Credential($config);
        $providerWrapper = new AlibabaCloudCredentialsWrapper($credential);
        $provider = $providerWrapper->getCredentials();
        $config = array(
            'provider' => $provider,
            // たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを使用してください。
            '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();
    }

方法 4: ECSRAMRole を使用する

説明

この方法には、alibabacloud/credentials 1.2.0 以降が必要です。

アプリケーションが ECS インスタンス、ECI インスタンス、または Container Service for Kubernetes (ACK) ワーカーノードで実行される場合、ECSRAMRole を使用して認証情報プロバイダーを初期化できます。この方法では、基盤となる認証情報として STS トークンを使用します。ECSRAMRole を使用すると、RAM ロールを ECS インスタンス、ECI インスタンス、または ACK ワーカーノードにアタッチして、インスタンス上の STS トークンを自動的に更新できます。この方法により、AccessKey ペアまたは STS トークンを手動でメンテナンスすることに伴うリスクが排除されます。ECSRAMRole の取得方法の詳細については、「CreateRole - RAM ロールの作成」をご参照ください。

  1. 認証情報クライアントの依存関係を追加します。

    composer require alibabacloud/credentials
  2. ECSRAMRole をアクセス資格情報として設定します。

    <?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([
            // 認証情報の種類。値を 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,
            // たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを使用してください。
            '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();
    }

方法 5:Function Compute コンテキストからの認証情報の使用

アプリケーションの関数が Function Compute で実行される場合、関数のコンテキスト内の資格情報を使用して、資格情報プロバイダーを初期化できます。この方法では、基盤となる資格情報として STS トークンを使用します。Function Compute は、関数の構成に基づいてサービスロールを引き受けることで STS トークンを取得します。その後、STS トークンは、コンテキストの Credentials パラメーターを介してアプリケーションに渡されます。STS トークンは 36 時間有効で、この期間は変更できません。関数の最大実行時間は 24 時間です。したがって、関数の実行中に STS トークンが期限切れになることはなく、リフレッシュする必要もありません。この方法により、AccessKey ペアまたは STS トークンを手動で維持することに伴うリスクが排除されます。Function Compute に OSS へのアクセス権限を付与する方法の詳細については、「関数ロールを使用して Function Compute に他の Alibaba Cloud サービスへのアクセス権限を付与する」をご参照ください。

  • Function Compute コンテキストからの認証情報を使用して認証情報プロバイダーを初期化します。

    <?php
    
    use OSS\OssClient;
    use OSS\Core\OssException;
    
    function handler($event, $context) {
        /*
          Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API アクセスや日常の O&M には RAM ユーザーを使用することを推奨します。
          AccessKey ID と AccessKey Secret をプロジェクトコードにハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
          この例では、コンテキストから AccessKey ID と AccessKey Secret を取得する方法を示します。
        */
        $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__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return $e->getMessage();
        }
        return 'hello world';
    }

方法 6:OIDCRoleARN の使用

説明

この方法には、alibabacloud/credentials 1.2.0 以降が必要です。

ACK ワーカーノードの RAM ロールを設定すると、そのノード上の Pod 内のアプリケーションは、メタデータサーバーから関連付けられたロールの STS トークンを取得できます。これは、ECS インスタンス上のアプリケーションの動作と似ています。ただし、信頼できないアプリケーションがクラスターにデプロイされている場合、それらのアプリケーションがインスタンスの RAM ロールの STS トークンをメタデータサーバーから取得することを望まない場合があります。例としては、お客様が提出したアプリケーションで、そのコードがお客様に公開されていない場合などです。クラウドリソースを保護し、これらの信頼できないアプリケーションが最小限の権限で必要な STS トークンを安全に取得できるようにするには、RAM Roles for Service Account (RRSA) 機能を使用できます。この方法では、基盤となる認証情報として STS トークンを使用します。Alibaba Cloud コンテナークラスターは、各アプリケーション Pod に対応するサービスアカウント OpenID Connect (OIDC) トークンファイルを作成してマウントします。また、設定情報を環境変数に挿入します。Credentials ツールは、環境変数から設定を取得し、STS の AssumeRoleWithOIDC 操作を呼び出して、OIDC トークンをバインドされたロールの STS トークンと交換します。この方法により、AccessKey ペアまたは STS トークンを手動でメンテナンスすることに伴うリスクが排除されます。詳細については、「RRSA に基づく Pod の権限隔離」をご参照ください。

  1. 認証情報クライアントの依存関係を追加します。

    composer require alibabacloud/credentials
  2. 次のサンプルコードは、OIDC プロバイダーの RAM ロールをアクセス認証情報として設定する方法を示しています。

    <?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 {
        // OIDCRoleArn を使用して Credentials Client を初期化します。
        $config = new Credential\Config([
            // 認証情報の種類。
            'type' => 'oidc_role_arn',
            // OIDC プロバイダーの ARN。oidc_provider_arn は ALIBABA_CLOUD_OIDC_PROVIDER_ARN 環境変数を使用して設定できます。
            'oidcProviderArn' => '<OidcProviderArn>',
            // OIDC トークンファイルのパス。oidc_token_file_path は ALIBABA_CLOUD_OIDC_TOKEN_FILE 環境変数を使用して設定できます。
            'oidcTokenFilePath' => '<OidcTokenFilePath>',
            // RAM ロールの ARN。例:acs:ram::123456789012****:role/adminrole。role_arn は ALIBABA_CLOUD_ROLE_ARN 環境変数を使用して設定できます。
            'roleArn' => '<RoleArn>',
            // ロールセッション名。role_session_name は ALIBABA_CLOUD_ROLE_SESSION_NAME 環境変数を使用して設定できます。
            'roleSessionName' => '<RoleSessionName>',
            // オプション。より小さなアクセスポリシー。例:{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            'policy' => '<Policy>',
            # セッションの有効期限を設定します。
            'durationSeconds' => 3600,
        ]);
        $credential = new Credential($config);
        $providerWrapper = new AlibabaCloudCredentialsWrapper($credential);
        $provider = $providerWrapper->getCredentials();
        $config = array(
            'provider' => $provider,
            // たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを使用してください。
            '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();
    }

方法 7:CredentialsURI の使用

説明

この方法には、alibabacloud/credentials 1.2.0 以降が必要です。

アプリケーションが柔軟な認証情報管理とキーレスアクセスのために外部システムから Alibaba Cloud 認証情報を取得する必要がある場合、CredentialsURI を使用して認証情報プロバイダーを初期化できます。この方法では、基盤となる認証情報として STS トークンを使用します。Credentials ツールは、指定した URI から STS トークンを取得して認証情報クライアントを初期化します。この方法により、AccessKey ペアまたは STS トークンを手動でメンテナンスすることに伴うリスクが排除されます。CredentialsURI 応答を提供するバックエンドサービスは、STS トークンを自動的に更新するロジックを実装する必要があります。これにより、アプリケーションが常に有効な認証情報を持つことが保証されます。

  1. 認証情報クライアントの依存関係を追加します。

    composer require alibabacloud/credentials
  2. 次のサンプルコードは、CredentialsURI をアクセス認証情報として設定する方法を示しています。

    <?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([
            // 認証情報の種類。
            'type' => 'credentials_uri',
            // 認証情報の URI。http://local_or_remote_uri/ の形式です。credentials_uri は ALIBABA_CLOUD_CREDENTIALS_URI 環境変数を使用して設定できます。
            'credentialsURI' => '<CredentialsUri>',
        ]);
        $credential = new Credential($config);
        $providerWrapper = new AlibabaCloudCredentialsWrapper($credential);
        $provider = $providerWrapper->getCredentials();
        $config = array(
            'provider' => $provider,
            // たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを使用してください。
            '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();
    }

方法 8:カスタムアクセス認証情報の使用

上記の方法のいずれも要件を満たさない場合は、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()
  {
    // 長期的な資格情報を返します。
    return [
      'AccessKeyId' => 'id',
      'AccessKeySecret' => 'secret',
      ];
    // 一時的な資格情報を返します。
    //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;
}

次のステップ

認証情報プロバイダーを初期化した後、それを使用して OSSClient インスタンスを作成できます。詳細については、「初期化 (PHP SDK V1)」をご参照ください。