AppendObject操作を呼び出して、既存の追加可能オブジェクトにコンテンツを追加できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。
追加アップロードを使用するには、
oss:PutObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。コンテンツを追加するオブジェクトが存在しない場合、AppendObject操作を呼び出すと追加可能なオブジェクトが作成されます。
コンテンツを追加するオブジェクトが存在する場合:
オブジェクトが追加可能なオブジェクトであり、追加操作が開始される指定された位置が現在のオブジェクトサイズに等しい場合、データはオブジェクトの最後に追加されます。
オブジェクトが追加可能オブジェクトであり、追加操作の開始位置が現在のオブジェクトサイズと等しくない場合、PositionNotEqualToLengthエラーが返されます。
オブジェクトが追加可能オブジェクトでない場合、ObjectNotAppendableエラーが返されます。
CopyObject操作は、追加可能なオブジェクトでは実行できません。
サンプルコード
次のコードは、追加アップロードを使用してオブジェクトをアップロードする方法の例を示しています。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: 'yourRegion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。 例: examplebucket.
bucket: 'examplebucket' 、});
const headers = {
// オブジェクトのアクセス制御リスト (ACL) を指定します。
'x-oss-object-acl': 'private' 、
// オブジェクトのストレージクラスを指定します。
「x-oss-storage-classs」: 「標準」、
// サーバー側の暗号化方法を指定します。 この例では、SSE-OSSが使用されます。
'x-oss-server-side-encryption: 'AES256' 、};
async関数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」をご参照ください。