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

:初期化

最終更新日:Mar 05, 2024

OSSClientは、Object Storage Service (OSS) のAndroidクライアントです。 OSSClientは、呼び出し元にバケットとオブジェクトを管理するさまざまな方法を提供します。 OSS SDK for Androidを使用してOSSへのリクエストを開始する前に、OSSClientインスタンスを初期化して設定する必要があります。

説明

OSSClientインスタンスのライフサイクルが、インスタンスが作成されるアプリケーションのライフサイクルと同じであることを確認します。 これには、アプリケーションの起動時にOSSClientインスタンスを作成し、アプリケーションの停止時にインスタンスをリリースする必要があります。

OSSClientインスタンスの初期化

重要

モバイルデバイスは、様々な信頼できない環境で使用される。 したがって、リクエストに署名するためにAccessKeyIdAccessKeySecretをモバイルデバイスに保存することは非常に危険です。 Security Token Service (STS) 認証モードまたは自己署名モードを使用することを推奨します。

次のいずれかの方法を使用して、OSSClientインスタンスを作成できます。

説明

API操作を呼び出してオブジェクトをアップロードまたはダウンロードする方法の詳細については、「OSS SDK For Androidの使用を開始する」をご参照ください。

バケットをリストするためにOSSClientインスタンスを初期化するために使用されるメソッドは、次の例で使用されるメソッドとは異なります。 詳細については、「バケットのリスト」をご参照ください。

STSを使用したOSSClientインスタンスの作成

次のコードは、STSを使用してOSSClientインスタンスを作成する方法の例を示しています。

// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
String endpoint = "yourEndpoint";
// STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 
文字列accessKeyId = "yourAccessKeyId";
文字列accessKeySecret = "yourAccessKeySecret";
// STSから取得したセキュリティトークンを指定します。 
文字列securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken);
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider); 

カスタムドメイン名を使用してOSSClientインスタンスを作成する

次のコードは、カスタムドメイン名を使用してOSSClientインスタンスを作成する方法の例を示しています。

// カスタムドメイン名を指定します。 
String endpoint = "yourEndpoint";
// STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 
文字列accessKeyId = "yourAccessKeyId";
文字列accessKeySecret = "yourAccessKeySecret";
// STSから取得したセキュリティトークンを指定します。 
文字列securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken);
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider); 

Apsara StackまたはプライベートリージョンでOSSClientインスタンスを作成する

次のコードは、Apsara StackまたはプライベートリージョンでOSSClientインスタンスを作成する方法の例を示しています。

// バケットが配置されているリージョンのエンドポイントを指定します。 
String endpoint = "yourEndpoint";
// Security Token Service (STS) から取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 
文字列accessKeyId = "yourAccessKeyId";
文字列accessKeySecret = "yourAccessKeySecret";
// STSから取得したセキュリティトークンを指定します。 
文字列securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken);
ClientConfigurationの設定=新しいClientConfiguration();
// CNAMEの解像度をスキップします。 
List<String> excludeList = new ArrayList<>();
excludeList.add (エンドポイント);
configuration.setCustomCnameExcludeList(excludeList);
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(),endpoint, credentialProvider, configuration); 

自己署名モードを使用したOSSClientインスタンスの作成

次のコードは、自己署名モードを使用してOSSClientインスタンスを作成する方法の例を示しています。

// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
String endpoint = "yourEndpoint";

OSSCredentialProvider credentialProvider = new OSSCustomSignerCredentialProvider() {
    @オーバーライド
    public String signContent (文字列コンテンツ) {
        // コンテンツに署名します。 signatureは署名付き文字列です。 
        String signature = "signature";
        署名を返します。
    }
};
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider); 

自己署名モードの詳細については、「自己署名モード」をご参照ください。

OSSClient インスタンスの設定

