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

Intelligent Media Management:PHP 用 IMM SDK

最終更新日:Dec 27, 2024

Alibaba Cloud OpenAPI エクスプローラーは、API ドキュメント、API デバッグ、SDK の例を提供し、API 開発を始めるのに役立ちます。このトピックでは、PHP 用 Intelligent Media Management (IMM) SDK をインストールして使用する方法について説明します。

前提条件

  • AccessKey ペアが作成され、取得されています。詳細については、AccessKey ペアの作成を参照してください。

  • OSS が有効化され、バケットが作成され、オブジェクトがバケットにアップロードされています。詳細については、オブジェクトのアップロードを参照してください。

  • IMM が有効化されています。詳細については、IMM の有効化を参照してください。

  • IMM コンソールでプロジェクトが作成されています。IMM コンソールを使用してプロジェクトを作成する方法の詳細については、プロジェクトの作成を参照してください。

    説明
    • CreateProject オペレーションを呼び出すことによって、プロジェクトを作成することもできます。詳細については、CreateProjectを参照してください。

    • ListProjects オペレーションを呼び出して、特定のリージョンにある既存のプロジェクトをクエリできます。詳細については、ListProjectsを参照してください。

SDK のインストールと使用

重要

IMM API V2020-09-30 を使用するには、IMM SDK V2020-09-30 を使用する必要があります。

PHP 用 IMM SDK の使用方法の詳細については、クイックスタートを参照してください。

Composer のインストール

  1. composer-setup.php セットアップファイルを現在のディレクトリにダウンロードします。

    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

  2. ファイルを開いてインストールを開始します。

    php composer-setup.php

  3. セットアップファイルを削除します。

    php -r "unlink('composer-setup.php');"

  4. sudo mv composer.phar /usr/local/bin/composer コマンドを実行して、Composer をグローバルにインストールします。インストールが完了すると、composer.phar ファイルが作成されます。php composer.phar ファイルを開いて Composer を使用します。

    image.png

IMM 依存関係のインストール

composer require alibabacloud/imm-20200930 4.4.0 コマンドを実行します。

アクセス認証情報

以下のタイプのアクセス認証情報がサポートされています。

  • 一時的なアクセス認証情報: IMM への一時的なアクセス許可など、セキュリティが非常に重要なシナリオでは、一時的なアクセス認証情報を使用することをお勧めします。一時的なアクセス認証情報は、指定された期間内に有効であるため、認証情報の漏洩を防ぐのに役立ちます。一時的なアクセス認証情報はきめ細かいアクセス制御をサポートしているため、過剰な権限によるセキュリティリスクを防ぎます。

  • 長期アクセス認証情報: データセキュリティを確保するために、長期アクセス認証情報を使用しないことをお勧めします。利便性が必要なシナリオでは、長期アクセス認証情報を使用することで、長期間にわたって何度も更新する必要がなくなります。アカウントのセキュリティを確保するために、3か月ごとに長期アクセス認証情報を変更することをお勧めします。長期アクセス認証情報が漏洩した場合、または使用されなくなった場合は、長期アクセス認証情報を削除または無効にして、セキュリティリスクを軽減できます。

一時的なアクセス認証情報の使用

PHP 用 IMM SDK を使用して IMM への一時的なアクセスのためのアクセス認証情報を構成する方法の詳細については、環境変数を構成して一時的なアクセス認証情報を保存するを参照してください。

次のサンプルコードは、一時的なアクセス認証情報を使用して、中国 (北京) リージョンのプロジェクト内の画像で顔と顔の属性を検出する方法の例を示しています。

説明

一時的なアクセス認証情報を取得するには、次のコマンドを実行して追加の依存関係をインストールする必要があります:

