Area: Ingestion
Sub-Area: AWS Glue
Issue
Ownership information from AWS Glue tables is not being ingested into DataHub, even though the documentation states that ownership extraction is enabled by default and the `extract_ownership` flag has not been explicitly disabled in the ingestion recipe. Users expect the owner information from Glue to automatically appear on DataHub assets.
You Might Be Asking:
- Why isn't my Glue table ownership showing up in DataHub?
- Where should I set the owner property in AWS Glue?
- Does the owner need to exist in DataHub before ingestion?
- What property names does DataHub recognize for ownership?
Solution
DataHub requires ownership to be set in a specific field in AWS Glue:
Correct Property Location:
Ownership must be set in the Glue table's top-level Owner property, not in custom properties or the Parameters map.
Setting Ownership in AWS Glue:
Using boto3 (Python):
import boto3
glue = boto3.client('glue')
# Update table with owner property
glue.update_table(
DatabaseName='your_database',
TableInput={
'Name': 'your_table',
'Owner': 'user@company.com', # Must match DataHub user
# ... other table properties
}
)
Using AWS Console: 1. Navigate to AWS Glue Console 2. Select your database and table 3. Click "Edit table" 4. Set the "Owner" field (not in table properties or parameters) 5. Save changes
Using Terraform:
resource "aws_glue_catalog_table" "example" {
name = "my_table"
database_name = "my_database"
owner = "user@company.com" # Top-level owner property
# ... other configuration
}
Important Requirements:
- The owner value must match a DataHub user or group (by URN, email, or username)
- The user/group must already exist in DataHub
- Custom properties like table_owner in the Parameters map are NOT recognized
- Ownership is extracted by default; no special flags needed in the recipe
Verification: Check your Glue table configuration:
import boto3
glue = boto3.client('glue')
response = glue.get_table(
DatabaseName='your_database',
Name='your_table'
)
# Check for top-level Owner property
print(response['Table'].get('Owner')) # Should print the owner
print(response['Table'].get('Parameters', {}).get('table_owner')) # This won't work
Additional Notes
- Re-run ingestion after updating the Owner property in Glue
- Ensure the DataHub user exists before ingestion (via UI, SSO, or SCIM)
- Group ownership is also supported using group email or URN
- The
extract_ownershipflag in the recipe defaults totrue
Related Documentation
Related Tickets
- 5185
Tags:
aws-glue, ownership, ingestion, metadata, user-mapping, glue-catalog, table-properties