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

ApsaraVideo VOD:PHP SDK を使用したファイルのアップロード

最終更新日:Aug 08, 2026

このトピックでは、ApsaraVideo VOD のストレージに各種メディアファイルをアップロードするための PHP 向けサーバー側アップロードソフトウェア開発キット(SDK)の使用方法について、詳細な例を交えて説明します。

概要

説明

PHP 開発には B/S(ブラウザー/サーバー)アーキテクチャが推奨されます。

PHP アップロード SDK は、ApsaraVideo VOD サーバー側 SDK の一般的なプロセスに従います。詳細については、「アップロードプロセス」をご参照ください。PHP アップロード SDK の基本的な使用手順は次のとおりです。

  1. 前提条件を満たします。詳細については、「前提条件」をご参照ください。

  2. PHP アップロード SDK を統合します。詳細については、「PHP アップロード SDK の統合」をご参照ください。

  3. アップロードロジックを実装します。これには、アップロード情報の構成が含まれます。

  4. PHP アップロード SDK のデフォルトエンドポイントは cn-shanghai(中国 (上海))です。他のリージョンにメディアファイルをアップロードする場合は、AliyunVodUploader を初期化する際にリージョンを指定できます。ApsaraVideo VOD でサポートされているエンドポイントの詳細については、「エンドポイント」をご参照ください。

    次の例は、アップロードリージョンを cn-beijing(中国 (北京))に設定する方法を示しています。

    $apiRegionId = 'cn-beijing';  // アップロード先リージョン
    $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret, $apiRegionId);

前提条件

  • ApsaraVideo VOD が有効化されています。詳細については、「ApsaraVideo VOD の有効化」をご参照ください。

  • 指定されたリージョンでのストレージパスやコールバック設定など、アップロードに必要なシステム設定が完了しています。詳細については、「ストレージバケットの管理」および「コールバックの構成」をご参照ください。

  • ApsaraVideo VOD へのアクセスに使用する RAM ユーザーが作成されています。Alibaba Cloud アカウントの AccessKey ペアが漏洩した場合に生じるセキュリティリスクを回避するため、RAM ユーザーを作成し、ApsaraVideo VOD へのアクセスに必要な権限を付与することを推奨します。その後、その RAM ユーザーの AccessKey ペア を使用して ApsaraVideo VOD にアクセスできます。詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。

  • ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成します。詳細については、「Linux、macOS、および Windows での環境変数の構成」をご参照ください。

    重要
    • Alibaba Cloud アカウントの AccessKey ペアにはすべての API オペレーションに対する権限があります。API オペレーションの呼び出しや日常的な運用管理(O&M)には、RAM ユーザーの AccessKey ペアを使用してください。

    • プロジェクトコード内に AccessKey ID および AccessKey Secret をハードコードしないでください。漏洩した場合、アカウント内のすべてのリソースが危険にさらされます。

  • 任意。セキュリティトークンサービス(STS)を使用して ApsaraVideo VOD にアクセスする場合は、RAM ユーザー用のロールを作成し、そのロールに ApsaraVideo VOD へのアクセスに必要な権限を付与します。詳細については、「STS トークンの取得」をご参照ください。

PHP アップロード SDK の統合

  1. SDK およびデモをダウンロードします。

  2. VodUploadSDK-PHP_1.0.3.zip を解凍し、VodUploadSDK-PHP_1.0.3 ディレクトリ内の voduploadsdk フォルダをプロジェクトにコピーします。

PHP アップロード SDK のディレクトリ構造

