モバイルアプリは、モバイルインターネット技術の急速な発展に基づいてデータをアップロードするために使用されます。 Youことがログの携帯アプリにLogの必要とせずにServiceログ転送サーバの。 以下のセクションでは、このタイプのアップロードサービスを直接データ転送と呼びます。 このトピックでは、モバイルアプリのログをLog serviceにアップロードする直接データ転送サービスを構築する方法について説明します。

このタスクについて

通常モードでモバイルアプリからLog Serviceにログを書き込む場合は、認証と改ざん防止のためにAlibaba CloudアカウントのAccessKeyペアを有効にする必要があります。 Inこのモード、必要店をAccessKeyのペアあなたAlibaba Cloudアカウントに携帯アプリ。 これにより、AccessKeyペアが漏洩する可能性があります。 AccessKeyペアが漏洩した場合は、モバイルアプリをアップグレードしてAccessKeyペアを変更する必要があります。 In別モード、使用することができサーバアプリのデータを転送する。 モバイルアプリの数が多い場合、サーバーはすべてのモバイルデータを処理する必要があります。 Inこのケース、サーバの高仕様が必要です。

上記の問題を回避するために、Log Serviceはモバイルアプリからログを収集するためのより安全で便利なソリューションを提供します。 このソリューションでは、Resource Access Management (RAM) に基づいて直接データ転送サービスを構築できます。 Theサービスは携帯アプリに直接アクセスLog service。 Onlyを制御フローを通過するサーバの携帯アプリ。 Log ServiceのRAMロールを作成し、このロールを引き受けるようにRAMユーザーとしてモバイルアプリを設定できます。 このようにして、30分以内に直接データ転送サービスを構築できます。

メリット

RAMベースの直接データ転送には、次の利点があります。
  • より高いアクセスセキュリティ: 柔軟で一時的な承認と認証がサポートされています。
  • 低コスト: 必要なサーバーの数が少ないため、サーバーのコストが削減されます。
  • Higher同時実行: A多数のユーザーが同時に使用。 より高いアップロード帯域幅とダウンロード帯域幅はLog Serviceによって提供されます。
  • 自動スケーリング: Log Serviceを使用すると、制限を課すことなくストレージ容量を増やすことができます。

アーキテクチャ

次の図はアーキテクチャを示しています。 アーキテクチャ
次の表に、アーキテクチャを示します。
ノード説明
AndroidアプリiOSアプリログを収集するユーザーのモバイルアプリ。
Log serviceLog Serviceは、モバイルアプリからアップロードされたログを保存します。
RAM または STSAlibaba CloudのRAMまたはSTS (Security Token Service) は、一時的な資格情報を生成します。 RAMとSTSを使用して、ユーザーIDとリソースへのアクセスを管理できます。
アプリサーバーモバイルアプリのバックエンドサービス。 このサービスは、アプリでのデータアップロードとデータダウンロードのトークンを管理します。 このサービスは、アプリからアップロードされたデータのメタデータも管理します。

設定プロセス

  1. モバイルアプリは、アプリサーバーから一時的なアップロード資格情報を取得する要求を送信します。 理解を容易にするために、クレデンシャルは、トークンとも呼ばれる。

    AccessKeyペアをモバイルアプリに保存しないことをお勧めします。 これにより、AccessKeyペアが漏洩する可能性があります。 この場合、モバイルアプリはアプリサーバーからトークンを要求する必要があります。 トークンは、指定された期間中のみ有効です。 トークンの有効期間が30分の場合、モバイルアプリはそのトークンを使用して30分の期間中にLog Serviceにアクセスし、30分の期間が経過した後に新しいトークンを取得できます。 有効期間は、アプリサーバーで指定できます。

  2. アプリサーバーはリクエストの有効性をチェックします。 リクエストが有効な場合、アプリサーバーはモバイルアプリにトークンを返します。
  3. モバイルアプリがトークンを取得すると、アプリはLog Serviceにアクセスできます。

次のセクションでは、アプリサーバーがRAMからトークンを要求する方法と、モバイルアプリがトークンを取得する方法について説明します。

