Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions docs/reference/alpha-on-demand-feature-view.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@

**Warning**: This is an _experimental_ feature. It's intended for early testing and feedback, and could change without warnings in future releases.

{% hint style="info" %}
To enable this feature, run **`feast alpha enable on_demand_transforms`**
{% endhint %}

## Overview

On demand feature views allows data scientists to use existing features and request time data (features only available at request time) to transform and create new features. Users define python transformation logic which is executed in both historical retrieval and online retrieval paths.
Expand Down
4 changes: 4 additions & 0 deletions docs/reference/feature-servers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ Feast users can choose to retrieve features from a feature server, as opposed to
{% content-ref url="go-feature-server.md" %}
[go-feature-server.md](go-feature-server.md)
{% endcontent-ref %}

{% content-ref url="alpha-aws-lambda-feature-server.md" %}
[alpha-aws-lambda-feature-server.md](alpha-aws-lambda-feature-server.md)
{% endcontent-ref %}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@

**Warning**: This is an _experimental_ feature. It's intended for early testing and feedback, and could change without warnings in future releases.

{% hint style="info" %}
To enable this feature, run **`feast alpha enable aws_lambda_feature_server`**
{% endhint %}

## Overview

The AWS Lambda feature server is an HTTP endpoint that serves features with JSON I/O, deployed as a Docker image through AWS Lambda and AWS API Gateway. This enables users to get features from Feast using any programming language that can make HTTP requests. A [local feature server](python-feature-server.md) is also available. A remote feature server on GCP Cloud Run is currently being developed.
Expand All @@ -27,9 +23,6 @@ offline_store:
database: feast
s3_staging_location: s3://feast/redshift/tests/staging_location
iam_role: arn:aws:iam::{aws_account}:role/redshift_s3_access_role
flags:
alpha_features: true
aws_lambda_feature_server: true
feature_server:
enabled: True
execution_role_name: arn:aws:iam::{aws_account}:role/lambda_execution_role
Expand All @@ -41,12 +34,12 @@ If enabled, the feature server will be deployed during `feast apply`. After it i

Feast requires the following permissions in order to deploy and teardown AWS Lambda feature server:

