このトピックでは、Harmony 用 Object Storage Service (OSS) SDK を使用してオブジェクトメタデータを構成およびクエリする方法について説明します。
使用上の注意
リージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
オブジェクトメタデータを構成するには、
oss:PutObject
権限が必要です。オブジェクトメタデータをクエリするには、oss:GetObject
権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。
オブジェクトのアップロード時にオブジェクトメタデータを構成する
次のサンプルコードは、オブジェクトのアップロード時にオブジェクトのアクセス制御リスト (ACL) を公開読み取りに設定する方法の例を示しています。
import Client, { EObjectAcl, RequestError } from '@aliyun/oss';
// OSSClient インスタンスを作成します。
const client = new Client({
// Security Token Service (STS) から取得した AccessKey ID を指定します。
accessKeyId: 'yourAccessKeyId',
// STS から取得した AccessKey シークレットを指定します。
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークンを指定します。
securityToken: 'yourSecurityToken',
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
});
const bucket = 'yourBucketName'; // バケットの名前を指定します。
const key='yourObjectName '; // オブジェクトの名前を指定します。
const putObject = async () => {
try {
// putObject メソッドを使用して、指定されたバケット内のオブジェクトにデータをアップロードし、パラメーターを渡します。
const res = await client.putObject({
bucket, // バケットの名前を指定します。
key, // オブジェクトの名前を指定します。
data: 'hello world' // アップロードするデータを指定します。この例では、単純な文字列がアップロードされます。
objectAcl: EObjectAcl.PRIVATE
});
// オブジェクトのアップロード操作の結果を表示します。
console.log(JSON.stringify(res));
} catch (err) {
// リクエスト中の例外をキャプチャします。
if (err instanceof RequestError) {
// 既知の種類のエラーが存在する場合は、エラーコード、エラーメッセージ、リクエスト ID、HTTP ステータスコード、EC などの情報を表示します。
console.log('code: ', err.code);
console.log('message: ', err.message);
console.log('requestId: ', err.requestId);
console.log('status: ', err.status);
console.log('ec: ', err.ec);
} else {
// その他の不明な種類のエラーを表示します。
console.log('unknown error: ', err);
}
}
}
// putObject 関数を呼び出して、オブジェクトのアップロード操作を実行します。
putObject();
オブジェクトメタデータをクエリする
HeadObject メソッドを使用してオブジェクトのすべてのメタデータをクエリする
次のサンプルコードは、HeadObject メソッドを使用してオブジェクトのすべてのメタデータをクエリする方法の例を示しています。
import Client, { RequestError } from '@aliyun/oss';
// OSSClient インスタンスを作成します。
const client = new Client({
// STS から取得した AccessKey ID を指定します。
accessKeyId: 'yourAccessKeyId',
// STS から取得した AccessKey シークレットを指定します。
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークンを指定します。
securityToken: 'yourSecurityToken',
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
});
// バケットの名前を指定します。
const bucket = 'yourBucketName';
// オブジェクトの名前を指定します。
const key = 'yourObjectName';
/**
* オブジェクトのメタデータをクエリします。
* HeadObject メソッドを使用して、オブジェクトをダウンロードせずにオブジェクトのメタデータをクエリします。
*/
const headObject = async () => {
try {
// HeadObject メソッドを使用して、オブジェクトのメタデータをクエリします。
const res = await client.headObject({
bucket, // バケットの名前を指定します。
key, // オブジェクトの名前を指定します。
});
// オブジェクトメタデータを表示します。
console.log(JSON.stringify(res));
} catch (err) {
// リクエスト中の例外をキャプチャします。
if (err instanceof RequestError) {
// 既知の種類のエラーが存在する場合は、エラーコード、エラーメッセージ、リクエスト ID、HTTP ステータスコード、EC などの情報を表示します。
console.log('code: ', err.code); // エラーコード
console.log('message: ', err.message); // エラーメッセージ
console.log('requestId: ', err.requestId); // リクエスト ID
console.log('status: ', err.status); // HTTP ステータスコード
console.log('ec: ', err.ec); // EC
} else {
// その他の不明な種類のエラーを表示します。
console.log('unknown error: ', err);
}
}
};
// headObject 関数を呼び出して、オブジェクトメタデータをクエリします。
headObject();
GetObjectMeta メソッドを使用してオブジェクトの部分メタデータをクエリする
説明
GetObjectMeta メソッドを使用すると、返されるコンテンツの長さ (ContentLength)、エンティティタグ (ETag)、最終更新時刻 (LastModified)、最終アクセス時刻 (LastAccessTime)、バージョン ID (VersionId)、CRC-64 ハッシュ (HashCRC64) など、オブジェクトの部分メタデータのみをクエリできます。
次のサンプルコードは、GetObjectMeta メソッドを使用してオブジェクトの部分メタデータをクエリする方法の例を示しています。
import Client, { RequestError } from '@aliyun/oss';
// OSSClient インスタンスを作成します。
const client = new Client({
// STS から取得した AccessKey ID を指定します。
accessKeyId: 'yourAccessKeyId',
// STS から取得した AccessKey シークレットを指定します。
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークンを指定します。
securityToken: 'yourSecurityToken',
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'oss-cn-hangzhou',
});
// バケットの名前を指定します。
const bucket = 'yourBucketName';
// オブジェクトの名前を指定します。
const key = 'yourObjectName';
/**
* オブジェクトのメタデータをクエリします。
* getObjectMeta メソッドを使用して、HTTP ヘッダーを含むオブジェクトのメタデータをクエリします。
*/
const getObjectMeta = async () => {
try {
// getObjectMeta メソッドを使用して、オブジェクトのメタデータをクエリします。
const res = await client.getObjectMeta({
bucket, // バケットの名前を指定します。
key, // オブジェクトの名前を指定します。
});
// オブジェクトメタデータを表示します。
console.log(JSON.stringify(res));
} catch (err) {
// リクエスト中の例外をキャプチャします。
if (err instanceof RequestError) {
// 既知の種類のエラーが存在する場合は、エラーコード、エラーメッセージ、リクエスト ID、HTTP ステータスコード、EC などの情報を表示します。
console.log('code: ', err.code); // エラーコード
console.log('message: ', err.message); // エラーメッセージ
console.log('requestId: ', err.requestId); // リクエスト ID
console.log('status: ', err.status); // HTTP ステータスコード
console.log('ec: ', err.ec); // EC
} else {
// その他の不明な種類のエラーを表示します。
console.log('unknown error: ', err);
}
}
};
// getObjectMeta 関数を呼び出して、オブジェクトメタデータをクエリします。
getObjectMeta();