OSSClientは、Object Storage Service (OSS) のiOSクライアントです。 OSSClientは、呼び出し元にバケットとオブジェクトを管理する一連のメソッドを提供します。 OSS SDK for iOSを使用してOSSへのリクエストを開始する前に、OSSClientインスタンスを初期化して設定する必要があります。
OSSClientインスタンスのライフサイクルが、インスタンスが作成されるアプリケーションのライフサイクルと同じであることを確認します。 アプリケーションの起動時にOSSClientインスタンスを作成し、アプリケーションの停止時にインスタンスをリリースする必要があります。
OSSClientインスタンスの初期化
モバイルデバイスは、様々な信頼できない環境で使用される。 AccessKeyId
とAccessKeySecret
をモバイルデバイスに保存してリクエストに署名することは非常に危険です。 自己署名モードで、または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 | バックグラウンドセッションのカスタム識別子。 デフォルト値: | configuration.backgroundSesseionIdentifier |
isHttpdnsEnable | HttpDNSを有効にするかどうかを指定します。
| 構成. 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。 有効な値:
| configuration.crc64Verifiable |
isAllowUACarrySystemInfo | User-Agentフィールドにシステム情報の伝達を許可するかどうかを指定します。 デフォルト値: NO。 有効な値:
| configuration.isAllowUACarrySystemInfo |
isFollowRedirectsEnable | 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
呼び出されるすべてのAPI操作に対してOSSTaskが返されます。
OSSTask * task = [client getObject:get];
OSSTaskを指定します。
OSSTaskの継続を設定して、非同期コールバックを実装します。
[task continueWithBlock: ^(OSSTask *task) { // do something ... return nil; }];
OSSTaskが完了するまで待って、同期コールバックを実装します。
[task waitUntilFinished];