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

Object Storage Service:オブジェクトのリスト (Ruby SDK)

最終更新日:Nov 30, 2025

このトピックでは、バケット内のオブジェクト (バケット内のすべてのオブジェクト、名前に特定のプレフィックスを含むオブジェクト、名前が特定のマーカーよりも辞書順で後にあるオブジェクトなど) をリストする方法について説明します。

バケット内のすべてのオブジェクトのリスト

次のコードは、examplebucket という名前のバケット内のすべてのオブジェクトをリストする方法の例を示しています。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # バケットが配置されているリージョンに対応するエンドポイントを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# バケット名を指定します。 例: examplebucket。
bucket = client.get_bucket('examplebucket')
# すべてのオブジェクトをリストします。
objects = bucket.list_objects
objects.each { |o| puts o.key }     

名前に特定のプレフィックスを含むオブジェクトのリスト

次のコードは、prefix パラメーターで指定された特定のプレフィックスを名前に含むオブジェクトをリストする方法の例を示しています。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # バケットが配置されているリージョンに対応するエンドポイントを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# バケット名を指定します。 例: examplebucket。
bucket = client.get_bucket('examplebucket')
# プレフィックス 'my-' を持つすべてのオブジェクトをリストします。
objects = bucket.list_objects(:prefix => 'my-')
objects.each { |o| puts o.key }   

名前が特定のマーカーよりも辞書順で後にあるオブジェクトのリスト

次のコードは、名前が特定のマーカーよりも辞書順で後にあるオブジェクトをリストする方法の例を示しています。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # バケットが配置されているリージョンに対応するエンドポイントを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# バケット名を指定します。 例: examplebucket。
bucket = client.get_bucket('examplebucket')
# プレフィックス 'my-' を持ち、'my-object' よりも辞書順で後にあるすべてのオブジェクトをリストします。
objects = bucket.list_objects(:prefix => 'my-', :marker => 'my-object')
objects.each { |o| puts o.key }      

フォルダー機能

OSS はフラットな構造を使用してオブジェクトを格納します。ディレクトリは、名前がスラッシュ (/) で終わるゼロバイトのオブジェクトです。このディレクトリはアップロードおよびダウンロードできます。デフォルトでは、名前がスラッシュ (/) で終わるオブジェクトは、OSS コンソールでディレクトリとして表示されます。

たとえば、次のオブジェクトが特定のバケットに格納されているとします。

foo/x
foo/y
foo/bar/a
foo/bar/b
foo/hello/C/1
foo/hello/C/2
...
foo/hello/C/9999            

list_dir 関数を呼び出して、指定したディレクトリ内のオブジェクトとサブディレクトリをリストできます。

require 'aliyun/oss'

def list_dir(dir, bucket)
  objects = bucket.list_objects(:prefix => dir, :delimiter => '/')
  objects.each do |obj|
    if obj.is_a?(Aliyun::OSS::Object) # オブジェクト
      puts "Object: #{obj.key}"
    else # 共通プレフィックス
      puts "SubDir: #{obj}"
      list_dir(obj, bucket) # list_dir を再帰的に呼び出してサブディレクトリを処理します。
    end
  end
end

client = Aliyun::OSS::Client.new(
  # この例では、中国 (杭州) リージョンが使用されています。 必要に応じてリージョンを指定してください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# バケット名を指定します。 例: examplebucket。
bucket = client.get_bucket('examplebucket')

list_dir('foo/', bucket)          

次の結果が返されます。

SubDir: foo/bar/
Object: foo/bar/
Object: foo/bar/3.txt
Object: foo/bar/oss.jpg
SubDir: foo/hello/
Object: foo/hello/
Object: foo/hello/001.avi
Object: foo/hello/007.avi
Object: foo/            

関連ドキュメント

オブジェクトをリストするために呼び出すことができる API 操作の詳細については、「GetBucket (ListObjects)」をご参照ください。