Class: DataDrain::Storage::S3
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #build_path(bucket, folder_name, partition_path) ⇒ String
- #destroy_partitions(bucket, folder_name, partition_keys, partitions) ⇒ Integer
-
#setup_duckdb(connection) ⇒ Object
Carga la extensión httpfs en DuckDB e inyecta las credenciales de AWS.
Methods inherited from Base
#initialize, #prepare_export_path
Constructor Details
This class inherits a constructor from DataDrain::Storage::Base
Instance Method Details
#build_path(bucket, folder_name, partition_path) ⇒ String
21 22 23 24 25 |
# File 'lib/data_drain/storage/s3.rb', line 21 def build_path(bucket, folder_name, partition_path) base = File.join(bucket, folder_name) base = File.join(base, partition_path) if partition_path && !partition_path.empty? "s3://#{base}/**/*.parquet" end |
#destroy_partitions(bucket, folder_name, partition_keys, partitions) ⇒ Integer
32 33 34 35 36 37 |
# File 'lib/data_drain/storage/s3.rb', line 32 def destroy_partitions(bucket, folder_name, partition_keys, partitions) client = s3_client prefix, pattern_regex = build_destroy_pattern(folder_name, partition_keys, partitions) objects = collect_matching_objects(client, bucket, prefix, pattern_regex) delete_in_batches(client, bucket, objects) end |
#setup_duckdb(connection) ⇒ Object
Carga la extensión httpfs en DuckDB e inyecta las credenciales de AWS. Si aws_access_key_id y aws_secret_access_key están seteados, usa credenciales explícitas. Si no, usa credential_chain (IAM role, env vars, ~/.aws/credentials).
12 13 14 15 |
# File 'lib/data_drain/storage/s3.rb', line 12 def setup_duckdb(connection) connection.query("INSTALL httpfs; LOAD httpfs;") create_s3_secret(connection) end |