20
Fogを使用して特定のS3 "ディレクトリ"内のすべてのファイルを一覧表示するにはどうすればよいですか?RubyでFogを使用してS3フォルダ内のすべてのファイルを一覧表示する方法
私はS3がファイルをフォルダに格納しないことを知っていますが、バケット内のリスト全体を取得するのではなく、返されたファイルを特定の「フォルダ」に限定する方法が必要です。
Fogを使用して特定のS3 "ディレクトリ"内のすべてのファイルを一覧表示するにはどうすればよいですか?RubyでFogを使用してS3フォルダ内のすべてのファイルを一覧表示する方法
私はS3がファイルをフォルダに格納しないことを知っていますが、バケット内のリスト全体を取得するのではなく、返されたファイルを特定の「フォルダ」に限定する方法が必要です。
directory.getメソッドでprefix
オプションを使用します。例:
def get_files(path, options)
connection = Fog::Storage.new(
provider: 'AWS',
aws_access_key_id: options[:key],
aws_secret_access_key: options[:secret]
)
connection.directories.get(options[:bucket], prefix: path).files.map do |file|
file.key
end
end
「接頭辞」は、少なくとも構造的に言えば、実際には接尾辞であることに気付くはずです。ネストされたバケットへのパスが 'foo/bar'の場合、メソッド呼び出しは '.get( 'foo'、prefix: 'bar')'となります。 – pdoherty926
バケット名がパスの一部であるとは思わない場合、pdoherty926のメモはちょっと混乱します。 – Amir
ここでは、 '.map'を呼び出すとALLは返されず、AWS APIによって返されるページは1つのみしか返されないというケースがあります。ファイル上での各ファイルの呼び出しは、ファイルがたくさんある可能性があるため、Fogにメモリ消費を管理させます。 – rposborne