OSS は、オブジェクトの直接的な名前変更をサポートしていません。同じバケット内のオブジェクトの名前を変更するには、CopyObject 操作を呼び出してソースオブジェクトをコピー先オブジェクトにコピーします。その後、DeleteObject 操作を呼び出してソースオブジェクトを削除します。
サンプルコード
以下のコードは、examplebucket バケット内の srcobject.txt ファイルの名前を destobject.txt に変更する方法の例を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
// 環境変数からアクセス認証情報を取得します。 このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケット名を指定します。
bucket: 'examplebucket',
})
async function renameObject() {
try {
// 同じバケット内で srcobject.txt を destobject.txt にコピーします。
const r = await client.copy('destobject.txt', 'srcobject.txt');
console.log('Copy successful.', r);
// srcobject.txt を削除します。
const deleteResult = await client.delete('srcobject.txt');
console.log(deleteResult);
} catch (e) {
console.log(e);
}
}
renameObject();説明
OSS は、フォルダの直接的な名前変更をサポートしていません。フォルダの名前を変更するには、上記の例で示したメソッドを使用して、フォルダ内の各サブディレクトリとオブジェクトの名前を個別に変更する必要があります。
関連ドキュメント
ファイルの名前変更に使用される API 操作の詳細については、「CopyObject」および「DeleteObject」をご参照ください。