def test_online_store_config(): config = OnlineStoreConfig(enable_online_store=True) assert ordered(config.to_dict()) == ordered({"EnableOnlineStore": True}) config_with_kms = OnlineStoreConfig( enable_online_store=True, online_store_security_config=OnlineStoreSecurityConfig( kms_key_id="kms"), ) assert ordered(config_with_kms.to_dict()) == ordered({ "EnableOnlineStore": True, "OnlineStoreSecurityConfig": { "KmsKeyId": "kms", }, })
def create( self, s3_uri: Union[str, bool], record_identifier_name: str, event_time_feature_name: str, role_arn: str, online_store_kms_key_id: str = None, enable_online_store: bool = False, offline_store_kms_key_id: str = None, disable_glue_table_creation: bool = False, data_catalog_config: DataCatalogConfig = None, description: str = None, tags: List[Dict[str, str]] = None, ) -> Dict[str, Any]: """Create a SageMaker FeatureStore FeatureGroup. Args: s3_uri (Union[str, bool]): S3 URI of the offline store, set to ``False`` to disable offline store. record_identifier_name (str): name of the record identifier feature. event_time_feature_name (str): name of the event time feature. role_arn (str): ARN of the role used to call CreateFeatureGroup. online_store_kms_key_id (str): KMS key id for online store. enable_online_store (bool): whether to enable online store or not. offline_store_kms_key_id (str): KMS key id for offline store. If a KMS encryption key is not specified, SageMaker encrypts all data at rest using the default AWS KMS key. By defining your bucket-level key for SSE, you can reduce the cost of AWS KMS requests. For more information, see `Bucket Key <https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html>`_ in the Amazon S3 User Guide. disable_glue_table_creation (bool): whether to turn off Glue table creation no not. data_catalog_config (DataCatalogConfig): configuration for Metadata store. description (str): description of the FeatureGroup. tags (List[Dict[str, str]]): list of tags for labeling a FeatureGroup. Returns: Response dict from service. """ create_feature_store_args = dict( feature_group_name=self.name, record_identifier_name=record_identifier_name, event_time_feature_name=event_time_feature_name, feature_definitions=[ feature_definition.to_dict() for feature_definition in self.feature_definitions ], role_arn=role_arn, description=description, tags=tags, ) # online store configuration if enable_online_store: online_store_config = OnlineStoreConfig( enable_online_store=enable_online_store) if online_store_kms_key_id is not None: online_store_config.online_store_security_config = OnlineStoreSecurityConfig( kms_key_id=online_store_kms_key_id) create_feature_store_args.update( {"online_store_config": online_store_config.to_dict()}) # offline store configuration if s3_uri: s3_storage_config = S3StorageConfig(s3_uri=s3_uri) if offline_store_kms_key_id: s3_storage_config.kms_key_id = offline_store_kms_key_id offline_store_config = OfflineStoreConfig( s3_storage_config=s3_storage_config, disable_glue_table_creation=disable_glue_table_creation, data_catalog_config=data_catalog_config, ) create_feature_store_args.update( {"offline_store_config": offline_store_config.to_dict()}) return self.sagemaker_session.create_feature_group( **create_feature_store_args)
def create( self, s3_uri: Union[str, bool], record_identifier_name: str, event_time_feature_name: str, role_arn: str, online_store_kms_key_id: str = None, enable_online_store: bool = False, offline_store_kms_key_id: str = None, disable_glue_table_creation: bool = False, data_catalog_config: DataCatalogConfig = None, description: str = None, tags: List[Dict[str, str]] = None, ) -> Dict[str, Any]: """Create a SageMaker FeatureStore FeatureGroup. Args: s3_uri (Union[str, bool]): S3 URI of the offline store, set to ``False`` to disable offline store. record_identifier_name (str): name of the record identifier feature. event_time_feature_name (str): name of the event time feature. role_arn (str): ARN of the role used to call CreateFeatureGroup. online_store_kms_key_id (str): KMS key id for online store. enable_online_store (bool): whether to enable online store or not. offline_store_kms_key_id (str): KMS key id for offline store. disable_glue_table_creation (bool): whether to turn off Glue table creation no not. data_catalog_config (DataCatalogConfig): configuration for Metadata store. description (str): description of the FeatureGroup. tags (List[Dict[str, str]]): list of tags for labeling a FeatureGroup. Returns: Response dict from service. """ create_feature_store_args = dict( feature_group_name=self.name, record_identifier_name=record_identifier_name, event_time_feature_name=event_time_feature_name, feature_definitions=[ feature_definition.to_dict() for feature_definition in self.feature_definitions ], role_arn=role_arn, description=description, tags=tags, ) # online store configuration if enable_online_store: online_store_config = OnlineStoreConfig( enable_online_store=enable_online_store) if online_store_kms_key_id is not None: online_store_config.online_store_security_config = OnlineStoreSecurityConfig( kms_key_id=online_store_kms_key_id) create_feature_store_args.update( {"online_store_config": online_store_config.to_dict()}) # offline store configuration if s3_uri: s3_storage_config = S3StorageConfig(s3_uri=s3_uri) if offline_store_kms_key_id: s3_storage_config.kms_key_id = offline_store_kms_key_id offline_store_config = OfflineStoreConfig( s3_storage_config=s3_storage_config, disable_glue_table_creation=disable_glue_table_creation, data_catalog_config=data_catalog_config, ) create_feature_store_args.update( {"offline_store_config": offline_store_config.to_dict()}) return self.sagemaker_session.create_feature_group( **create_feature_store_args)
def test_online_store_security_config(): config = OnlineStoreSecurityConfig(kms_key_id="kms") assert ordered(config.to_dict()) == ordered({"KmsKeyId": "kms"})