手順

  1. RAMロールにLog Serviceを管理する権限を付与します。

    Log Serviceで操作を実行するRAMロールを作成し、このロールを引き受けるようにモバイルアプリをRAMユーザーとして設定します。 詳細については、「ユーザーロール」をご参照ください。

    設定が完了すると、次の情報を取得することができます。
    • RAMユーザーのAccessKey IDとAccessKey secret
    • RAMロールのAlibaba Cloudリソース名 (ARN)
  2. アプリサーバーを構築します。

    複数のプログラミング言語のサンプルプログラムが提供され、開発が簡単になります。 PHP、Java、Ruby、およびNode.jsでプログラムをダウンロードできます。

    プログラムパッケージをダウンロードした後、構成ファイルconfig.jsonを取得できます。 例:
    {
        "AccessKeyID" : "",
        "AccessKeySecret" : "",
        "RoleArn" : "",
        "TokenExpireTime" : "900",
        "PolicyFile": "policy/write_policy.txt"
    }
                                
    項目説明
    AccessKeyIDRAM ユーザーの AccessKey ID。
    AccessKeySecretRAMユーザーのAccessKeyシークレット。
    RoleArnRAMロールのARN。
    TokenExpireTimeモバイルアプリによって取得されたトークンの有効期間。

    最小値: 900。 単位:秒。 デフォルト値を保持できます。

    ポリシーファイルトークンの権限を記述するファイル。 デフォルト値を保持できます。
    次のファイルは、トークンの権限を記述するために最も一般的に使用されます。 ファイルはポリシーディレクトリに保存されます。 ビジネス要件に基づいてファイルを構成することもできます。
    • write_policy.txt: トークンには、Alibaba Cloudアカウント内のプロジェクトに対する書き込み権限が付与されています。
    • readonly_policy.txt: トークンには、Alibaba Cloudアカウント内のプロジェクトに対する読み取り権限が付与されています。

    Java 1.7以降の場合は、プログラムパッケージをダウンロードして解凍した後にJavaプロジェクトを作成します。 必要な依存関係、コード、および設定をプロジェクトにコピーして、main関数を実行します。 デフォルトでは、プログラムはポート7080をリッスンし、HTTP要求を待ちます。 上記の操作は、別の言語のプログラムに対して実行できます。

    Formats返品データ
    // Sample成功応答
    {
        "statusCode":"20",
        "AccessKeyId":"STS.3pdgagd****",
        "AccessKeySecret":"rpnwO9wr34Y****",
        "SecurityToken":"CAMIARKAAZhj****=",
        "有効期限":"2021-11-12T07:49:09Z",}
    
    // サンプルエラー応答
    {
        "statusCode":"20",
        "ErrorCode":"InvalidAccessKeyId.NotFound",
        "ErrorMessage":"指定されたアクセスキーが見つかりません。}
    
                                
    • 次の表に、成功応答で返されるパラメーターを示します。 テーブル内の以下の変数は、トークンを構成する。
      ステータスコード説明
      StatusCodeトークンを取得するために送信されるリクエストに対して返されるHTTPステータスコード。 トークンが取得されると、HTTPステータスコード200が返されます。
      AccessKeyIdモバイルアプリのLogClientを初期化することによって取得されるAccessKey ID。
      AccessKeySecretモバイルアプリのLogClientを初期化することによって取得されるAccessKeyシークレット。
      SecurityTokenモバイルアプリの初期化から取得したトークン。
      有効期限トークンの有効期限が切れる時刻。

      SDK for Androidは、トークンの有効性を自動的にチェックし、既存のトークンが無効な場合は新しいトークンを取得します。

    • エラーレスポンスで返されるパラメーターを次の表に示します。
      エラーコード説明
      StatusCodeトークンを取得するために送信されるリクエストに対して返されるHTTPステータスコード。 トークンの取得に失敗した場合、HTTPステータスコード500が返されます。
      エラーコード返されるエラーコード。
      エラーメッセージ返されるエラーメッセージ。
  3. モバイルアプリからHTTPリクエストを開始して、アプリサーバーからトークンを取得します。
    次の例は、HTTPリクエストとレスポンスの形式を示しています。
    リクエストURL:GET https://localhost:7080/
    
    応答:
    {
    "StatusCode":"200","AccessKeyId":"STS.3pdgagd****","AccessKeySecret":"","SecurityToken":"","有効期限":"2021-11-20T08:23:15Z"
    }
                                
    説明 上記の例は、アプリサーバーを展開する方法を示すためだけに提供されています。 アプリサーバーのデプロイ後にカスタム開発を実行できます。