パス:VodUploadSDK-PHP_1.0.3/voduploadsdk/uploader

  • UploadVideoRequest.php

    ディレクトリ

    説明

    UploadVideoRequest

    動画アップロード用のリクエストクラスです。フィールドの詳細については、「CreateUploadVideo」をご参照ください。

  • UploadImageRequest.php

    ディレクトリ

    説明

    UploadImageRequest

    画像アップロード用のリクエストクラスです。フィールドの詳細については、「CreateUploadImage」をご参照ください。

  • UploadAttachedMediaRequest.php

    ディレクトリ

    説明

    UploadAttachedMediaRequest

    補助メディアアセットアップロード用のリクエストクラスです。フィールドの詳細については、「CreateUploadAttachedMedia」をご参照ください。

  • AliyunVodUploader.php

    ディレクトリ

    説明

    __construct

    アップロード用の AccessKey、ApsaraVideo VOD センター、およびエンドポイントを設定します。詳細については、「AccessKey」および「ApsaraVideo VOD リージョン ID」をご参照ください。

    uploadLocalVideo

    ローカル動画をアップロードするインターフェイスです。

    uploadWebVideo

    Web 動画をアップロードするインターフェイスです。

    uploadLocalImage

    ローカル画像をアップロードします。

    uploadWebImage

    Web 画像をアップロードします。

    uploadLocalAttachedMedia

    ローカル補助メディアアセットをアップロードします。

    uploadWebAttachedMedia

    Web 補助メディアアセットをアップロードします。

    uploadLocalM3u8

    ローカル M3U8 ファイルをアップロードします。

    uploadWebM3u8

    Web M3U8 ファイルをアップロードします。

    parseM3u8File

    M3U8 マニフェストを解析して、シャードアドレスのリストを取得します。

    setEcsRegionId

    ECS インスタンス上にアップロードスクリプトをデプロイしている場合、そのリージョンを設定します。このリージョンが ApsaraVideo VOD ストレージリージョンと同じである場合、内部ネットワークによるアップロードが自動的に有効になります。

    setEnableSSL

    SSL を有効にするかどうかを指定します(ネットワークリクエストに HTTPS を使用)。関連する拡張機能がインストールされていない、または正しく構成されていない場合に問題を回避するため、デフォルトでは無効になっています。

    uploadProgressCallback

    アップロード進捗のコールバック関数です。この関数を書き換えることができます。メソッドシグネチャおよびオーバーライド例については、以下をご参照ください。

    uploadProgressCallback メソッドシグネチャ

    public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes)
    • $mediaId:メディア ID です。

    • $consumedBytes:これまでにアップロードされたバイト数です。

    • $totalBytes:ファイルの総サイズ(バイト単位)です。

    アップロード進捗率(%)を計算するには、100 * ($consumedBytes / $totalBytes) を使用します。$totalBytes が 0 より大きいことを確認してから除算を行い、ゼロ除算を回避してください。

    カスタムのアップロード進捗表示を行うには、AliyunVodUploader を継承してこのメソッドをオーバーライドします。次の例はその方法を示しています。

    class MyAliyunVodUploader extends AliyunVodUploader {
        public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes) {
            if ($totalBytes > 0) {
                $rate = 100 * (floatval($consumedBytes) / floatval($totalBytes));
            } else {
                $rate = 0;
            }
            echo round($rate, 1) . "%\n";
            flush();
        }
    }
  • AliyunVodUtils.php

    ディレクトリ

    説明

    AliyunVodUtils

    文字列の切り詰め、ファイル拡張子の取得、ファイル名の取得などの静的関数を提供するユーティリティクラスです。

    AliyunVodLog

    シンプルな出力用のログクラスです。`logSwitch` がログスイッチです。

    AliyunVodDownloader

    Web ファイルをダウンロードします。

    AliyunVodReportUpload

    アップロード進捗を報告します。

    AliyunVodError

    エラーコードを定義します。

パス:VodUploadSDK-PHP_1.0.3/voduploadsdk

  • aliyun-php-sdk-core:アップロード SDK の基底クラスを提供する依存関係です。Alibaba Cloud API の署名、HTTP リクエストなどのコア機能をカプセル化しています。

  • aliyun-php-sdk-vod:ApsaraVideo VOD 向けのサーバー側 API SDK です。ApsaraVideo VOD API のリクエストをカプセル化しています。

  • aliyun-php-sdk-oss:アップロード SDK の OSS クラスを提供する依存関係です。OSS アップロード操作および関連機能をカプセル化しています。

パス:VodUploadSDK-PHP_1.0.3/samples

  • uploadVideo.php:動画アップロードのサンプルコードです。

  • uploadImage.php:画像アップロードのサンプルコードです。

  • uploadAttachedMedia.php:補助メディアアセットアップロードのサンプルコードです。

シナリオ 1:音声および動画ファイルのアップロード

標準音声および動画ファイル

