既存の追加可能なオブジェクトにコンテンツを追加できます。このトピックでは、Object Storage Service (OSS) SDK for Go 2.0 を使用して追加アップロードを実行する方法について説明します。
使用上の注意
このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID
cn-hangzhouを使用しています。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。バケットが配置されているのと同じリージョン内の他の Alibaba Cloud サービスを使用してバケット内のリソースにアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報を構成する方法の詳細については、「アクセス認証情報を構成する」をご参照ください。
コンテンツを追加するオブジェクトが存在しない場合は、追加アップロード操作を呼び出すと、追加可能なオブジェクトが作成されます。
コンテンツを追加するオブジェクトが既に存在する場合:
オブジェクトが追加可能なオブジェクトであり、追加操作の開始位置として指定された位置が現在のオブジェクトの長さと等しい場合、オブジェクトはオブジェクトの末尾に追加されます。
オブジェクトが追加可能なオブジェクトであり、追加操作の開始位置として指定された位置が現在のオブジェクトの長さと等しくない場合、PositionNotEqualToLength エラーが返されます。
オブジェクトが追加可能なオブジェクトでない場合、ObjectNotAppendable エラーが返されます。
権限
デフォルトでは、Alibaba Cloud アカウントにはフルパーミッションがあります。Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールには、デフォルトではパーミッションがありません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作パーミッションを付与する必要があります。
API | アクション | 定義 |
AppendObject |
| この操作を呼び出して、既存のオブジェクトにオブジェクトを追加することでオブジェクトをアップロードできます。 |
| 既存のオブジェクトにオブジェクトを追加してアップロードする場合、x-oss-tagging を介してオブジェクトタグを指定すると、このパーミッションが必要になります。 |
メソッド
OSS SDK for Go 2.0 は、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」をご参照ください。