Open
Conversation
- Add LakeFormationConfig class to configure Lake Formation governance on offline stores - Implement FeatureGroup subclass with Lake Formation integration capabilities - Add helper methods for S3 URI/ARN conversion and Lake Formation role management - Add S3 deny policy generation for Lake Formation access control - Implement Lake Formation resource registration and S3 bucket policy setup - Add integration tests for Lake Formation feature store workflows - Add unit tests for Lake Formation configuration and policy generation - Update feature_store module exports to include FeatureGroup and LakeFormationConfig - Update API documentation to include Feature Store section in sagemaker_mlops.rst - Enable fine-grained access control for feature store offline stores using AWS Lake Formation
Replace 10 bare print() calls with a single logger.info() call for the S3 deny policy output in enable_lake_formation(). This makes the policy display consistent with the rest of the LF workflow which uses logger. Update 12 tests to mock the logger instead of builtins.print. --- X-AI-Prompt: replace print with logger.info for s3 bucket policy display in enable_lake_formation X-AI-Tool: kiro-cli
Rename the mlops FeatureGroup class to FeatureGroupManager to distinguish it from the core FeatureGroup base class. Update all references in unit and integration lake formation tests. Fix missing comma in __init__.py __all__ list. --- X-AI-Prompt: rename FeatureGroup to FeatureGroupManager and update lakeformation tests X-AI-Tool: kiro-cli
…ate, update, get functions
…ture Group with new method _validate_table_ownership, error messages, and new testing
the transaction call to match .venv and tests to mtach the change, removed problem properties from the allow list, amd added dependencies to pyproject. Prior commits on this branch were authored with Kiro CLI assistance but were not tagged at the time. --- Previous commits X-AI-Prompt: Document retroactive GenAI usage X-AI-Tool: Kiro CLI (sisyphus) --- This commit X-AI-Prompt: Create and debug an example notebook for the iceberg properties feature X-AI-Tool: Kiro CLI (sisyphus)
nargokul
previously approved these changes
Apr 3, 2026
exceptions. New helped method to get if a FG is lake formation governed. Also added testing for these features. --- X-AI-Prompt: Add error checking in feature_group_manager.py to differentiate whether a Glue permissions error (AccessDeniedException) during iceberg properties operations is related to Lake Formation governance or regular IAM. Check the feature group's describe response for LakeFormationConfig before the call, and surface a targeted error message accordingly. X-AI-Tool: Kiro CLI sisyphus
api structure. Changed testing to match. --- X-AI-Prompt: Refactor Lake Formation error handling in FeatureGroupManager to remove _has_lake_formation_config() which won't work because our API has no way to record this and replace separate LF/IAM error messages with a single combined _ICEBERG_PERMISSIONS_ERROR_MESSAGE constant covering both governance models (SELECT/DESCRIBE/ALTER for LF, glue:GetTable/glue:UpdateTable for IAM). Apply to both _get_iceberg_properties and _update_iceberg_properties, preserving the more expansive logger.error() calls in the update path. Update tests accordingly. X-AI-Tool: Kiro CLI sisyphus
Added better error messaging. Finalized example notebook. Updated corresponding tests. --- X-AI-Prompt: Refactor the allos list naming, and update testing to ensure it continues to work X-AI-Tool: Kiro CLI Sisyphus
nargokul
approved these changes
Apr 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of changes:
NOTE:
Based off of BassemHalim:feature-store-lakeformation @ commit d21ca67ab723cf5fcef9e6e1090efcd643e1ded3Was edited to remove all lakeformation code.
Design
We will not be making any changes to the sagemaker core package as this code is autogenerated based off Feature Store APIs. This means it will be overwritten if we are not careful with maintenance. We will be making all our changes in the mlops package instead. In here we will be making a new class FeatureGroupManager that will extend the FeatureGroup class from the sagemaker core package. In the extended class we will create a new input type called IcebergProperties and overload 3 core functions and create
23 new helper functions.IcebergProperties type
This new type takes in a wrapper for a Dict[str, str] that also includes some validation of the keys to make sure they are a part of our validated list.
Overloaded functions
Helper functions
EDIT: As of ffa9c09 there is a new helper function to validate a glue catalog belongs to a specific Feature Group.
Security considerations
Usage
Create FG with Iceberg Properties
Update existing FG with Iceberg Properties
Get a FG's icebergProperties