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

ApsaraVideo Media Processing:セキュリティトークンのリクエスト

最終更新日:Mar 18, 2025

メディアワークフローでは、各入力メディアファイルはメディア ID によって一意に指定されます。 1 つのメディア ID に複数の出力形式と解像度を関連付けることができます。 さまざまな形式でメディアファイルを再生し、解像度を自動的に切り替える場合は、メディア ID に基づいてメディアファイルを再生できます。 暗号化されたビデオのセキュリティを確保するには、メディア ID に基づいて暗号化されたビデオを再生する必要があります。 セキュリティで保護されたアクセスを確保し、権限を管理するには、Resource Access Management (RAM) が提供する Security Token Service (STS) を使用してセキュリティトークンを生成し、そのセキュリティトークンを使用してメディア ID に基づいてビデオを再生する必要があります。 このトピックでは、セキュリティトークンのリクエスト方法について説明します。

前提条件

プログラミング言語用に RAM が提供する STS SDK がインストールされていること。 この例では、Java 用の STS SDK を使用します。 Java 用の STS SDK とサンプルコードのインストール方法と、 他のプログラミング言語のサンプルコードの詳細については、STS SDK の概要 をご参照ください。

準備

セキュリティトークンをリクエストする前に、STS で必要な RAM ロールの Alibaba Cloud Resource Name (ARN) を取得する必要があります。

  1. RAM コンソール にログオンします。 左側のナビゲーションペインで、[ID] > [ロール] を選択します。

  2. [ロール] ページで、ARN を取得する RAM ロールを見つけ、その RAM ロールの名前をクリックします。 RAM ロールの詳細ページが表示されます。

  3. [基本情報] セクションで、[ARN] パラメーターの値をコピーします。 後で使用するために ARN を機密情報として保持します。arn

手順

  1. pom.xml ファイルで Java 用 STS SDK を参照します。

    <repositories>
         <repository>
             <id>sonatype-nexus-staging</id>
             <name>Sonatype Nexus Staging</name>
             <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
             <releases>
                 <enabled>true</enabled>
             </releases>
             <snapshots>
                 <enabled>true</enabled>
             </snapshots>
         </repository>
     </repositories>
    <dependencies>
     <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-sts</artifactId>
       <version>2.1.6</version>
     </dependency>
     <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-core</artifactId>
       <version>2.2.0</version>
     </dependency>
    </dependencies>

    説明

    aliyun-java-sdk-core パッケージの最新バージョンは、Maven repository から入手できます。

  2. セキュリティトークンを生成します。

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.http.MethodType;
    import com.aliyuncs.http.ProtocolType;
    import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
    import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
    
    /**
     * RAM ユーザーとしてのみ、この操作を呼び出すことができます。 // クライアントを初期化します。
     */
    public class STSTokenDemo {
    
        public static void main(String[] args) throws Exception {
            // クライアントを初期化します。
            DefaultAcsClient client = InitClient.initMpsClient();
            // RAM コンソールで RAM ロールの ARN を取得する必要があります。
            String roleArn = "acs:ram::174*********11242:role/sts-role";
    
            try {
                AssumeRoleResponse response = assumeRole(client, roleArn);
                System.out.println("Expiration: " + response.getCredentials().getExpiration());
                System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
                System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
                System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
                System.out.println("RequestId: " + response.getRequestId());
    
            } catch (ClientException e) {
                System.out.println("Failed to get a token."); // トークンの取得に失敗しました。
                System.out.println("Error code: " + e.getErrCode());
                System.out.println("Error message: " + e.getErrMsg());
            }
        }
        /** 一時的な AccessKey ペアとセキュリティトークンを生成するために使用されるメソッド。 */
        private static AssumeRoleResponse assumeRole(
                DefaultAcsClient client,
                String roleArn)
                throws ClientException {
            final AssumeRoleRequest request = new AssumeRoleRequest();
            request.setVersion("2015-04-01");
            request.setMethod(MethodType.POST);
            request.setProtocol(ProtocolType.HTTPS);
            request.setDurationSeconds(900L);
            request.setRoleArn(roleArn);
            request.setRoleSessionName("test-token");
            return client.getAcsResponse(request);
        }
    }
  3. セキュリティトークンの有効期間を調整します。

    サンプルコードで生成されるセキュリティトークンの有効期間は 900 秒です。 ビジネス要件に基づいて有効期間を調整できます。 有効な値:900~3600。 単位:秒。

    セキュリティトークンの有効期間中は、新しいトークンを生成しなくても、そのセキュリティトークンを使用できます。 次のコードを実行して、新しいセキュリティトークンを生成する必要があるかどうかを確認できます。

    private static boolean isTimeExpire(String expiration) {
         Date nowDate = new Date();
         Date expireDate = javax.xml.bind.DatatypeConverter.parseDateTime(expiration).getTime();
         if (expireDate.getTime() <= nowDate.getTime()) {
             return true; // 有効期限切れ
         } else {
             return false; // 有効期限切れではない
         }
    }

参照