すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:追加アップロード

最終更新日:Apr 03, 2025

AppendObject 操作を呼び出して、既存の追加可能なオブジェクトにコンテンツを追加できます。

使用方法

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用しています。 OSS と同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報を設定する方法の詳細については、「アクセス認証情報を設定する」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスが作成されます。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「一般的なシナリオの設定例」をご参照ください。

  • コンテンツを追加するオブジェクトが存在しない場合、AppendObject 操作は、追加可能なオブジェクトを作成します。

  • コンテンツを追加するオブジェクトが既に存在する場合:

    • オブジェクトが追加可能なオブジェクトで、追加操作の開始位置として指定された位置が現在のオブジェクトサイズと等しい場合、データはオブジェクトの末尾に追加されます。

    • オブジェクトが追加可能なオブジェクトで、追加操作の開始位置として指定された位置が現在のオブジェクトサイズと等しくない場合、PositionNotEqualToLength エラーが返されます。

    • オブジェクトが追加可能なオブジェクトでない場合、ObjectNotAppendable エラーが返されます。

権限

デフォルトでは、Alibaba Cloud アカウントは、アカウント内のリソースに対するフル権限を持っています。 一方、RAM ユーザーと Alibaba Cloud アカウントに関連付けられている RAM ロールは、最初は権限を持っていません。 RAM ユーザーまたはロールを使用してリソースを管理するには、RAM ポリシーまたはバケットポリシーを使用して必要な権限を付与する必要があります。

API

アクション

説明

AppendObject

oss:PutObject

既存のオブジェクトにオブジェクトのコンテンツを追加することにより、オブジェクトをアップロードします。

oss:PutObjectTagging

追加アップロードを実行するときに、x-oss-tagging ヘッダーを使用してオブジェクトのタグを指定します。

サンプルコード

次のコードは、追加アップロードを使用してオブジェクトをアップロードする方法の例を示しています。

const OSS = require('ali-oss')

const client = new OSS({
  // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
  region: 'yourRegion',
  // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET を設定していることを確認してください。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // バケットの名前を指定します。例:examplebucket。
  bucket: 'examplebucket',
});

const headers = {    
  // オブジェクトのアクセス制御リスト (ACL) を指定します。
  'x-oss-object-acl': 'private',
  // オブジェクトのストレージタイプを指定します。
  'x-oss-storage-class': 'Standard',  
  // サーバ側暗号化方式を指定します。この例では、SSE-OSS が使用されています。
  'x-oss-server-side-encryption': 'AES256',  
};

async function append () {
  // 最初の追加アップロード操作を実行します。次の追加操作の開始位置は、レスポンスに含まれています。
  // オブジェクトの完全なパスを指定します。完全なパスにはバケット名を含めないでください。例:destfolder/examplefile.txt。
  // ローカルファイルの完全なパスを指定します。完全なパスには接尾辞が含まれます。例:/users/local/examplefile.txt。
  const result = await client.append('objectName', 'localFile'
  // カスタムヘッダーとユーザーメタデータを指定します。
  //,{headers} 
  )

  // 2 番目の追加操作を実行します。次の追加操作の開始位置は、Content-Length で指定されたオブジェクトの現在の長さです。
  result = await client.append('objectName', 'localFile', {
    position: result.nextAppendPosition
  })
}

append();

関連情報

追加アップロードを実行するために呼び出すことができる API 操作の詳細については、「AppendObject」をご参照ください。