| Permissions | Resources |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>lambda:CreateFunction</p><p>lambda:GetFunction</p><p>lambda:DeleteFunction</p><p>lambda:AddPermission</p><p>lambda:UpdateFunctionConfiguration</p> | arn:aws:lambda:\<region>:\<account\_id>:function:feast-\* |
| <p>ecr:CreateRepository</p><p>ecr:DescribeRepositories</p><p>ecr:DeleteRepository</p><p>ecr:PutImage</p><p>ecr:DescribeImages</p><p>ecr:BatchDeleteImage</p><p>ecr:CompleteLayerUpload</p><p>ecr:UploadLayerPart</p><p>ecr:InitiateLayerUpload</p><p>ecr:BatchCheckLayerAvailability</p><p>ecr:GetDownloadUrlForLayer</p><p>ecr:GetRepositoryPolicy</p><p>ecr:SetRepositoryPolicy</p><p>ecr:GetAuthorizationToken</p> | \* |
| iam:PassRole | arn:aws:iam::\<account\_id>:role/ |
| apigateway:\* | <p>arn:aws:apigateway:<em>::/apis/</em>/routes/<em>/routeresponses</em></p><p><em>arn:aws:apigateway:</em>::/apis/<em>/routes/</em>/routeresponses/</p><p><em>arn:aws:apigateway:</em>::/apis/<em>/routes/</em></p><p>arn:aws:apigateway:<em>::/apis/</em>/routes</p><p>arn:aws:apigateway:<em>::/apis/</em>/integrations</p><p>arn:aws:apigateway:<em>::/apis/</em>/stages/<em>/routesettings/</em></p><p>arn:aws:apigateway:<em>::/apis/</em></p><p>arn:aws:apigateway:*::/apis</p> |
| Permissions | Resources |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <p>lambda:CreateFunction</p><p>lambda:GetFunction</p><p>lambda:DeleteFunction</p><p>lambda:AddPermission</p><p>lambda:UpdateFunctionConfiguration</p> | arn:aws:lambda:\<region>:\<account_id>:function:feast-\* |
| <p>ecr:CreateRepository</p><p>ecr:DescribeRepositories</p><p>ecr:DeleteRepository</p><p>ecr:PutImage</p><p>ecr:DescribeImages</p><p>ecr:BatchDeleteImage</p><p>ecr:CompleteLayerUpload</p><p>ecr:UploadLayerPart</p><p>ecr:InitiateLayerUpload</p><p>ecr:BatchCheckLayerAvailability</p><p>ecr:GetDownloadUrlForLayer</p><p>ecr:GetRepositoryPolicy</p><p>ecr:SetRepositoryPolicy</p><p>ecr:GetAuthorizationToken</p> | \* |
| <p>iam:PassRole</p> | arn:aws:iam::\<account_id>:role/<lambda-execution-role-name> |
| <p>apigateway:*</p> | <p>arn:aws:apigateway:*::/apis/*/routes/*/routeresponses</p><p>arn:aws:apigateway:*::/apis/*/routes/*/routeresponses/*</p><p>arn:aws:apigateway:*::/apis/*/routes/*</p><p>arn:aws:apigateway:*::/apis/*/routes</p><p>arn:aws:apigateway:*::/apis/*/integrations</p><p>arn:aws:apigateway:*::/apis/*/stages/*/routesettings/*</p><p>arn:aws:apigateway:*::/apis/*</p><p>arn:aws:apigateway:*::/apis</p> |

The following inline policy can be used to grant Feast the necessary permissions:

Expand Down
3 changes: 0 additions & 3 deletions examples/java-demo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@ For this tutorial, we setup Feast with Redis, using the Feast CLI to register an
connection_string: localhost:6379,password=[YOUR PASSWORD]
offline_store:
type: file
flags:
alpha_features: true
on_demand_transforms: true
```
4. Run `feast apply` to apply your local features to the remote registry
5. Materialize features to the online store:
Expand Down
3 changes: 0 additions & 3 deletions examples/java-demo/feature_repo/feature_store.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,3 @@ online_store:
connection_string: localhost:6379,password=[YOUR PASSWORD]
offline_store:
type: file
flags:
alpha_features: true
on_demand_transforms: true
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,4 @@ registry:
path: {{ .Values.global.registry.path }}
cache_ttl_seconds: {{ .Values.global.registry.cache_ttl_seconds }}
provider: local
project: {{ .Values.global.project }}
flags:
on_demand_transforms: true
alpha_features: true
project: {{ .Values.global.project }}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,3 @@ online_store:
type: redis
connection_string: "redis:6379,password=testpw"
offline_store: {}
flags:
alpha_features: true
on_demand_transforms: true
8 changes: 0 additions & 8 deletions sdk/python/docs/source/feast.rst
Original file line number Diff line number Diff line change
Expand Up @@ -169,14 +169,6 @@ feast.field module
:undoc-members:
:show-inheritance:

feast.flags module
------------------

.. automodule:: feast.flags
:members:
:undoc-members:
:show-inheritance:

feast.flags\_helper module
--------------------------

Expand Down
109 changes: 1 addition & 108 deletions sdk/python/feast/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from dateutil import parser
from pygments import formatters, highlight, lexers

from feast import flags, flags_helper, utils
from feast import utils
from feast.constants import DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT
from feast.errors import FeastObjectNotFoundException, FeastProviderLoginError
from feast.feature_store import FeatureStore
Expand Down Expand Up @@ -691,113 +691,6 @@ def serve_transformations_command(ctx: click.Context, port: int):
store.serve_transformations(port)


@cli.group(name="alpha")
def alpha_cmd():
"""
Access alpha features
"""
pass


@alpha_cmd.command("list")
@click.pass_context
def list_alpha_features(ctx: click.Context):
"""
Lists all alpha features
"""
repo = ctx.obj["CHDIR"]
cli_check_repo(repo)
repo_path = str(repo)
store = FeatureStore(repo_path=repo_path)

flags_to_show = flags.FLAG_NAMES.copy()
flags_to_show.remove(flags.FLAG_ALPHA_FEATURES_NAME)
print("Alpha features:")
for flag in flags_to_show:
enabled_string = (
"enabled"
if flags_helper.feature_flag_enabled(store.config, flag)
else "disabled"
)
print(f"{flag}: {enabled_string}")


@alpha_cmd.command("enable-all")
@click.pass_context
def enable_alpha_features(ctx: click.Context):
"""
Enables all alpha features
"""
repo = ctx.obj["CHDIR"]
cli_check_repo(repo)
repo_path = str(repo)
store = FeatureStore(repo_path=repo_path)

if store.config.flags is None:
store.config.flags = {}
for flag_name in flags.FLAG_NAMES:
store.config.flags[flag_name] = True
store.config.write_to_path(Path(repo_path))


@alpha_cmd.command("enable")
@click.argument("name", type=click.STRING)
@click.pass_context
def enable_alpha_feature(ctx: click.Context, name: str):
"""
Enables an alpha feature
"""
if name not in flags.FLAG_NAMES:
raise ValueError(f"Flag name, {name}, not valid.")

repo = ctx.obj["CHDIR"]
cli_check_repo(repo)
repo_path = str(repo)
store = FeatureStore(repo_path=repo_path)

if store.config.flags is None:
store.config.flags = {}
store.config.flags[flags.FLAG_ALPHA_FEATURES_NAME] = True
store.config.flags[name] = True
store.config.write_to_path(Path(repo_path))


@alpha_cmd.command("disable")
@click.argument("name", type=click.STRING)
@click.pass_context
def disable_alpha_feature(ctx: click.Context, name: str):
"""
Disables an alpha feature
"""
if name not in flags.FLAG_NAMES:
raise ValueError(f"Flag name, {name}, not valid.")

repo = ctx.obj["CHDIR"]
cli_check_repo(repo)
repo_path = str(repo)
store = FeatureStore(repo_path=repo_path)

if store.config.flags is None or name not in store.config.flags:
return
store.config.flags[name] = False
store.config.write_to_path(Path(repo_path))


@alpha_cmd.command("disable-all")
@click.pass_context
def disable_alpha_features(ctx: click.Context):
"""
Disables all alpha features
"""
repo = ctx.obj["CHDIR"]
cli_check_repo(repo)
repo_path = str(repo)
store = FeatureStore(repo_path=repo_path)

store.config.flags = None
store.config.write_to_path(Path(repo_path))


@cli.command("validate")
@click.option(
"--feature-service",
Expand Down
8 changes: 0 additions & 8 deletions sdk/python/feast/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -319,14 +319,6 @@ def __init__(self, feature_view_name: str):
)


class ExperimentalFeatureNotEnabled(Exception):
def __init__(self, feature_flag_name: str):
super().__init__(
f"You are attempting to use an experimental feature that is not enabled. Please run "
f"`feast alpha enable {feature_flag_name}` "
)


class RepoConfigPathDoesNotExist(Exception):
def __init__(self):
super().__init__("The repo_path attribute does not exist for the repo_config.")
Expand Down
Loading