このトピックでは、バケットの一覧表示やオブジェクトのアップロードなど、Node.js環境でObject Storage Service (OSS) を管理する方法について説明します。
前提条件
OSS SDK for Node.jsが初期化されました。 詳細については、「初期化」をご参照ください。
バケットの一覧表示
次のコードは、現在のAlibaba Cloudアカウントに属するバケットを一覧表示する方法の例を示しています。
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
});
async関数listBuckets() {
try {
// 現在のAlibaba Cloudアカウント内のすべてのリージョンのすべてのバケットを一覧表示します。
const result = await client.listBuckets();
console.log (結果);
} catch (err) {
console.log(err);
}
}
listBuckets();
バケット内のオブジェクトの照会
次のコードは、バケット内のオブジェクトをクエリする方法の例を示しています。
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、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
async関数list () {
// デフォルトでは、パラメーターを指定しない場合、最大100個のオブジェクトを返すことができます。
const result = await client.list();
console.log (結果);
}
list();
ローカルファイルのアップロード
次のコードは、ローカルファイルをOSSバケットにアップロードする方法の例を示しています。
const OSS = require('ali-OSS ')
const path=require("path")
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、
// バケットの名前を指定します。
bucket: 'examplebucket' 、});
// カスタムリクエストヘッダーを追加します。
const headers = {
// オブジェクトのストレージクラスを指定します。
「x-oss-storage-classs」: 「標準」、
// オブジェクトのアクセス制御リスト (ACL) を指定します。
'x-oss-object-acl': 'private' 、
// オブジェクトのURLを使用してオブジェクトにアクセスする場合は、オブジェクトを添付ファイルとしてダウンロードするように指定します。 この例では、ダウンロードしたオブジェクトの名前はexample.jpgです。
'Content-Disposition': 'attachment; filename="example.txt" '、
// オブジェクトのタグを指定します。 オブジェクトに複数のタグを同時に指定できます。
'x-oss-tagging ': 'Tag1=1&Tag2=2' 、
// PutObject操作が同じ名前のオブジェクトを上書きするかどうかを指定します。 この例では、x-oss-forbid-overwriteパラメーターをtrueに設定します。これは、同じ名前の既存のオブジェクトをアップロードしたオブジェクトで上書きできないことを指定します。
'x-oss-forbid-overwrite': 'true' 、};
async関数put () {
try {
// オブジェクトとローカルファイルのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。
// ローカルファイルのパスが指定されていない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
const result = await client.put('exampleobject.txt ', path.normalize('D :\\ localpath\\examplefile.txt')
// カスタムヘッダーを指定します。
,{headers}
);
console.log (結果);
} catch (e) {
console.log(e);
}
}
put();
オブジェクトのダウンロード
次のコードは、オブジェクトをダウンロードする方法の例を示しています。
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、
// バケットの名前を指定します。
bucket: 'examplebucket'
});
async関数get () {
try {
// オブジェクトとローカルファイルのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。
// 同じ名前のファイルがすでに存在する場合、ダウンロードされたオブジェクトはファイルを上書きします。 それ以外の場合、ダウンロードされたオブジェクトはローカルファイルとして保存されます。
// ダウンロードしたオブジェクトのパスを指定しない場合、ダウンロードしたオブジェクトはサンプルプログラムが属するプロジェクトのパスに保存されます。
const result = await client.get('exampleobject.txt ', 'D :\\ localpath\\examplefile.txt');
console.log (結果);
} catch (e) {
console.log(e);
}
}
get();
オブジェクトの削除
次のコードは、オブジェクトを削除する方法の例を示しています。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: 'yourRegion' 、
// Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 これらの資格情報を使用してOSSで操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。RAMユーザーを作成するには、RAMコンソールにログインします。
accessKeyId: 'yourAccessKeyId' 、
accessKeySecret: 'yourAccessKeySecret' 、
// バケットの名前を指定します。
bucket: 'examplebucket' 、});
async関数deleteObject () {
try {
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
let result = await client.delete('exampleobject.txt ');
console.log (結果);
} catch (エラー) {
console.log (エラー);
}
}
deleteObject();
参考資料
バケットの一覧表示
バケットの一覧表示に使用する完全なサンプルコードについては、『GitHub』をご参照ください。
バケットを一覧表示するために呼び出すAPI操作の詳細については、「ListBuckets (GetService) 」をご参照ください。
バケット内のオブジェクトの照会
バケット内のオブジェクトのクエリに使用する完全なサンプルコードについては、GitHubをご参照ください。
バケット内のオブジェクトを照会するために呼び出すAPI操作の詳細については、「GetBucket (ListObjects) 」をご参照ください。
ローカルファイルのアップロード
オブジェクトのダウンロード
オブジェクトの削除
オブジェクトの削除に使用される完全なサンプルコードについては、『GitHub』をご参照ください。
オブジェクトを削除するために呼び出すことができるAPI操作の詳細については、「DeleteObject」をご参照ください。