composer require alibabacloud/sts-20150401 1.1.4

  1. demo.php ファイルを作成し、次の内容をファイルに書き込みます。

    <?php
    
    // このファイルは自動生成されています。編集しないでください。ありがとうございます。
    namespace AlibabaCloud\SDK\Sample;
    
    use AlibabaCloud\SDK\Sts\V20150401\Sts;
    use AlibabaCloud\Tea\Utils\Utils;
    use \Exception;
    use AlibabaCloud\Tea\Exception\TeaError;
    
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\SDK\Sts\V20150401\Models\AssumeRoleRequest;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    
    use AlibabaCloud\SDK\Imm\V20200930\Imm;
    use AlibabaCloud\SDK\Imm\V20200930\Models\DetectImageFacesRequest;
    
    
    class Sample {
           /**
         * AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。
         * @return imm Client
         */
        public static function createClient(){
            // プロジェクトコードが漏洩した場合、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。以下の行は参照用にのみ提供されています。
            // セキュリティ上の理由から、Security Token Service (STS) によって提供される一時的なアクセス認証情報を使用することをお勧めします。詳細については、https://www.alibabacloud.com/help/ja/sdk/developer-reference/v2-manage-php-access-credentials を参照してください。
            $stsConfig = new Config([
                // 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が構成されていることを確認してください。
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
                "accessKeySecret" => getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')
            ]);
            // エンドポイントを指定します。詳細については、https://api.aliyun.com/product/Sts を参照してください。
            $stsConfig->endpoint = "sts.cn-hangzhou.aliyuncs.com";
            $stsClient = new Sts($stsConfig);
            $assumeRoleRequest = new AssumeRoleRequest([
                // 引き受ける RAM ロールの ARN を指定します。例: acs:ram::123456789012****:role/adminrole
                "roleArn" => "acs:ram::125499367423****:role/STStokenTestRole",
                // ロールセッションの名前を指定します。
                "roleSessionName" => "ststest",
                // アクセス認証情報の有効期間を指定します。単位: 秒。
                "durationSeconds" => 3600
            ]);
            $runtime = new RuntimeOptions([]);
            $resp = $stsClient->assumeRoleWithOptions($assumeRoleRequest, $runtime);
            $config = new Config([
                "accessKeyId" => $resp->body->credentials->accessKeyId,
                "accessKeySecret" => $resp->body->credentials->accessKeySecret,
                "securityToken" => $resp->body->credentials->securityToken
            ]);
            // サポートされているリージョンの IMM エンドポイントの一覧については、https://api.alibabacloud.com/product/imm を参照してください。
            $config->endpoint = "imm.cn-hangzhou.aliyuncs.com";
            return new Imm($config);
        }
    
        /**
         * @param string[] $args
         * @return void
         */
        public static function main($args){
            $client = self::createClient();
            $detectImageFacesRequest = new DetectImageFacesRequest([
                "projectName" => "imm-php-sdk-doc-demo",
                "sourceURI" => "oss://your-bucket-name/your-path/your-image.jpg"
            ]);
            $runtime = new RuntimeOptions([]);
            try {
                // 必要に応じて、API オペレーションのレスポンスを出力するコードを記述します。
               print_r($client->detectImageFacesWithOptions($detectImageFacesRequest, $runtime));
            }
            catch (Exception $error) {
                if (!($error instanceof TeaError)) {
                    $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
                }
                // この例では、エラーが出力されます。実際のプロジェクトでは、ビジネス要件に基づいてエラーを処理してください。
                // エラーメッセージを表示します。
                var_dump($error->message);
                // トラブルシューティング用の URL を表示します。
                var_dump($error->data["Recommend"]);
                Utils::assertAsString($error->message);
            }
        }
    }
    $path = __DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
    if (file_exists($path)) {
        require_once $path;
    }
    Sample::main(array_slice($argv, 1));
  2. php demo.php コマンドを実行します。出力は次の内容のようになります。

長期アクセス認証情報の使用

PHP 用 IMM SDK を使用して IMM にアクセスするための長期アクセス認証情報を構成する方法の詳細については、環境変数を構成して AccessKey ペアを保存するを参照してください。

次のサンプルコードは、長期アクセス認証情報を使用して、中国 (北京) リージョンのプロジェクト内の画像で顔と顔の属性を検出する方法の例を示しています。

  1. demo.php ファイルを作成し、次の内容をファイルに書き込みます。

    <?php
    
    // このファイルは自動生成されています。編集しないでください。ありがとうございます。
    namespace AlibabaCloud\SDK\Sample;
    
    use AlibabaCloud\SDK\Imm\V20200930\Imm;
    use \Exception;
    use AlibabaCloud\Tea\Exception\TeaError;
    use AlibabaCloud\Tea\Utils\Utils;
    
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\SDK\Imm\V20200930\Models\DetectImageFacesRequest;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    
    class Sample {
    
        /**
         * AccessKey ID と AccessKey シークレットを使用してクライアントを初期化します。
         * @return Imm Client
         */
        public static function createClient(){
            // プロジェクトコードが漏洩した場合、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。以下の行は参照用にのみ提供されています。
            // セキュリティ上の理由から、STS によって提供される一時的なアクセス認証情報を使用することをお勧めします。詳細については、https://www.alibabacloud.com/help/ja/sdk/developer-reference/v2-manage-php-access-credentials を参照してください。
            $config = new Config([
                // 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が構成されていることを確認してください。
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            ]);
            // サポートされているリージョンの IMM エンドポイントの一覧については、https://api.alibabacloud.com/product/imm を参照してください。
            $config->endpoint = "imm.cn-beijing.aliyuncs.com";
            return new Imm($config);
        }
    
        /**
         * @param string[] $args
         * @return void
         */
        public static function main($args){
            $client = self::createClient();
            $detectImageFacesRequest = new DetectImageFacesRequest([
                "projectName" => "imm-php-sdk-doc-demo",
                "sourceURI" => "oss://your-bucket-name/your-path/your-image.jpg"
            ]);
            $runtime = new RuntimeOptions([]);
            try {
                // 必要に応じて、API オペレーションのレスポンスを出力するコードを記述します。
               print_r($client->detectImageFacesWithOptions($detectImageFacesRequest, $runtime));
            }
            catch (Exception $error) {
                if (!($error instanceof TeaError)) {
                    $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
                }
                // この例では、エラーが出力されます。実際のプロジェクトでは、ビジネス要件に基づいてエラーを処理してください。
                // エラーメッセージを表示します。
                var_dump($error->message);
                // トラブルシューティング用の URL を表示します。
                var_dump($error->data["Recommend"]);
                Utils::assertAsString($error->message);
            }
        }
    }
    $path = __DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
    if (file_exists($path)) {
        require_once $path;
    }
    Sample::main(array_slice($argv, 1));
  2. php demo.php コマンドを実行します。出力は次の内容のようになります。