Packages
aws
1.0.5
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
AWS clients for Elixir
Current section
Files
Jump to
Current section
Files
lib/aws/generated/sage_maker_feature_store_runtime.ex
# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.
defmodule AWS.SageMakerFeatureStoreRuntime do
@moduledoc """
Contains all data plane API operations and data types for the Amazon SageMaker
Feature
Store.
Use this API to put, delete, and retrieve (get) features from a feature
store.
Use the following operations to configure your `OnlineStore` and
`OfflineStore` features, and to create and manage feature groups:
*
[CreateFeatureGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateFeatureGroup.html)
*
[DeleteFeatureGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteFeatureGroup.html)
*
[DescribeFeatureGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFeatureGroup.html)
*
[ListFeatureGroups](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListFeatureGroups.html)
"""
alias AWS.Client
alias AWS.Request
@typedoc """
## Example:
access_forbidden() :: %{
"Message" => String.t()
}
"""
@type access_forbidden() :: %{String.t() => any()}
@typedoc """
## Example:
batch_get_record_error() :: %{
"ErrorCode" => String.t(),
"ErrorMessage" => String.t(),
"FeatureGroupName" => String.t(),
"RecordIdentifierValueAsString" => String.t()
}
"""
@type batch_get_record_error() :: %{String.t() => any()}
@typedoc """
## Example:
batch_get_record_identifier() :: %{
"FeatureGroupName" => String.t(),
"FeatureNames" => list(String.t()()),
"RecordIdentifiersValueAsString" => list(String.t()())
}
"""
@type batch_get_record_identifier() :: %{String.t() => any()}
@typedoc """
## Example:
batch_get_record_request() :: %{
optional("ExpirationTimeResponse") => list(any()),
required("Identifiers") => list(batch_get_record_identifier()())
}
"""
@type batch_get_record_request() :: %{String.t() => any()}
@typedoc """
## Example:
batch_get_record_response() :: %{
"Errors" => list(batch_get_record_error()()),
"Records" => list(batch_get_record_result_detail()()),
"UnprocessedIdentifiers" => list(batch_get_record_identifier()())
}
"""
@type batch_get_record_response() :: %{String.t() => any()}
@typedoc """
## Example:
batch_get_record_result_detail() :: %{
"ExpiresAt" => String.t(),
"FeatureGroupName" => String.t(),
"Record" => list(feature_value()()),
"RecordIdentifierValueAsString" => String.t()
}
"""
@type batch_get_record_result_detail() :: %{String.t() => any()}
@typedoc """
## Example:
delete_record_request() :: %{
optional("DeletionMode") => list(any()),
optional("TargetStores") => list(list(any())()),
required("EventTime") => String.t(),
required("RecordIdentifierValueAsString") => String.t()
}
"""
@type delete_record_request() :: %{String.t() => any()}
@typedoc """
## Example:
feature_value() :: %{
"FeatureName" => String.t(),
"ValueAsString" => String.t(),
"ValueAsStringList" => list(String.t()())
}
"""
@type feature_value() :: %{String.t() => any()}
@typedoc """
## Example:
get_record_request() :: %{
optional("ExpirationTimeResponse") => list(any()),
optional("FeatureNames") => list(String.t()()),
required("RecordIdentifierValueAsString") => String.t()
}
"""
@type get_record_request() :: %{String.t() => any()}
@typedoc """
## Example:
get_record_response() :: %{
"ExpiresAt" => String.t(),
"Record" => list(feature_value()())
}
"""
@type get_record_response() :: %{String.t() => any()}
@typedoc """
## Example:
internal_failure() :: %{
"Message" => String.t()
}
"""
@type internal_failure() :: %{String.t() => any()}
@typedoc """
## Example:
put_record_request() :: %{
optional("TargetStores") => list(list(any())()),
optional("TtlDuration") => ttl_duration(),
required("Record") => list(feature_value()())
}
"""
@type put_record_request() :: %{String.t() => any()}
@typedoc """
## Example:
resource_not_found() :: %{
"Message" => String.t()
}
"""
@type resource_not_found() :: %{String.t() => any()}
@typedoc """
## Example:
service_unavailable() :: %{
"Message" => String.t()
}
"""
@type service_unavailable() :: %{String.t() => any()}
@typedoc """
## Example:
ttl_duration() :: %{
"Unit" => list(any()),
"Value" => integer()
}
"""
@type ttl_duration() :: %{String.t() => any()}
@typedoc """
## Example:
validation_error() :: %{
"Message" => String.t()
}
"""
@type validation_error() :: %{String.t() => any()}
@type batch_get_record_errors() ::
validation_error() | service_unavailable() | internal_failure() | access_forbidden()
@type delete_record_errors() ::
validation_error() | service_unavailable() | internal_failure() | access_forbidden()
@type get_record_errors() ::
validation_error()
| service_unavailable()
| resource_not_found()
| internal_failure()
| access_forbidden()
@type put_record_errors() ::
validation_error() | service_unavailable() | internal_failure() | access_forbidden()
def metadata do
%{
api_version: "2020-07-01",
content_type: "application/x-amz-json-1.1",
credential_scope: nil,
endpoint_prefix: "featurestore-runtime.sagemaker",
global?: false,
hostname: nil,
protocol: "rest-json",
service_id: "SageMaker FeatureStore Runtime",
signature_version: "v4",
signing_name: "sagemaker",
target_prefix: nil
}
end
@doc """
Retrieves a batch of `Records` from a `FeatureGroup`.
"""
@spec batch_get_record(map(), batch_get_record_request(), list()) ::
{:ok, batch_get_record_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, batch_get_record_errors()}
def batch_get_record(%Client{} = client, input, options \\ []) do
url_path = "/BatchGetRecord"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Deletes a `Record` from a `FeatureGroup` in the
`OnlineStore`.
Feature Store supports both `SoftDelete` and
`HardDelete`. For `SoftDelete` (default), feature columns are set
to `null` and the record is no longer retrievable by `GetRecord` or
`BatchGetRecord`. For `HardDelete`, the complete
`Record` is removed from the `OnlineStore`. In both cases, Feature
Store appends the deleted record marker to the `OfflineStore`. The deleted
record marker is a record with the same `RecordIdentifer` as the original, but
with `is_deleted` value set to `True`, `EventTime` set to
the delete input `EventTime`, and other feature values set to
`null`.
Note that the `EventTime` specified in `DeleteRecord` should be
set later than the `EventTime` of the existing record in the
`OnlineStore` for that `RecordIdentifer`. If it is not, the
deletion does not occur:
*
For `SoftDelete`, the existing (not deleted) record remains in the
`OnlineStore`, though the delete record marker is still written to the
`OfflineStore`.
*
`HardDelete` returns `EventTime`:
```
400
ValidationException
```
to indicate that the delete operation failed. No delete
record marker is written to the `OfflineStore`.
When a record is deleted from the `OnlineStore`, the deleted record marker is
appended to the `OfflineStore`. If you have the Iceberg table format enabled for
your `OfflineStore`, you can remove all history of a record from the
`OfflineStore` using Amazon Athena or Apache Spark. For information on how to
hard delete a record from the `OfflineStore` with the Iceberg table format
enabled, see [Delete records from the offline store](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-delete-records-offline-store.html#feature-store-delete-records-offline-store).
"""
@spec delete_record(map(), String.t(), delete_record_request(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_record_errors()}
def delete_record(%Client{} = client, feature_group_name, input, options \\ []) do
url_path = "/FeatureGroup/#{AWS.Util.encode_uri(feature_group_name)}"
headers = []
custom_headers = []
{query_params, input} =
[
{"DeletionMode", "DeletionMode"},
{"EventTime", "EventTime"},
{"RecordIdentifierValueAsString", "RecordIdentifierValueAsString"},
{"TargetStores", "TargetStores"}
]
|> Request.build_params(input)
meta = metadata()
Request.request_rest(
client,
meta,
:delete,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
@doc """
Use for `OnlineStore` serving from a `FeatureStore`.
Only the
latest records stored in the `OnlineStore` can be retrieved. If no Record with
`RecordIdentifierValue` is found, then an empty result is returned.
"""
@spec get_record(map(), String.t(), String.t() | nil, String.t() | nil, String.t(), list()) ::
{:ok, get_record_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_record_errors()}
def get_record(
%Client{} = client,
feature_group_name,
expiration_time_response \\ nil,
feature_names \\ nil,
record_identifier_value_as_string,
options \\ []
) do
url_path = "/FeatureGroup/#{AWS.Util.encode_uri(feature_group_name)}"
headers = []
query_params = []
query_params =
if !is_nil(record_identifier_value_as_string) do
[{"RecordIdentifierValueAsString", record_identifier_value_as_string} | query_params]
else
query_params
end
query_params =
if !is_nil(feature_names) do
[{"FeatureName", feature_names} | query_params]
else
query_params
end
query_params =
if !is_nil(expiration_time_response) do
[{"ExpirationTimeResponse", expiration_time_response} | query_params]
else
query_params
end
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
The `PutRecord` API is used to ingest a list of `Records` into
your feature group.
If a new record’s `EventTime` is greater, the new record is written to both
the `OnlineStore` and `OfflineStore`. Otherwise, the record is a
historic record and it is written only to the `OfflineStore`.
You can specify the ingestion to be applied to the `OnlineStore`,
`OfflineStore`, or both by using the `TargetStores` request
parameter.
You can set the ingested record to expire at a given time to live (TTL) duration
after
the record’s event time, `ExpiresAt` = `EventTime` +
`TtlDuration`, by specifying the `TtlDuration` parameter. A record
level `TtlDuration` is set when specifying the `TtlDuration`
parameter using the `PutRecord` API call. If the input `TtlDuration`
is `null` or unspecified, `TtlDuration` is set to the default feature
group level `TtlDuration`. A record level `TtlDuration` supersedes
the group level `TtlDuration`.
"""
@spec put_record(map(), String.t(), put_record_request(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, put_record_errors()}
def put_record(%Client{} = client, feature_group_name, input, options \\ []) do
url_path = "/FeatureGroup/#{AWS.Util.encode_uri(feature_group_name)}"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:put,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
200
)
end
end