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

Object Storage Service:初期化

最終更新日:Sep 27, 2024

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

説明

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

OSSClientインスタンスの初期化

重要

モバイルデバイスは、様々な信頼できない環境で使用される。 AccessKeyIdAccessKeySecretをモバイルデバイスに保存してリクエストに署名することは非常に危険です。 自己署名モードで、またはSecurity Token Service (STS) から取得した資格情報を使用してOSSにアクセスすることを推奨します。

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

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

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

// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
NSString *endpoint = @"yourEndpoint";
// Specify the temporary AccessKey pair obtained from STS. An AccessKey pair consists of an AccessKey ID and an AccessKey secret. 
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Specify the security token obtained from STS. 
NSString *securityToken = @"yourSecurityToken";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider];

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

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

// Specify a custom domain name. 
NSString *endpoint = @"yourEndpoint";
// Specify the temporary AccessKey pair obtained from STS. An AccessKey pair consists of an AccessKey ID and an AccessKey secret. 
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Specify the security token obtained from STS. 
NSString *securityToken = @"yourSecurityToken";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider];

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

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

// Specify the endpoint of the region in which the bucket is located. 
NSString *endpoint = @"yourEndpoint";
// Specify the temporary AccessKey pair obtained from STS. 
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Specify the security token obtained from STS. 
NSString *securityToken = @"yourSecurityToken";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// Skip CNAME resolution. 
configuration.cnameExcludeList = @[endpoint];
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];

OSSClient インスタンスの設定

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

パラメーター

説明

移動方法

maxRetryCount

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

設定. maxRetryCount

maxConcurrentRequestCount

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

構成. maxConcurrentRequestCount

enableBackgroundTransmitService

バックグラウンドタスクを有効にするかどうかを指定します。 デフォルト値: NO。

enableBackgroundTransmitService構成

backgroundSesseionIdentifier

バックグラウンドセッションのカスタム識別子。 デフォルト値: com.aliyun.oss.backgroundsession

configuration.backgroundSesseionIdentifier

isHttpdnsEnable

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

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

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

構成. isHttpdnsEnable

timeoutIntervalForRequest

リクエストのタイムアウト期間。 単位は秒です。 デフォルト値:15。

configuration.timeoutIntervalForRequest

timeoutIntervalForResource

リソースのタイムアウト期間。 単位:日 デフォルト値 : 7

configuration.timeoutIntervalForResource

proxyHost

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

構成. proxyHost

proxyPort

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

configuration.proxyPort

userAgentMark

HTTPヘッダーのUser-Agentフィールド。

configuration.us erAgentMark

cnameExcludeList

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

configuration.cn ameExcludeList

crc64Verifiable

CRC-64を有効にするかどうかを指定します。 デフォルト値: NO。 有効な値:

  • YES: CRC-64を有効にします。

  • NO: CRC-64を無効にします。

configuration.crc64Verifiable

isAllowUACarrySystemInfo

User-Agentフィールドにシステム情報の伝達を許可するかどうかを指定します。 デフォルト値: NO。 有効な値:

  • YES: User-Agentフィールドがシステム情報を運ぶことを許可します。

  • NO: User-Agentフィールドにシステム情報の伝達を許可しません。

configuration.isAllowUACarrySystemInfo

isFollowRedirectsEnable

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

  • YES: HTTPリダイレクトを有効にします。

  • NO: HTTPリダイレクトを無効にします。

構成。isFollowRedirectsEnable

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

// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
NSString *endpoint = @"yourEndpoint";
// Specify the temporary AccessKey pair obtained from STS. 
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// Specify the security token obtained from STS. 
NSString *securityToken = @"yourSecurityToken";

id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// Specify the maximum number of retries when a request error occurs. 
configuration.maxRetryCount = 3;
// Specify the maximum number of parallel requests. 
configuration.maxConcurrentRequestCount = 3;
// Specify whether to enable background tasks. 
configuration.enableBackgroundTransmitService = YES;
// Specify a custom identifier for the background session. 
configuration.backgroundSesseionIdentifier = @"yourBackgroundSesseionIdentifier";
// Specify whether to enable httpDns. 
configuration.isHttpdnsEnable = YES;
// Specify a request timeout period. 
configuration.timeoutIntervalForRequest = 15;
// Specify a resource timeout period. 
configuration.timeoutIntervalForResource = 24 * 60 * 60;
// Specify the IP address that is used to access the proxy server. 
configuration.proxyHost = @"yourProxyHost";
// Specify the port of the proxy server. 
configuration.proxyPort = @8080;
// Specify the User-Agent field in the HTTP headers. 
configuration.userAgentMark = @"yourUserAgent";
// Specify that CNAME resolution is skipped. 
configuration.cnameExcludeList = @[@"yourCname"];
// Specify whether to enable CRC-64. 
configuration.crc64Verifiable = YES;
// Specify whether to allow the User-Agent field to carry system information. 
configuration.isAllowUACarrySystemInfo = YES;
// Specify whether to enable HTTP redirection. 
configuration.isFollowRedirectsEnable = NO;

OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];

ロギングを有効にする

モバイルデバイスは、様々な環境で使用される。 OSS SDK for iOSは、特定のリージョンまたは特定の期間中は使用できません。 起こりうる問題を特定するために、ロギングを有効にして、OSS SDK for iOSがローカルクライアントにログを記録できるようにします。 OSSClientを使用する前に、OSSClientインスタンスを初期化し、次のメソッドを呼び出してロギングを有効にします。

// Specify the log format. 
//2017/10/25 11:05:43:863  [Debug]: the 17th: <NSThread: 0x7f8099108580>{number = 3, name = (null)}
//2017/10/25 11:05:43:863  [Debug]: the 15th: <NSThread: 0x7f80976052c0>
//2017/10/25 11:05:43:863  [Debug]: ----------TestDebug------------
// Enable logging. 
[OSSLog enableLog];                
説明
  • ログはサンドボックスのCaches/OSSLogsディレクトリに保存されます。

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

OSSTask

  1. 呼び出されるすべてのAPI操作に対してOSSTaskが返されます。

    OSSTask * task = [client getObject:get];
  2. OSSTaskを指定します。

    • OSSTaskの継続を設定して、非同期コールバックを実装します。

      [task continueWithBlock: ^(OSSTask *task) {
          // do something
          ...
          return nil;
      }];
    • OSSTaskが完了するまで待って、同期コールバックを実装します。

      [task waitUntilFinished];