ClientConfiguration は OSSClient の設定クラスです。 ClientConfigurationを使用して、プロキシサーバーのパラメーター、接続タイムアウト期間、最大接続数などのパラメーターを指定できます。 下表に、各パラメーターを説明します。

パラメーター

説明

メソッド

maxConcurrentRequest

パラレルリクエストの最大数。 既定値:5

ClientConfiguration.setMaxConcurrentRequest

socketTimeout

Socketレイヤーでのデータ送信のタイムアウト期間。 単位:ミリ秒。 デフォルト値: 60000

ClientConfiguration.setSocketTimeout

connectionTimeout

接続を確立するためのタイムアウト期間。 単位:ミリ秒。 デフォルト値: 60000

ClientConfiguration.setConnectionTimeout

max_log_size

ログの最大サイズ。 単位:MB。 既定値:5

ClientConfiguration.setMaxLogSize

maxErrorRetry

リクエストエラー発生時の最大リトライ回数。 デフォルト値: 3。

ClientConfiguration.setMaxErrorRetry

customCnameExcludeList

CNAMEの解決をスキップすることを指定します。

ClientConfiguration.setCustomCnameExcludeList

proxyHost

プロキシサーバーへのアクセスに使用されるホストのIPアドレス。

ClientConfiguration.setProxyHost

proxyPort

プロキシサーバーへの接続に使用されるポート。

ClientConfiguration.setProxyPort

mUserAgentMark

HTTP User-Agentヘッダー。

ClientConfiguration.setUserAgentMark

httpDnsEnable

HttpDNSを有効にするかどうかを指定します。

  • true: HttpDNSを有効にします。 OSSClient 2.9.12より前のバージョンの場合、これはデフォルト値です。

  • false: HttpDNSを無効にします。 OSSClient 2.9.12以降の場合、これはデフォルト値です。

ClientConfiguration.setHttpDnsEnable

checkCRC64

CRC-64を有効にするかどうかを指定します。 有効な値:

  • true

  • false (デフォルト)

ClientConfiguration.setCheckCRC64

followRedirectsEnable

HTTPリダイレクトを有効にするかどうかを指定します。 有効な値:

  • true

  • false (デフォルト)

ClientConfiguration.setFollowRedirectsEnable

okHttpClient

okHttpClientにカスタム値を設定できることを指定します。

ClientConfiguration.setOkHttpClient

ClientConfigurationを使用してOSSClientインスタンスのパラメーターを指定する方法の例を次に示します。

// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
String endpoint = "yourEndpoint";
// STSから取得した一時的なAccessKeyペアを指定します。 
文字列accessKeyId = "yourAccessKeyId";
文字列accessKeySecret = "yourAccessKeySecret";
// STSから取得したセキュリティトークンを指定します。 
文字列securityToken = "yourSecurityToken";

ClientConfigurationの設定=新しいClientConfiguration();
// 並列リクエストの最大数を指定します。 既定値:5 
// configuration.setMaxConcurrentRequest(3);
// Socketレイヤーでのデータ送信のタイムアウト時間を指定します。 デフォルト値: 60。 単位は秒です。 
// configuration.setSocketTimeout(50000);
// 接続を確立するためのタイムアウト時間を指定します。 デフォルト値: 60。 単位は秒です。 
// configuration.setConnectionTimeout(50000);
// ログの最大サイズを指定します。 既定値:5 単位:MB。 
// configuration.setMaxLogSize(3*1024*1024);
// リクエストエラー発生時の最大リトライ回数を指定します。 デフォルト値:2 
// configuration.setMaxErrorRetry(3);
// CNAMEの解決をスキップするように指定します。 
// List<String> cnameExcludeList = new ArrayList<>();
// cnameExcludeList.add("cname");
// configuration.setCustomCnameExcludeList(cnameExcludeList);
// プロキシサーバにアクセスするホストのIPアドレスを指定します。 
// configuration.setProxyHost("yourProxyHost");
// プロキシサーバーへの接続に使用するポートを指定します。 
// configuration.setProxyPort(8080);
// HTTP User-Agentヘッダーを指定します。 
// configuration.setUserAgentMark("yourUserAgent");
// CRC-64を有効にするかどうかを指定します。 デフォルト値:false 
// configuration.setCheckCRC64(true);
// HTTPリダイレクトを有効にするかどうかを指定します。 デフォルト値:false 
// configuration.setFollowRedirectsEnable(true);
// okHttpClientのカスタム値を指定します。 
// OkHttpClient.Builder builder = new OkHttpClient.Builder();
// configuration.setOkHttpClient(builder.build());

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId、accessKeySecret、securityToken);
// OSSClientインスタンスを作成します。 
OSSClient oss = new OSSClient(getApplicationContext(),endpoint, credentialProvider, configuration); 

