Class: DataDrain::Storage::S3
Overview
Adaptador de almacenamiento para Amazon S3. Configura credenciales en DuckDB y provee destrucción de particiones vía AWS SDK.
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
25 26 27 |
# File 'lib/data_drain/storage/s3.rb', line 25 def build_path(bucket, folder_name, partition_path) "s3://#{build_path_base(bucket, folder_name, partition_path)}/**/*.parquet" end |
#destroy_partitions(bucket, folder_name, partition_keys, partitions) ⇒ Integer
34 35 36 37 38 39 |
# File 'lib/data_drain/storage/s3.rb', line 34 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).
16 17 18 19 |
# File 'lib/data_drain/storage/s3.rb', line 16 def setup_duckdb(connection) connection.query("INSTALL httpfs; LOAD httpfs;") create_s3_secret(connection) end |