追加アップロードを使用すると、既存の追加可能オブジェクトの末尾にコンテンツを直接追加できます。このトピックでは、OSS SDK for Go を使用して追加アップロードを実行する方法について説明します。
使用上の注意
このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID として
cn-hangzhouを使用します。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。バケットが配置されているのと同じリージョン内の他の Alibaba Cloud サービスを使用してバケット内のリソースにアクセスする場合は、内部エンドポイントを使用できます。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。このトピックでは、アクセス資格情報は環境変数から読み取られます。アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
コンテンツを追加するファイルが存在しない場合、追加アップロード API 操作を呼び出すと、追加可能オブジェクトが作成されます。
コンテンツを追加するファイルが存在する場合:
ファイルが追加可能オブジェクトであり、指定された追加位置がファイルの現在の長さと同じである場合、コンテンツはファイルの末尾に追加されます。
ファイルが追加可能オブジェクトであるが、指定された追加位置がファイルの現在の長さと同じでない場合、PositionNotEqualToLength 例外がスローされます。
ファイルが単純なアップロードを使用してアップロードされた通常のオブジェクトなど、追加可能オブジェクトでない場合、ObjectNotAppendable 例外がスローされます。
権限
デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。Alibaba Cloud アカウント下の RAM ユーザーまたは RAM ロールは、デフォルトではいかなる権限も持っていません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
AppendObject |
| この操作を呼び出して、既存のオブジェクトにオブジェクトを追加することでオブジェクトをアップロードできます。 |
| 既存のオブジェクトにオブジェクトを追加してオブジェクトをアップロードする際に、x-oss-tagging を通じてオブジェクトタグを指定する場合、この権限が必要です。 |
メソッド定義
追加アップロードのシナリオでは、OSS SDK for Go は、バケット内のオブジェクトのファイル読み取りおよび書き込み動作をシミュレートするための新しい AppendFile 操作を提供します。次の表に、AppendFile および AppendObject 操作について説明します。
操作名 | 説明 |
Client.AppendObject | 追加アップロードを実行します。最終的なオブジェクトのサイズは最大 5 GiB です。 CRC-64 データ整合性チェックをサポートします (デフォルトで有効)。 プログレスバーをサポートします。 リクエストボディは io.Reader 型です。io.Seeker 型がサポートされている場合、失敗時に再送が可能です。この操作はべき等ではなく、再送が失敗する可能性があります。 |
Client.AppendFile | Client.AppendObject 操作と同じ機能を提供します。 再送失敗に対するフォールトトレランスを最適化します。 AppendOnlyFile 操作を含みます。 AppendOnlyFile.Write AppendOnlyFile.WriteFrom |
サンプルコード
一般的なシナリオ
リファレンス
追加アップロードのプレミアム API 操作の詳細については、「AppendFile」をご参照ください。
追加アップロードの基本 API 操作の詳細については、「AppendObject」をご参照ください。