ロギングを有効にする

モバイルデバイスは、様々な環境で使用される。 OSS SDK for Androidは、特定のリージョンまたは特定の期間に使用できない場合があります。 発生する可能性のある問題をトラブルシューティングするには、ログを有効にして、OSS SDK for Androidでローカルにログを記録できるようにします。 ロギングを有効にするには、まずOSSClientインスタンスを初期化する必要があります。 次のコードは、OSSClientインスタンスを初期化する方法の例を示しています。

// ログスタイルを指定します。 
// OSSLog.enableLog() を呼び出して、OSSコンソールでログの記録と表示を有効にします。 
// 次のパスで携帯電話の内蔵SDカードにログを書き込みます: \OSSLog\logs.csv。 デフォルトでは、ログをパスに書き込むことはできません。 
// ログには、OSS操作のリクエストデータ、レスポンスデータ、および例外情報が記録されます。 
// 例: リクエストIDとレスポンスヘッダー。 
// 次のセクションでは、ログ内のデータの例を示します。// Androidのバージョン。 
// android_version: 5.1
// Android携帯电话のモデル。 
// mobile_model: XT1085
// ネットワークステータス。   
// network_state: 接続中
// ネットワーク接続のタイプ。 
// network_type: Wi-Fi
// 操作の詳細。 
// [2017-09-05 16:54:52] -ローカル実行子: // java.lang.IllegalArgumentException: バケット名が無効です。 
// バケット名:
// 1) 小文字、数字、またはダッシュ (-) で構成されます。// 2) 小文字または数字で始まります。// 3) の長さは3〜63文字です。 
// ------> ログの終わり
// ロギングを有効にするには、このメソッドを呼び出します。 
OSSLog.enableLog(); 
説明

ログをサーバーまたはSimple Log Serviceにアップロードできます。

同期および非同期API呼び出し

モバイル開発シナリオでは、OSS SDK for Androidはアップロードおよびダウンロード操作の同期および非同期呼び出しを提供します。 他のほとんどの操作では、非同期呼び出しが使用されます。

  • 同期呼び出し

    • 同期操作が呼び出された後、呼び出しは応答を返すことをブロックされます。

    • 同期的に呼び出される操作は、UIスレッドで呼び出すことはできません。

    • 同期操作を呼び出すときに例外が発生した場合、システムはClientExceptionまたはServiceException例外をスローします。 ClientException例外は、無効なネットワークパラメータなどのローカル例外を指定します。 ServiceException例外は、認証失敗やサーバーエラーなど、OSSによって返されるサービス例外を指定します。

  • 非同期呼び出し

    • コールバック関数は、非同期操作用に設定する必要があります。 リクエストの実行結果はコールバックで処理されます。

    • 非同期呼び出しで例外が発生した場合、例外はコールバック関数で処理されます。

    • 非同期操作を呼び出すと、関数はタスクを返します。

      OSSAsyncTask task = oss.asyncGetObejct(...);
      task.ca ncel(); // タスクをキャンセルします。 
      task.waitUntilFinished(); // タスクが完了するまで待ちます。 
      GetObjectResult result=task.getResult(); // タスクの結果を取得します。