OSSClient は Object Storage Service (OSS) の iOS クライアントです。バケットやオブジェクトなどのリソースを管理するためのメソッドを提供します。SDK を使用して OSS にリクエストを送信する前に、OSSClient インスタンスを初期化して設定する必要があります。
OSSClient インスタンスのライフサイクルは、ご利用のアプリケーションのライフサイクルと一致させる必要があります。アプリケーションの起動時にグローバルな OSSClient インスタンスを作成し、アプリケーションの終了時にインスタンスを破棄します。
OSSClient の初期化
モバイル端末は信頼できない環境です。リクエストに署名するために AccessKeyId と AccessKeySecret を端末に直接保存すると、高いセキュリティリスクが生じます。セキュリティを強化するため、セキュリティトークンサービス (STS) 認証または自己署名モードを使用することを推奨します。
OSSClient インスタンスは、次のいずれかの方法で作成します。
STS を使用した OSSClient の作成
次のコードは、STS を使用して OSSClient を作成する方法の例です。
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// STS から取得したセキュリティトークン。
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";
id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;カスタムドメイン名を使用した OSSClient の作成
次のコードは、カスタムドメイン名を使用して OSSClient を作成する方法の例です。
// yourEndpoint をカスタムドメイン名に設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// STS から取得したセキュリティトークン。
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";
id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;Apsara Stack またはプライベートドメイン環境での OSSClient の作成
次のコードは、Apsara Stack またはプライベートドメイン環境で OSSClient を作成する方法の例です。
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// STS から取得したセキュリティトークン。
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";
id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// CNAME 解決をスキップします。
configuration.cnameExcludeList = @[endpoint];
configuration.signVersion = OSSSignVersionV4;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;OSSClient の設定
ClientConfiguration は OSSClient の設定クラスです。このクラスを使用して、プロキシ、接続タイムアウト、最大接続数などのパラメーターを設定します。
パラメーター | 説明 | メソッド |
maxRetryCount | 失敗したリクエストの最大リトライ数。 デフォルト値は 3 です。 | configuration.maxRetryCount |
maxConcurrentRequestCount | 最大同時リクエスト数。 デフォルト値は 5 です。 | configuration.maxConcurrentRequestCount |
enableBackgroundTransmitService | バックグラウンドタスクを有効にするかどうかを指定します。 デフォルトでは、この機能は無効になっています。 | configuration.enableBackgroundTransmitService |
backgroundSesseionIdentifier | バックグラウンドセッションのカスタム識別子。 デフォルト値は | configuration.backgroundSesseionIdentifier |
isHttpdnsEnable | HttpDNS を有効にするかどうかを指定します。
| configuration.isHttpdnsEnable |
timeoutIntervalForRequest | リクエストのタイムアウト間隔。 デフォルト値は 15 秒です。 | configuration.timeoutIntervalForRequest |
timeoutIntervalForResource | リソースのタイムアウト間隔。 デフォルト値は 7 日間です。 | configuration.timeoutIntervalForResource |
proxyHost | プロキシサーバーのホストアドレス。 | configuration.proxyHost |
proxyPort | プロキシサーバーのポート。 | configuration.proxyPort |
userAgentMark | HTTP リクエストの User-Agent ヘッダー。 | configuration.userAgentMark |
cnameExcludeList | このリスト内の要素は CNAME 解決をスキップします。 | configuration.cnameExcludeList |
crc64Verifiable | 64 ビット巡回冗長検査 (CRC64) 検証を有効にするかどうかを指定します。 有効な値:
| configuration.crc64Verifiable |
isAllowUACarrySystemInfo | User-Agent がシステム情報を含むことを許可するかどうかを指定します。 有効な値:
| configuration.isAllowUACarrySystemInfo |
isFollowRedirectsEnable | HTTP リダイレクトを有効にするかどうかを指定します。 有効な値:
| configuration.isFollowRedirectsEnable |
次のコードは、ClientConfiguration を使用して OSSClient のパラメーターを設定する方法の例です。
// yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
NSString *endpoint = @"yourEndpoint";
// STS から取得した一時的な AccessKey ペア。AccessKey ID と AccessKey Secret で構成されます。
NSString *accessKeyId = @"yourAccessKeyId";
NSString *accessKeySecret = @"yourAccessKeySecret";
// STS から取得したセキュリティトークン。
NSString *securityToken = @"yourSecurityToken";
NSString *region = @"yourRegion";
id<OSSCredentialProvider> credentialProvider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:accessKeyId secretKeyId:accessKeySecret securityToken:securityToken];
OSSClientConfiguration *configuration = [OSSClientConfiguration new];
// 署名バージョン V4 を使用します。
configuration.signVersion = OSSSignVersionV4;
// 失敗したリクエストの最大リトライ数。
configuration.maxRetryCount = 3;
// 最大同時リクエスト数。
configuration.maxConcurrentRequestCount = 3;
// バックグラウンドタスクを有効にするかどうかを指定します。
configuration.enableBackgroundTransmitService = YES;
// バックグラウンドセッションのカスタム識別子。
configuration.backgroundSesseionIdentifier = @"yourBackgroundSesseionIdentifier";
// HttpDNS を有効にするかどうかを指定します。
configuration.isHttpdnsEnable = YES;
// リクエストのタイムアウト間隔。
configuration.timeoutIntervalForRequest = 15;
// リソースのタイムアウト間隔。
configuration.timeoutIntervalForResource = 24 * 60 * 60;
// プロキシサーバーのホストアドレス。
configuration.proxyHost = @"yourProxyHost";
// プロキシサーバーのポート。
configuration.proxyPort = @8080;
// HTTP リクエストの User-Agent ヘッダー。
configuration.userAgentMark = @"yourUserAgent";
// このリスト内の要素は CNAME 解決をスキップします。
configuration.cnameExcludeList = @[@"yourCname"];
// CRC64 検証を有効にするかどうかを指定します。
configuration.crc64Verifiable = YES;
// User-Agent がシステム情報を含むことを許可するかどうかを指定します。
configuration.isAllowUACarrySystemInfo = YES;
// HTTP リダイレクトを有効にするかどうかを指定します。
configuration.isFollowRedirectsEnable = NO;
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credentialProvider clientConfiguration:configuration];
client.region = region;ロギングの有効化
モバイル端末は複雑な環境で動作するため、OSS SDK は特定のリージョンや時間帯に利用できなくなる場合があります。 開発者が問題を診断しやすくするために、OSS SDK はロギングが有効になっている場合にログ情報をローカルに記録できます。 OSSClient を使用する前に、初期化して次のメソッドを呼び出し、ロギングを有効にしてください。
// ログフォーマット。
//2017/10/25 11:05:43:863 [Debug]: 17th time: <NSThread: 0x7f8099108580>{number = 3, name = (null)}
//2017/10/25 11:05:43:863 [Debug]: 15th time: <NSThread: 0x7f80976052c0>
//2017/10/25 11:05:43:863 [Debug]: ----------TestDebug------------
// ロギングを有効にします。
[OSSLog enableLog]; ログファイルは、サンドボックスの Caches/OSSLogs フォルダに保存されます。
ファイルをご自身のサーバーにアップロードするか、Alibaba Cloud の Simple Log Service を使用してログファイルをアップロードできます。
OSSTask
すべての API 呼び出しは OSSTask を返します。
OSSTask * task = [client getObject:get];OSSTask を設定できます。
非同期コールバックを実装するには、OSSTask にコンティニュエーションを設定します。
[task continueWithBlock: ^(OSSTask *task) { // 何かを実行します ... return nil; }];同期コールバックを実装するには、OSSTask が完了するのを待ちます。
[task waitUntilFinished];