Object Storage Service (OSS) では、オブジェクトをアップロードするための複数のメソッドが用意されています。 5 GBを超えるオブジェクトのアップロードは遅くなるか失敗する可能性があります。 ラージオブジェクトのアップロード効率を向上させるために、マルチパートアップロード、再開可能アップロード、ossbrowser、ossutilなどのメソッドを使用できます。
アップロード方法
OSSでは、サイズが0バイトから48.8テラバイトのオブジェクトをバケットにアップロードできます。 さまざまなアップロード方法を使用して、大きなオブジェクトまたは複数のオブジェクトを一度にアップロードするときのアップロード効率を向上させることができます。 これらの方法は、次のシナリオで役立ちます。
アップロードするオブジェクトのサイズが5 GBを超えており、OSSコンソール、シンプルアップロード、フォームアップロード、追加アップロードを使用してアップロードすることはできません。
アップロードするオブジェクトのサイズは5 GB未満ですが、ネットワークパフォーマンスが悪いため、断続的な接続タイムアウトまたは接続が発生します。
方法1: マルチパートアップロードまたは再開可能アップロード
マルチパートアップロードと再開可能アップロードは、次のシナリオに適しています。
大きなオブジェクト: アップロードするオブジェクトのサイズが5 GBを超えています。
ダウンロードのストリーミング: ビデオ監視用のクラウドビデオ録画アプリケーションなど、オブジェクトのサイズがまだ不明なシナリオでオブジェクトのアップロードを開始します。
ネットワーク接続不良: ネットワークパフォーマンスが悪い場合は、再開可能なアップロードをお勧めします。 再開可能なアップロードでは、アップロードに失敗したパーツのみをアップロードできます。 このアップロード方法は、中断前にアップロードされたパーツを再アップロードする必要がないため、アップロードが頻繁に中断されるシナリオでより効率的です。
アップロードアクセラレーション: アップロードするオブジェクトが大きい場合は、オブジェクトの一部を並行してアップロードして、アップロードプロセスを高速化できます。
詳細については、「マルチパートアップロード」および「再開可能アップロード」をご参照ください。
方法1: ossbrowser
ossbrowserを使用してオブジェクトをアップロードする場合は、次の項目に注意してください。
Security Token Service (STS) トークンを使用してossbrowserにログインできます。
シンプルなポリシー機能を使用するには、RAM設定権限を持つRAMユーザーのAccessKeyペアを使用してossbrowserにログインする必要があります。
多数のオブジェクトをアップロードする場合、アップロードタスクの数を増やして、オブジェクトのアップロードに必要な時間を短縮できます。
デフォルトでは、ossbrowserはマルチパートアップロードと再開可能アップロードを使用してオブジェクトをアップロードします。 アップロードするオブジェクトのサイズは48.8テラバイトを超えることはできません。
詳細については、「ossbrowserの使用」をご参照ください。
方法3: ossutil
ossutilを使用してオブジェクトをアップロードする場合は、次の項目に注意してください。
ossutilで
cp
コマンドを使用して、ラージオブジェクトをアップロードできます。-- bigfile-threshold
オプションを設定して、再開可能なアップロードが使用されるサイズのしきい値を指定できます。1つ以上のラージオブジェクトをアップロードする場合、
-jobs
および-parallel
オプションを設定して、アップロードのパフォーマンスを最適にするために同時タスクの数を制御できます。一度に複数のオブジェクトをアップロードする場合は、ossutilとossimportを使用できます。
一度にアップロードするオブジェクトの数が少ない場合は、ossutilを使用することを推奨します。
詳しくは、「オブジェクトのアップロード」をご参照ください。
トラブルシューティング
このセクションでは、大きなオブジェクトをアップロードするときに発生する一般的な問題と、これらの問題のトラブルシューティング方法について説明します。
PutObject操作を呼び出すと、オブジェクトのアップロードに失敗します。 これは、次の要因によって引き起こされる可能性があります。
アップロードするオブジェクトが5 GBを超えています。 ossutilを使用してオブジェクトをパーツ単位でアップロードします。
PutObjectを使用して5 GBを超えるオブジェクトのアップロード要求に対して応答がなく、タイムアウトエラーが発生します。 これは、最大送信単位 (MTU) が大きな値に設定されているためであると考えられる。 Elastic Compute Service (ECS) インスタンスで
netstat -i
を実行して、現在のMTU値を照会できます。 次の図は、内部および外部ネットワークインターフェースカードの既定のMTUが1500であることを示しています。MTUを小さい値に変更します。 たとえば、Linuxで
ip link set dev eth0 mtu 1470
を実行して、前の図のeth0のMTUを1470に変更できます。MultipartUpload操作またはossutilツールを使用します。
大きなオブジェクトをパーツで同時にアップロードすることはできません。
ossutilを使用してラージオブジェクトをアップロードする場合、
-- bigfile-threshold
、-jobs
、および-parallel
オプションを指定して、オブジェクトを同時にアップロードできます。OSS APIまたはOSS SDKのMultipartUpload操作を使用する場合は、オブジェクトを同時にアップロードするコードを記述します。 一部のOSS SDKでは、OSS SDK for JavaのtaskNumやOSS SDK for Pythonのnum_threadsなどのパラメーターを使用して、同時スレッド数を制御できます。