次の種類の音声および動画ファイルをアップロードできます。

  • フラグメントアップロードを使用してローカルファイルをアップロードできます。1 つのファイルの最大サイズは 48.8 TB です。再開可能なアップロードはサポートされていません。詳細については、`testUploadLocalVideo` 関数をご参照ください。

  • ファイル URL を指定して Web ファイルをアップロードできます。1 つのファイルの最大サイズは 48.8 TB です。この方法では、Web ファイルをローカルディスクにダウンロードした後にアップロードする必要があります。ローカルディスクに十分な空き容量があることを確認してください。詳細については、`testUploadWebVideo` 関数をご参照ください。

サンプルコードを表示

<?php
/**
 * Created by Aliyun ApsaraVideo VOD.
 */
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// ローカル動画のアップロードをテストします。
function testUploadLocalVideo($accessKeyId, $accessKeySecret, $filePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($filePath, 'testUploadLocalVideo via PHP-SDK');
        // CateId はメディアカテゴリ ID です。ApsaraVideo VOD コンソールの **[メディア管理]** > **[カテゴリ管理]** ページで確認するか、AddCategory 操作を呼び出して作成できます。詳細については、<!-- @xref node="2526041" -->「[動画カテゴリの管理](https://www.alibabacloud.com/help/ja/vod/user-guide/manage-video-categories)」<!-- @/xref -->をご参照ください。
        $uploadVideoRequest->setCateId(<your category ID>);
        // 例:CoverURL:http://example.com/example****.jpg
        //$uploadVideoRequest->setCoverURL("<your CoverURL>");
        //$uploadVideoRequest->setTags('test1,test2');
        //$uploadVideoRequest->setStorageLocation('outin-xx.oss-cn-beijing.aliyuncs.com');
        $uploadVideoRequest->setTemplateGroupId('your-template-group-id');
        $userData = array(
            // 例:Callback:https://demo.aliyundoc.com/ProcessMessageCallback
            "MessageCallback"=>array("CallbackURL"=>"<your callback URL>"),
            "Extend"=>array("localId"=>"xxx", "test"=>"www")
        );
        $uploadVideoRequest->setUserData(json_encode($userData));
        $res = $uploader->uploadLocalVideo($uploadVideoRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalVideo Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}
// Web 動画のアップロードをテストします。
function testUploadWebVideo($accessKeyId, $accessKeySecret, $fileURL)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($fileURL, 'testUploadWebVideo via PHP-SDK');
        $res = $uploader->uploadWebVideo($uploadVideoRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebVideo Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}

####  テストコードの実行   ####
// Alibaba Cloud アカウントの AccessKey ペアにはすべての API へのアクセス権限があります。API アクセスや日常的な運用管理(O&M)には、RAM ユーザーの AccessKey ペアを使用してください。
// プロジェクトコード内に AccessKey ID および AccessKey Secret をハードコードしないでください。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
// この例では、環境変数から AccessKey ペアを取得して API アクセスを認証する方法を示しています。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成してください。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$localFilePath = '/opt/video/sample.mp4';
// testUploadLocalVideo($accessKeyId, $accessKeySecret, $localFilePath);

// 例:webFileURL:http://example-bucket-****.cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-a0bc05ba62c3e95cc672e88b8281****-ld.mp4?auth_key=1608774986-0-0-c56acd302bea0c331370d8ed6865****
$webFileURL = '<your webFileURL>';
testUploadWebVideo($accessKeyId, $accessKeySecret, $webFileURL);

uploadLocalVideo を使用すると、setTemplateGroupId() を呼び出して動画アップロード時にトランスコードテンプレートグループを指定できます。トランスコードテンプレートグループ ID を指定すると、アップロード完了後すぐに動画が自動的にトランスコードされ、SubmitTranscodeJobs 操作を別途呼び出す必要がなくなります。トランスコードテンプレートグループ ID は、VOD コンソールの **[構成管理]** > **[メディア処理構成]** > **[トランスコードテンプレートグループ]** ページで取得できます。

M3U8 動画ファイル

次のコードはその例です。

サンプルコードを表示

<?php
/**
 * Created by Aliyun ApsaraVideo VOD.
 */
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';
date_default_timezone_set('PRC');
// ローカル M3U8 動画のアップロードをテストします。
function testUploadLocalM3u8($accessKeyId, $accessKeySecret, $m3u8FilePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($m3u8FilePath, 'testUploadLocalM3u8 via PHP-SDK');
        // API を呼び出して M3U8 ファイルからシャードアドレスのリストを解析します。解析結果が正確でない場合は、自分でアドレスリストを連結してください。デフォルトでは、シャードファイルと M3U8 ファイルは同じディレクトリにあります。
        $sliceFiles = $uploader->parseM3u8File($m3u8FilePath);
        //print_r($sliceFiles);
        $res = $uploader->uploadLocalM3u8($uploadVideoRequest, $sliceFiles);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalM3u8 Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}

// Web M3U8 動画のアップロードをテストします。
function testUploadWebM3u8($accessKeyId, $accessKeySecret, $m3u8FileUrl)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadVideoRequest = new UploadVideoRequest($m3u8FileUrl, 'testUploadWebM3u8 via PHP-SDK');
        // API を呼び出して M3U8 ファイルからシャードアドレスのリストを解析します。解析結果が正確でない場合は、自分でアドレスリストを連結してください。デフォルトでは、シャードファイルと M3U8 ファイルは同じディレクトリにあります。
        $sliceFileUrls = $uploader->parseM3u8File($m3u8FileUrl);
        //print_r($sliceFileUrls);
        $res = $uploader->uploadWebM3u8($uploadVideoRequest, $sliceFileUrls);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebM3u8 Failed, ErrorMessage: %s\n Location: %s %s\n Trace: %s\n",
            $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString());
    }
}
####  テストコードの実行   ####
// Alibaba Cloud アカウントの AccessKey ペアにはすべての API へのアクセス権限があります。API アクセスや日常的な運用管理(O&M)には、RAM ユーザーの AccessKey ペアを使用してください。
// プロジェクトコード内に AccessKey ID および AccessKey Secret をハードコードしないでください。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
// この例では、環境変数から AccessKey ペアを取得して API アクセスを認証する方法を示しています。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成してください。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
$localM3u8FilePath = '/opt/video/m3u8/sample.m3u8';
//testUploadLocalM3u8($accessKeyId, $accessKeySecret, $localM3u8FilePath);

