Skip to content

Athena (S3 + Glue)

Install

See the Install guide for the full setup, including Windows PowerShell.

curl -fsSL https://install.skippr.io/install.sh | shClick to copy

Installing Skippr means accepting the Skippr EULA.

Uses Athena as the destination. Ingest and query share the same Athena: sink in data_sinks. source and warehouse in examples are logical names, not reserved words.

Configuration

yaml
data_sinks:
  warehouse:
    Athena:
      s3_bucket: my-bucket
      s3_prefix: bronze
      glue_database_name: my_database
      athena_workgroup_name: primary
      athena_results_s3_bucket: my-bucket
      region: us-east-1
      catalog: AwsDataCatalog
FieldDefaultDescription
s3_bucket(required)S3 bucket for Parquet landing
s3_prefixKey prefix for landed objects
glue_database_nameGlue database for catalog and unqualified queries
athena_workgroup_nameAthena workgroup name
athena_results_s3_bucketQuery-results bucket name (not an s3:// URI)
regionAWS region (query/model; ingest ignores this)
catalogAthena catalog name (query/model; ingest ignores this)
max_concurrencyOptional query concurrency (query/model; ingest ignores this)
discovery_cache_ttl_secsOptional catalog cache TTL (query/model; ingest ignores this)

CLI

bash
skippr connect warehouse athena \
  --s3-bucket my-bucket \
  --s3-prefix bronze \
  --athena-workgroup-name primary \
  --glue-database-name my_database \
  --athena-results-s3-bucket my-bucket \
  --region us-east-1 \
  --catalog AwsDataCatalog
FlagDescription
--s3-bucketS3 bucket for Parquet landing
--s3-prefixKey prefix for landed objects
--athena-workgroup-nameAthena workgroup name
--glue-database-nameGlue database name
--athena-results-s3-bucketQuery-results bucket name
--regionAWS region
--catalogAthena catalog name
--max-concurrencyOptional query concurrency
--discovery-cache-ttl-secsOptional catalog cache TTL

Config output

Running connect warehouse athena writes the Athena sink settings directly into the full skippr.yml engine config.

yaml
data_sinks:
  warehouse:
    Athena:
      s3_bucket: my-bucket
      s3_prefix: bronze
      glue_database_name: my_database
      athena_workgroup_name: primary
      athena_results_s3_bucket: my-bucket
      region: us-east-1
      catalog: AwsDataCatalog

Authentication

Authentication uses the AWS default credential chain.

  • AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
  • IAM roles, instance profiles, or task roles
  • AWS SSO or shared config profiles

Permissions or Network Requirements

The AWS principal needs access to the target S3 bucket, Glue database, and Athena workgroup or result location you configure. The runner must also be able to reach the AWS APIs for the configured region.

Partitioned API sources (GA4 and similar)

Sources such as Google Analytics (GA4) declare replace_partition on a date column. Athena deletes the matching S3 prefix (for example …/google_analytics.events_daily/date=2024-01-15/) before writing new Parquet and registers Glue partitions on date. This differs from generic time-bucketing layouts that only use p_year / p_month / p_day.

See Source landing semantics.

Troubleshooting

SymptomFix
query or Glue metadata errorsVerify the Glue database name, Athena workgroup settings, and the configured result S3 location.
AccessDeniedCheck the AWS credential chain and confirm access to S3, Glue, and Athena resources.
stale GA4 metrics for past datesUse a source with replace_partition and sufficient lookback_days; re-run skippr sync

Next steps