|
| 1 | += Query Iceberg Topics using AWS Glue |
| 2 | +:description: Add Redpanda topics as Iceberg tables that you can query in from AWS Glue Data Catalog. |
| 3 | +:page-categories: Iceberg, Tiered Storage, Management, High Availability, Data Replication, Integration |
| 4 | + |
| 5 | +[NOTE] |
| 6 | +==== |
| 7 | +include::shared:partial$enterprise-license.adoc[] |
| 8 | +==== |
| 9 | + |
| 10 | +// tag::single-source[] |
| 11 | + |
| 12 | +== Prerequisites |
| 13 | + |
| 14 | +* Redpanda version 25.1.7 or later. |
| 15 | +* A database in AWS Glue Data Catalog. |
| 16 | + |
| 17 | +== Limitations |
| 18 | + |
| 19 | +=== Nested partition spec support |
| 20 | + |
| 21 | +Glue does not support partitioning on nested fields. If Redpanda detects that |
| 22 | +the default partitioning `(hour(redpanda.timestamp))` is in use, it will instead apply an empty partition spec `()`, which means the table will not be partitioned. |
| 23 | + |
| 24 | +If you want to use partitioning, specify your custom partition spec using your own partition columns (columns thatare not nested). |
| 25 | + |
| 26 | +== Update cluster configuration |
| 27 | + |
| 28 | +=== Enable Iceberg using the Glue REST catalog |
| 29 | + |
| 30 | +Set `iceberg_enabled: true` and for the topic set `redpanda.iceberg.enabled=true`. |
| 31 | + |
| 32 | +Set `iceberg_catalog_type: "rest"` and `iceberg_rest_catalog_endpoint: "https://glue.<region>.amazonaws.com"`. |
| 33 | +Make note of the region used in the endpoint, as it must match the region configured for credentials. |
| 34 | + |
| 35 | +=== Configure authentication and credentials |
| 36 | + |
| 37 | +Set `iceberg_rest_catalog_authentication_mode: "aws_sigv4"`, the only value supported for AWS Glue. |
| 38 | + |
| 39 | +There is a configuration property `iceberg_rest_catalog_aws_service_name`. Its default value is `"glue"`. This configuration property exists to reserve configuration in case Redpanda needs to support other services in the future, because knowing the service name is necessary for AWS SigV4 authentication. You do not need to modify this property. |
| 40 | + |
| 41 | +Credentials can be specified in two ways: |
| 42 | + |
| 43 | +* Specify the `cloud_storage_*` credentials as one would for S3, and |
| 44 | +then Iceberg will use those same credentials in the same way as object storage |
| 45 | +* If you want to configure authentication to AWS Glue differently |
| 46 | +than authentication to S3, there are equivalent credential configuration properties named `iceberg_rest_catalog_*`. These credential-related configuration properties only apply to REST catalog authentication, and never to S3 authentication. |
| 47 | + |
| 48 | +* `iceberg_rest_catalog_aws_access_key` overrides `cloud_storage_access_key` |
| 49 | +* `iceberg_rest_catalog_aws_secret_key` overrides `cloud_storage_secret_key` |
| 50 | +* `iceberg_rest_catalog_aws_region` overrides `cloud_storage_region` |
| 51 | +* `iceberg_rest_catalog_aws_credentials_source` overrides `cloud_storage_credentials_source` |
| 52 | + |
| 53 | +=== Special aspects of Glue data catalog |
| 54 | + |
| 55 | +==== Base location |
| 56 | + |
| 57 | +AWS Glue requires you to specify the base location of the catalog. The configuration property `iceberg_rest_catalog_base_location` sets this location. You must use |
| 58 | +an S3 URI like `s3://your-bucket/path`. |
| 59 | + |
| 60 | +=== Example minimal valid configuration of Glue as a REST catalog |
| 61 | + |
| 62 | +[,bash] |
| 63 | +---- |
| 64 | +rpk cluster config set \ |
| 65 | + iceberg_enabled: true \ |
| 66 | + iceberg_catalog_type: rest \ |
| 67 | + iceberg_rest_catalog_endpoint: 'https://glue.us-west-2.amazonaws.com/iceberg' \ |
| 68 | + iceberg_rest_catalog_authentication_mode: 'aws_sigv4' \ |
| 69 | + iceberg_rest_catalog_aws_region: 'us-west-2' \ |
| 70 | + // iceberg_rest_catalog_aws_access_key: 'MYACCESSKEY' \ # Redacted |
| 71 | + iceberg_rest_catalog_aws_access_key: ${secrets.<aws_access_key>} \ |
| 72 | + // iceberg_rest_catalog_aws_secret_key: 'MYSECRETKEY' \ # Redacted |
| 73 | + iceberg_rest_catalog_aws_secret_key: ${secrets.<aws_secret_key>} \ |
| 74 | + iceberg_rest_catalog_base_location: 's3://wdberkeley-test' |
| 75 | +---- |
| 76 | + |
| 77 | +The cloud_storage_* properties are used for Iceberg catalog authentication as well. |
| 78 | + |
| 79 | +// end::single-source[] |
0 commit comments