// 例:webM3u8FileURL:http://example-bucket-****.cn-shanghai.aliyuncs.com/b55b904bc612463b812990b7c8cc****/daa30814c0c340cf8199926f78aa****-195a25af366b5edae324c47e99a0****-ld.m3u8?auth_key=1608775606-0-0-9fb038deaecd009dadd86721c585****
$webM3u8FileURL = '<your webM3u8FileURL>';
//testUploadWebM3u8($accessKeyId, $accessKeySecret, $webM3u8FileURL);

アップロード高速化

GB または TB 単位の大容量ファイルをアップロードする場合や、中国本土から シンガポール ストレージリージョンなどのストレージの場所へクロスリージョンでアップロードする場合は、アップロード高速化機能を有効にできます。詳細については、「有効化方法」をご参照ください。この機能を有効にした後は、アップロード構成の UserData オブジェクトに AccelerateConfig キー・バリュー ペアを追加する必要があります。UserData オブジェクトが存在しない場合は、新たに作成してください。次のコードはその例です。

$userData = array(  
    "AccelerateConfig"=>array("Type"=>"oss","Domain"=>"****Bucket.oss-accelerate.aliyuncs.com"),
);       
$uploadVideoRequest->setUserData(json_encode($userData));

パラメーターの説明

名前

タイプ

説明

Type

string

有効にするアップロード高速化のタイプです。`oss` のみサポートされています。

Domain

string

ユーザーのバケット用のアクセラレーションエンドポイントです。デフォルトで HTTPS が使用されます。

説明

有効化後に割り当てられたアクセラレーションエンドポイントを使用してください(例:`vod-*******.oss-accelerate.aliyuncs.com`)。

複数動画の一括アップロード

uploadLocalVideo または uploadWebVideo の呼び出しは、1 つのビデオファイルのみをアップロードします。1 回の呼び出しで複数のビデオをバッチアップロードすることはサポートされていません。複数のビデオをバッチでアップロードするには、UploadMediaByUrl 操作を呼び出します。

コンソール のアップロードページで動画を一括アップロードする場合も、動画は 1 つずつ処理されます。大容量ファイルまたは複数ファイルをアップロードする必要がある場合は、PC クライアントツールの使用を推奨します。

