すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:オブジェクト ACL の管理

最終更新日:Apr 02, 2025

このトピックでは、Harmony 用 Object Storage Service (OSS) SDK を使用してオブジェクトのアクセス制御リスト (ACL) を管理する方法について説明します。

使用上の注意

ACL の種類

次の表に、オブジェクトに設定できる ACL について説明します。

ACL

説明

バケットから継承

オブジェクトの ACL は、オブジェクトが格納されているバケットの ACL と同じです。

default

非公開

オブジェクトの所有者と承認されたユーザーのみが、オブジェクトに対する読み取り権限と書き込み権限を持ちます。他のユーザーはオブジェクトにアクセスできません。

private

公開読み取り

オブジェクトの所有者と承認されたユーザーのみが、オブジェクトに対する読み取り権限と書き込み権限を持ちます。他のユーザーは、オブジェクトに対する読み取り権限のみを持ちます。オブジェクトの ACL をこの値に設定する場合は注意してください。

public-read

公開読み書き

すべてのユーザーが、オブジェクトに対する読み取り権限と書き込み権限を持ちます。オブジェクトの ACL をこの値に設定する場合は注意してください。

public-read-write

オブジェクトの ACL は、オブジェクトが格納されているバケットの ACL よりも優先されます。たとえば、非公開バケット内のオブジェクトの ACL が 公開読み取り に設定されている場合、匿名ユーザーを含むすべてのユーザーがオブジェクトを読み取ることができます。オブジェクトの ACL が設定されていない場合、オブジェクトの ACL は、オブジェクトが格納されているバケットの ACL と同じになります。

オブジェクトの 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';
// ACL を設定するオブジェクトの名前を指定します。
const key = 'yourObjectName';

/**
 * オブジェクトの ACL を設定します。
 * putObjectAcl メソッドを使用して、オブジェクトの ACL を設定します。
 */
const putObjectAcl = async () => {
  try {
    // putObjectAcl メソッドを使用して、オブジェクトの ACL を設定します。
    const res = await client.putObjectAcl({
      bucket, // バケットの名前を指定します。
      key, // オブジェクトの名前を指定します。
      acl: EObjectAcl.PRIVATE, // オブジェクトの ACL を 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); // リクエスト ID。
      console.log('status: ', err.status); // HTTP ステータスコード。
      console.log('ec: ', err.ec); // EC。
    } else {
      // その他の不明な種類のエラーを表示します。
      console.log('unknown error: ', err);
    }
  }
};

// putObjectAcl 関数を呼び出して、オブジェクトの ACL を設定します。
putObjectAcl();

オブジェクトの ACL を照会する

import Client, { 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';
// ACL を照会するオブジェクトの名前を指定します。
const key = 'yourObjectName';

/**
 * オブジェクトの ACL を照会します。
 * getObjectAcl メソッドを使用して、オブジェクトの ACL を照会します。
 */
const getObjectAcl = async () => {
  try {
    // getObjectAcl メソッドを使用して、オブジェクトの ACL を照会します。
    const res = await client.getObjectAcl({
      bucket, // バケットの名前を指定します。
      key, // オブジェクトの名前を指定します。
    });

    // オブジェクトの ACL を表示します。
    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);
    }
  }
};

// getObjectAcl 関数を呼び出して、オブジェクトの ACL を照会します。
getObjectAcl();