アップロード URL と資格情報を使用してメディアリソースをアップロードするには、アプリケーションサーバに権限付与サービスをデプロイする必要があります。このサービスは ApsaraVideo VOD からアップロード URL と資格情報を取得し、クライアントに提供します。
背景情報
開始する前に、アップロード URL と資格情報を使用する全体的なアップロードプロセスをよく理解してください。
アップロード URL と資格情報の取得
アプリケーションサーバは、さまざまなメディアタイプのアップロード URL と資格情報を取得するために、さまざまな OpenAPI 操作を呼び出す必要があります。
オーディオまたはビデオファイルのアップロード URL と認証情報を取得するには、CreateUploadVideo 操作を呼び出します。
オーディオまたはビデオファイルのアップロード認証情報を更新するには、RefreshUploadVideo 操作を呼び出します。
イメージのアップロード URL と認証情報を取得するには、CreateUploadImage 操作を呼び出します。
補助メディアアセットのアップロード URL と認証情報を取得するには、CreateUploadAttachedMedia 操作を呼び出します。
ステップ 1:RAM ユーザーを準備する
Resource Access Management (RAM) ユーザーを作成し、次の点に注意してください。
[プログラムアクセス] を有効にします。
取得した AccessKey ペアを安全に保管してください。
ステップ 2: RAM ユーザーへの権限付与
RAM ユーザーに必要な OpenAPI 操作を呼び出す権限を付与します。必要に応じて、次のいずれかのシステムポリシーをアタッチします。詳細については、「RAM ユーザーの権限管理」をご参照ください。
ポリシー名 | 説明 |
AliyunVodFullAccess | ApsaraVideo VOD を管理する権限。 |
AliyunVodUploadAuth | ApsaraVideo VOD にアップロードする権限。 |
ステップ 3: OpenAPI 操作の呼び出し
このトピックでは、ビデオリソースのアップロード URL と認証情報を取得する方法を示す Java の例を示します。開始する前に、ご利用のシステム環境で AccessKey ペアを設定してください。必要に応じてサンプルコードを修正し、クライアントに API 操作を提供できます。
SDK V1.0
Maven に次の依存関係を追加します:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.7.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.16.32</version>
</dependency>import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.vod.model.v20170321.*;
/*
pom.xml
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.0</version>
</dependency>
*/
public class CreateUploadVideo {
public static void main(String[] args) {
// 環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET が設定されていることを確認してください。
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
IAcsClient client = new DefaultAcsClient(profile);
CreateUploadVideoRequest request = new CreateUploadVideoRequest();
request.setFileName("aliyun.mp4");
request.setTitle("aliyun");
try {
CreateUploadVideoResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
SDK V2.0
Maven に次の依存関係を追加します:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>vod20170321</artifactId>
<version>3.6.4</version>
</dependency>セキュリティを強化するため、プロジェクトコードでは認証情報不要のメソッドを使用することを推奨します。認証情報の設定に関する詳細については、「アクセス認証情報の管理」をご参照ください。
// このファイルは自動生成されたものです。編集しないでください。
package com.aliyun.sample;
import com.aliyun.tea.*;
public class Sample {
/**
* 説明:
* <p>認証情報を使用してアカウントの Client を初期化します</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.vod20170321.Client createClient() throws Exception {
com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setCredential(credential);
// エンドポイントについては、https://api.aliyun.com/product/vod をご参照ください
config.endpoint = "vod.cn-shanghai.aliyuncs.com";
return new com.aliyun.vod20170321.Client(config);
}
public static void main(String[] args_) throws Exception {
com.aliyun.vod20170321.Client client = Sample.createClient();
com.aliyun.vod20170321.models.CreateUploadVideoRequest createUploadVideoRequest = new com.aliyun.vod20170321.models.CreateUploadVideoRequest()
.setFileName("aliyun.mp4")
.setTitle("aliyun");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
com.aliyun.vod20170321.models.CreateUploadVideoResponse resp = client.createUploadVideoWithOptions(createUploadVideoRequest, runtime);
com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
} catch (TeaException error) {
// これはデモ用です。本番プロジェクトでは、例外を慎重に処理し、直接無視しないでください。
// エラーメッセージ
System.out.println(error.getMessage());
// 診断 URL
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// これはデモ用です。本番プロジェクトでは、例外を慎重に処理し、直接無視しないでください。
// エラーメッセージ
System.out.println(error.getMessage());
// 診断 URL
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}