シナリオ 2:画像のアップロード

サンプルコードを表示

サンプルコードを表示

<?php
/**
 * Created by Aliyun ApsaraVideo VoD.
 * User: https://www.aliyun.com/product/vod
 */

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';

date_default_timezone_set('PRC');

// ローカル画像のアップロードをテストします。
function testUploadLocalImage($accessKeyId, $accessKeySecret, $filePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadImageRequest = new UploadImageRequest($filePath, 'testUploadLocalImage via PHP-SDK');
        $uploadImageRequest->setCateId(1000009458);
        $res = $uploader->uploadLocalImage($uploadImageRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalImage Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}

// Web 画像のアップロードをテストします。
function testUploadWebImage($accessKeyId, $accessKeySecret, $fileURL)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadImageRequest = new UploadImageRequest($fileURL, 'testUploadWebImage via PHP-SDK');
        $uploadImageRequest->setCateId(1000009458);
        $res = $uploader->uploadWebImage($uploadImageRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebImage Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}



####  テストコードの実行   ####
// Alibaba Cloud アカウントの AccessKey ペアにはすべての API へのアクセス権限があります。API アクセスや日常的な運用管理(O&M)には、RAM ユーザーの AccessKey ペアを使用してください。
// プロジェクトコード内に AccessKey ID および AccessKey Secret をハードコードしないでください。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
// この例では、環境変数から AccessKey ペアを取得して API アクセスを認証する方法を示しています。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成してください。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');

$localFilePath = '/opt/image/test-image.jpg';
//testUploadLocalImage($accessKeyId, $accessKeySecret, $localFilePath);

$webFileURL = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif';
testUploadWebImage($accessKeyId, $accessKeySecret, $webFileURL);

シナリオ 3:補助メディアアセットのアップロード

次のコードはその例です。

サンプルコードを表示

サンプルコードを表示

<?php
/**
 * Created by Aliyun ApsaraVideo VoD.
 * User: https://www.aliyun.com/product/vod
 */

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'voduploadsdk' . DIRECTORY_SEPARATOR . 'Autoloader.php';

date_default_timezone_set('PRC');

// ローカル補助メディアアセットのアップロードをテストします。
function testUploadLocalAttachedMedia($accessKeyId, $accessKeySecret, $filePath)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadAttachedRequest = new UploadAttachedMediaRequest($filePath, 'watermark',
            'testUploadLocalAttachedMedia via PHP-SDK');
        //$uploadAttachedRequest->setCateId(100000****);
        $res = $uploader->uploadLocalAttachedMedia($uploadAttachedRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadLocalAttachedMedia Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}

// Web 補助メディアアセットのアップロードをテストします。
function testUploadWebAttachedMedia($accessKeyId, $accessKeySecret, $fileURL)
{
    try {
        $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret);
        $uploadAttachedRequest = new UploadAttachedMediaRequest($fileURL, 'watermark',
            'testUploadWebAttachedMedia via PHP-SDK');
        //$uploadAttachedRequest->setCateId(100000****);
        $res = $uploader->uploadWebAttachedMedia($uploadAttachedRequest);
        print_r($res);
    } catch (Exception $e) {
        printf("testUploadWebAttachedMedia Failed, ErrorMessage: %s\n", $e->getMessage());
    }

}


####  テストコードの実行   ####
// Alibaba Cloud アカウントの AccessKey ペアにはすべての API へのアクセス権限があります。API アクセスや日常的な運用管理(O&M)には、RAM ユーザーの AccessKey ペアを使用してください。
// プロジェクトコード内に AccessKey ID および AccessKey Secret をハードコードしないでください。これにより AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
// この例では、環境変数から AccessKey ペアを取得して API アクセスを認証する方法を示しています。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成してください。
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKeySecret = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');

$localFilePath = '/opt/image/test.png';
//testUploadLocalAttachedMedia($accessKeyId, $accessKeySecret, $localFilePath);

$webFileURL = 'http://vod-download.cn-shanghai.aliyuncs.com/retina/pic/20180208/496AE240-54AE-4CC8-8578-3EEC8F38****.gif';
testUploadWebAttachedMedia($accessKeyId, $accessKeySecret, $webFileURL);

参考資料

メディアアップロードの概要

STS SDK の概要