このトピックでは、Security Token service (STS) ポリシーを使用して、モバイルアプリケーションの直接データ転送サービスを30分未満で設定する方法について説明します。 直接データ転送を使用すると、モバイルアプリケーションを使用してObject Storage Service (OSS) に接続できます。 これにより、データをアップロードおよびダウンロードし、制御フローのみをアプリケーションサーバーに送信できます。
前提条件
背景情報
モバイルインターネット時代では、モバイルアプリケーションを使用して大量のデータがアップロードされます。 OSSは、アプリケーション開発に集中できるように、データストレージの問題を処理するのに役立ちます。
モバイルアプリケーション向けのOSSベースの直接データ転送には、次の利点があります。
データセキュリティ: OSSでは、モバイルアプリケーションが柔軟な承認および認証方法に基づいてデータをアップロードおよびダウンロードできます。 これにより、データのセキュリティが向上します。
費用対効果: 少数のアプリケーションサーバーが必要です。 これはコスト削減に役立ちます。 モバイルアプリケーションはデータのアップロードとダウンロードのためにOSSに接続され、制御フローのみがアプリケーションサーバーに送信されます。
高い同時実行性: OSSは、多数のユーザーから送信される同時アクセス要求をサポートします。
Elasticスケーラビリティ: OSSは無制限でスケーラブルなストレージを提供します。
データ処理: OSSは、画像処理 (IMG) とオーディオおよびビデオトランスコーディングをサポートしているため、ユーザーは柔軟にデータを処理できます。
処理中
次の図は、モバイルアプリケーション向けの直接データ転送サービスの開発プロセスを示しています。
参加者分析:
AndroidまたはiOSアプリケーション: アプリケーションサーバーからSTSトークンを要求し、STSトークンを使用するモバイルデバイス上のアプリケーション。
OSS: モバイルアプリケーションから送信されたデータ要求を処理します。
Resource Access Management (RAM)/STS: 一時的なアップロードトークンを生成します。
アプリケーションサーバー: AndroidまたはiOSアプリケーションのバックエンドサービス。 アプリケーションサーバは、アプリケーションおよびアップロードされたデータのメタデータを使用することによって、データのアップロードおよびダウンロードのためのトークンを管理するために使用される。
プロセスステップ:
モバイルアプリケーションは、一時的なアップロードクレデンシャルとして、アプリケーションサーバにトークンを要求する。
セキュリティ上の懸念から、AccessKeyペアはAndroidおよびiOSアプリケーションに保存できません。 モバイルアプリケーションは、アプリケーションサーバーからトークンを要求する必要があります。 トークンは特定の期間有効です。 アプリケーションサーバーが30分の有効期間を指定している場合、AndroidまたはiOSアプリケーションは、トークンを使用して、トークンが発行されてから30分以内にOSSにデータをアップロードまたはOSSからデータをダウンロードできます。 30分後、アプリケーションはデータをアップロードまたはダウンロードするために新しいトークンを要求する必要があります。
アプリケーションサーバーは、要求の有効性をチェックし、トークンをアプリケーションに返します。
AndroidまたはiOSアプリケーションは、トークンを使用してOSSにデータをアップロードまたはOSSからデータをダウンロードします。
次のセクションでは、アプリケーションサーバーがトークンを生成する方法と、AndroidまたはiOSアプリケーションがトークンを取得する方法について説明します。
手順
手順1: STSの有効化とアプリケーションサーバーの設定
ROS (Resource Orchestration Service) を使用して、STSの有効化、ECS (Elastic Compute Service) インスタンスの設定、およびECSインスタンスへのアプリケーションサーバーのソースコードのデプロイを行うことができます。 ROSを使用してSTSをアクティブ化し、アプリケーションサーバーを構成するには、次の手順を実行します。
ROSコンソールの [スタックの作成] ウィザードに移動します。
[スタックの作成] ウィザードの [テンプレートの選択] ステップで、スタック名を入力し、購入するECSインスタンスのゾーン、インスタンスタイプ、システムディスクカテゴリ、およびパスワードを指定して、[次へ] をクリックします。 [チェックと確認] ステップで、設定を確認し、作成する をクリックします。
表示されるページの [スタック情報] タブで、スタックのステータスは [作成中] になります。
スタックのステータスが作成済みになったら、[出力] タブをクリックして、ECSインスタンスにデプロイされたアプリケーションサーバーに関する情報を表示します。
ステップ2: モバイルアプリケーションのダウンロードとインストール
モバイルアプリケーションのソースコードパッケージをダウンロードします。
モバイルアプリケーションを開き、アプリケーションパラメータを設定します。
App server: ステップ1の出力情報のアプリケーションサーバアドレス。
宛先バケット: モバイルアプリケーションからデータがアップロードされるバケット。
リージョン: 宛先バケットが配置されているリージョン。
OSSオブジェクト名: 名前には、アプリケーションサーバーのポリシー設定ファイルで指定されたプレフィックスが含まれている必要があります。
タップ設定.
手順3: モバイルアプリケーションの直接データ転送の設定
モバイルアプリケーションを開きます。
Select Imageをタップします。 アップロードする画像を選択し、オブジェクト名を指定します。
オブジェクトがアップロードされたら、OSSコンソールでアップロード結果を確認します。
コアコード解析
次のサンプルコードに初期化の例を示します。
Android
// OSSAuthCredentialsProviderを使用することを推奨します。 トークンは、有効期限が切れると自動的に更新されます。
String stsServer = "アプリケーションサーバーのアドレス ( https://example.com:8080 など)"
OSSCredentialProvider credentialProvider=新しいOSSAuthCredentialsProvider(stsServer);
// 以下のパラメータを指定します。ClientConfiguration conf = new ClientConfiguration();
conf.setConnectionTimeout(15*1000); // 接続タイムアウト時間 (秒) 。 デフォルト値:15。
conf.setSocketTimeout(15*1000); // ソケットのタイムアウト時間 (秒) 。 デフォルト値:15。
conf.setMaxConcurrentRequest(5); // The maximum number of concurrent requests. 既定値:5
conf.setMaxErrorRetry(2); // リトライの最大数。 デフォルト値:2
OSS oss = new OSSClient(getApplicationContext() 、endpoint、credentialProvider、conf);
iOS
OSSClient * client;
...
// OSSAuthCredentialProviderの使用を推奨します。 トークンは、有効期限が切れると自動的に更新されます。
id<OSSCredentialProvider> credential = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:@ " https://example.com:8080 などのアプリサーバーアドレス"];
client = [[OSSClient alloc] initWithEndpoint:endPoint credentialProvider:credential];