Skip to main content
Version: Current

AWS Glue (Iceberg REST catalog)

version: Enterprise Mode: Streaming

Overview​

The AWS Glue integration connects Nussknacker to Apache Iceberg tables registered in the AWS Glue Data Catalog. It uses the Glue Iceberg REST endpoint (https://glue.<region>.amazonaws.com/iceberg) as a Flink Iceberg catalog, so the table schemas come from the catalog and no data type mappings or CREATE TABLE statements are needed. Table data is read from and written to S3 with the same credentials.

Once configured, the following components are added to the Component Palette, both labeled <integration name> Iceberg AWS Glue:

In the component, choose the table from the tables discovered in the catalog.

To add the integration, open Integrations from the Designer's side menu and click Add new on the AWS Glue tile (category Iceberg).

Integration parameters​

ParameterRequiredDescription
Integration nametrueName used to refer to this configuration in the Iceberg AWS Glue components; it prefixes the generated component names. At least 3 characters.
RegiontrueAWS Region of your Glue Data Catalog, e.g. eu-central-1.
AWS Access Key IDtrueAccess key ID of the AWS IAM user used by the integration.
AWS Secret Access KeytrueSecret access key of that IAM user.
WarehousefalseChooses a specific Glue catalog; called the prefix parameter in the Iceberg REST specification. If left empty, the default catalog of the AWS account is used. See AWS documentation.

Use the check connection button to verify the configuration before saving it.

Required AWS permissions​

The IAM user needs at least the permissions below. You can narrow the Resource scope to the S3 buckets, Glue databases and tables you intend to access.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables",
"glue:UpdateTable"
],
"Resource": [
"arn:aws:glue:<region>:<account_id>:catalog",
"arn:aws:glue:<region>:<account_id>:database/*",
"arn:aws:glue:<region>:<account_id>:table/*/*"
]
},
{
"Sid": "S3Access",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Resource": ["*"]
},
{
"Sid": "LakeFormationAccess",
"Effect": "Allow",
"Action": ["lakeformation:GetDataAccess"],
"Resource": "*"
}
]
}