このトピックでは、Object Storage Service (OSS) バケットからローカルデバイスにオブジェクトをすばやくダウンロードする方法について説明します。
考慮事項
OSS でサポートされているリージョンとエンドポイントのマッピングについては、「OSS リージョンとエンドポイント」をご参照ください。
オブジェクトをローカルデバイスにダウンロードするには、
oss:GetObject権限が必要です。詳細については、「RAM ユーザーにカスタム権限を付与する」をご参照ください。
サンプルコード
次のコードは、バケットからローカルメモリにオブジェクトをダウンロードする方法を示しています。
import Client, { RequestError } from '@aliyun/oss';
// OSS クライアントインスタンスを作成します。
const client = new Client({
// Security Token Service (STS) から取得した AccessKey ID を指定します。
accessKeyId: 'yourAccessKeyId',
// STS から取得した AccessKey シークレットを指定します。
accessKeySecret: 'yourAccessKeySecret',
// STS から取得した STS トークンを指定します。
securityToken: 'yourSecurityToken',
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
});
// バケットの名前を指定します。
const bucket = 'yourBucketName';
// ダウンロードするオブジェクトの名前を指定します。
const key = 'yourObjectName';
/**
* オブジェクトをダウンロードします。
* getObject メソッドを使用して、指定されたバケットとキーからオブジェクトをダウンロードします。オブジェクトのコンテンツは、ArrayBuffer として res.data を介して返されます。
*/
const getObject = async () => {
try {
// getObject メソッドを呼び出して、指定されたバケットとキーからオブジェクトをダウンロードします。
const res = await client.getObject({
bucket, // バケットの名前を指定します。
key, // オブジェクトの名前を指定します。
});
// オブジェクトのコンテンツを照会します。データ型は ArrayBuffer です。
const buf: ArrayBuffer = res.data!;
// オブジェクトのダウンロード操作の結果を表示します。
console.log(JSON.stringify(res));
} catch (err) {
// リクエスト中の例外をキャプチャします。
if (err instanceof RequestError) {
// 既知のエラーの場合は、エラーコード、エラーメッセージ、リクエスト ID、および HTTP ステータスコードを表示します。
console.log('High-level error code: ', err.code); // ハイレベルエラーコードを表示します。
console.log('message: ', err.message); // エラーメッセージを表示します。
console.log('Request ID: ', err.requestId); // リクエスト ID を表示します。
console.log('HTTP status code: ', err.status); // HTTP ステータスコードを表示します。
console.log('Fine-grained error code: ', err.ec); // 詳細なエラーコードを表示します。
} else {
// その他の不明なタイプのエラーを表示します。
console.log('unknown error: ', err);
}
}
};
// getObject 関数を呼び出して、オブジェクトをダウンロードします。
getObject();