From 60c5c6a4f536165949312f0431a17cf0859d1ca5 Mon Sep 17 00:00:00 2001
From: awstools
Date: Tue, 27 Jun 2023 18:25:31 +0000
Subject: [PATCH] feat(client-sagemaker-featurestore-runtime): Introducing TTL
for online store records for feature groups.
---
.../src/commands/BatchGetRecordCommand.ts | 2 +
.../src/commands/DeleteRecordCommand.ts | 10 +-
.../src/commands/GetRecordCommand.ts | 2 +
.../src/commands/PutRecordCommand.ts | 4 +
.../src/models/models_0.ts | 84 +++++++
.../src/protocols/Aws_restJson1.ts | 7 +
.../sagemaker-featurestore-runtime.json | 206 ++++++++++++++----
7 files changed, 265 insertions(+), 50 deletions(-)
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts
index 36a437cc742c..72673b284930 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts
@@ -59,6 +59,7 @@ export interface BatchGetRecordCommandOutput extends BatchGetRecordResponse, __M
* ],
* },
* ],
+ * ExpirationTimeResponse: "Enabled" || "Disabled",
* };
* const command = new BatchGetRecordCommand(input);
* const response = await client.send(command);
@@ -73,6 +74,7 @@ export interface BatchGetRecordCommandOutput extends BatchGetRecordResponse, __M
* // ValueAsString: "STRING_VALUE", // required
* // },
* // ],
+ * // ExpiresAt: "STRING_VALUE",
* // },
* // ],
* // Errors: [ // BatchGetRecordErrors // required
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts
index da0941c48e6f..06cdabfff03a 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts
@@ -41,10 +41,10 @@ export interface DeleteRecordCommandOutput extends __MetadataBearer {}
/**
* @public
* Deletes a Record
from a FeatureGroup
in the
- * OnlineStore
. Feature Store supports both SOFT_DELETE
and
- * HARD_DELETE
. For SOFT_DELETE
(default), feature columns are
+ * 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 HARD_DELETE
, the complete
+ * 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
with feature
* values set to null
, is_deleted
value set to True
,
@@ -55,13 +55,13 @@ export interface DeleteRecordCommandOutput extends __MetadataBearer {}
* deletion does not occur:
*
* -
- *
For SOFT_DELETE
, the existing (undeleted) record remains in the
+ *
For SoftDelete
, the existing (undeleted) record remains in the
* OnlineStore
, though the delete record marker is still written to the
* OfflineStore
.
*
* -
*
- * HARD_DELETE
returns EventTime
: 400
+ * HardDelete
returns EventTime
: 400
* ValidationException
to indicate that the delete operation failed. No delete
* record marker is written to the OfflineStore
.
*
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts
index 133b7062eed1..fb3cffb37288 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts
@@ -55,6 +55,7 @@ export interface GetRecordCommandOutput extends GetRecordResponse, __MetadataBea
* FeatureNames: [ // FeatureNames
* "STRING_VALUE",
* ],
+ * ExpirationTimeResponse: "Enabled" || "Disabled",
* };
* const command = new GetRecordCommand(input);
* const response = await client.send(command);
@@ -65,6 +66,7 @@ export interface GetRecordCommandOutput extends GetRecordResponse, __MetadataBea
* // ValueAsString: "STRING_VALUE", // required
* // },
* // ],
+ * // ExpiresAt: "STRING_VALUE",
* // };
*
* ```
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts
index cb85d4904e40..e94fb4e1b276 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts
@@ -62,6 +62,10 @@ export interface PutRecordCommandOutput extends __MetadataBearer {}
* TargetStores: [ // TargetStores
* "OnlineStore" || "OfflineStore",
* ],
+ * TtlDuration: { // TtlDuration
+ * Unit: "Seconds" || "Minutes" || "Hours" || "Days" || "Weeks", // required
+ * Value: Number("int"), // required
+ * },
* };
* const command = new PutRecordCommand(input);
* const response = await client.send(command);
diff --git a/clients/client-sagemaker-featurestore-runtime/src/models/models_0.ts b/clients/client-sagemaker-featurestore-runtime/src/models/models_0.ts
index b0d4ef5a09bf..0ce240aaa59f 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/models/models_0.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/models/models_0.ts
@@ -25,6 +25,20 @@ export class AccessForbidden extends __BaseException {
}
}
+/**
+ * @public
+ * @enum
+ */
+export const ExpirationTimeResponse = {
+ DISABLED: "Disabled",
+ ENABLED: "Enabled",
+} as const;
+
+/**
+ * @public
+ */
+export type ExpirationTimeResponse = (typeof ExpirationTimeResponse)[keyof typeof ExpirationTimeResponse];
+
/**
* @public
* The identifier that identifies the batch of Records you are retrieving in a
@@ -58,6 +72,14 @@ export interface BatchGetRecordRequest {
* retrieved in batch.
*/
Identifiers: BatchGetRecordIdentifier[] | undefined;
+
+ /**
+ * Parameter to request ExpiresAt
in response. If Enabled
,
+ * BatchGetRecord
will return the value of ExpiresAt
, if it is
+ * not null. If Disabled
and null, BatchGetRecord
will return
+ * null.
+ */
+ ExpirationTimeResponse?: ExpirationTimeResponse | string;
}
/**
@@ -126,6 +148,11 @@ export interface BatchGetRecordResultDetail {
* The Record
retrieved.
*/
Record: FeatureValue[] | undefined;
+
+ /**
+ * The ExpiresAt
ISO string of the requested record.
+ */
+ ExpiresAt?: string;
}
/**
@@ -299,6 +326,14 @@ export interface GetRecordRequest {
* the Features are returned.
*/
FeatureNames?: string[];
+
+ /**
+ * Parameter to request ExpiresAt
in response. If Enabled
,
+ * BatchGetRecord
will return the value of ExpiresAt
, if it is
+ * not null. If Disabled
and null, BatchGetRecord
will return
+ * null.
+ */
+ ExpirationTimeResponse?: ExpirationTimeResponse | string;
}
/**
@@ -309,6 +344,11 @@ export interface GetRecordResponse {
* The record you requested. A list of FeatureValues
.
*/
Record?: FeatureValue[];
+
+ /**
+ * The ExpiresAt
ISO string of the requested record.
+ */
+ ExpiresAt?: string;
}
/**
@@ -333,6 +373,43 @@ export class ResourceNotFound extends __BaseException {
}
}
+/**
+ * @public
+ * @enum
+ */
+export const TtlDurationUnit = {
+ DAYS: "Days",
+ HOURS: "Hours",
+ MINUTES: "Minutes",
+ SECONDS: "Seconds",
+ WEEKS: "Weeks",
+} as const;
+
+/**
+ * @public
+ */
+export type TtlDurationUnit = (typeof TtlDurationUnit)[keyof typeof TtlDurationUnit];
+
+/**
+ * @public
+ * Time to live duration, where the record is hard deleted after the expiration time is
+ * reached; ExpiresAt
= EventTime
+ TtlDuration
. For
+ * information on HardDelete, see the DeleteRecord API in the Amazon SageMaker API Reference guide.
+ */
+export interface TtlDuration {
+ /**
+ *
+ * TtlDuration
time unit.
+ */
+ Unit: TtlDurationUnit | string | undefined;
+
+ /**
+ *
+ * TtlDuration
time value.
+ */
+ Value: number | undefined;
+}
+
/**
* @public
*/
@@ -364,4 +441,11 @@ export interface PutRecordRequest {
* record to all of the stores that you're using for the FeatureGroup
.
*/
TargetStores?: (TargetStore | string)[];
+
+ /**
+ * Time to live duration, where the record is hard deleted after the expiration time is
+ * reached; ExpiresAt
= EventTime
+ TtlDuration
. For
+ * information on HardDelete, see the DeleteRecord API in the Amazon SageMaker API Reference guide.
+ */
+ TtlDuration?: TtlDuration;
}
diff --git a/clients/client-sagemaker-featurestore-runtime/src/protocols/Aws_restJson1.ts b/clients/client-sagemaker-featurestore-runtime/src/protocols/Aws_restJson1.ts
index 09282195bcfb..bb37dfc866a0 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/protocols/Aws_restJson1.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/protocols/Aws_restJson1.ts
@@ -28,6 +28,7 @@ import {
ResourceNotFound,
ServiceUnavailable,
TargetStore,
+ TtlDuration,
ValidationError,
} from "../models/models_0";
import { SageMakerFeatureStoreRuntimeServiceException as __BaseException } from "../models/SageMakerFeatureStoreRuntimeServiceException";
@@ -47,6 +48,7 @@ export const se_BatchGetRecordCommand = async (
let body: any;
body = JSON.stringify(
take(input, {
+ ExpirationTimeResponse: [],
Identifiers: (_) => _json(_),
})
);
@@ -133,6 +135,7 @@ export const se_GetRecordCommand = async (
() => input.FeatureNames !== void 0,
() => (input.FeatureNames! || []).map((_entry) => _entry as any),
],
+ ExpirationTimeResponse: [, input.ExpirationTimeResponse!],
});
let body: any;
return new __HttpRequest({
@@ -173,6 +176,7 @@ export const se_PutRecordCommand = async (
take(input, {
Record: (_) => _json(_),
TargetStores: (_) => _json(_),
+ TtlDuration: (_) => _json(_),
})
);
return new __HttpRequest({
@@ -311,6 +315,7 @@ export const de_GetRecordCommand = async (
});
const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body");
const doc = take(data, {
+ ExpiresAt: __expectString,
Record: _json,
});
Object.assign(contents, doc);
@@ -507,6 +512,8 @@ const de_ValidationErrorRes = async (parsedOutput: any, context: __SerdeContext)
// se_TargetStores omitted.
+// se_TtlDuration omitted.
+
// de_BatchGetRecordError omitted.
// de_BatchGetRecordErrors omitted.
diff --git a/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json b/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json
index d7133f5d1829..aaee3bc4d621 100644
--- a/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json
+++ b/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json
@@ -433,9 +433,9 @@
}
},
"params": {
- "UseDualStack": true,
"Region": "us-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": true
}
},
{
@@ -446,9 +446,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": false
}
},
{
@@ -459,9 +459,9 @@
}
},
"params": {
- "UseDualStack": true,
"Region": "us-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": true
}
},
{
@@ -472,9 +472,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": false
}
},
{
@@ -485,9 +485,9 @@
}
},
"params": {
- "UseDualStack": true,
"Region": "cn-north-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": true
}
},
{
@@ -498,9 +498,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "cn-north-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": false
}
},
{
@@ -511,9 +511,9 @@
}
},
"params": {
- "UseDualStack": true,
"Region": "cn-north-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": true
}
},
{
@@ -524,9 +524,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "cn-north-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": false
}
},
{
@@ -537,9 +537,9 @@
}
},
"params": {
- "UseDualStack": true,
"Region": "us-gov-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": true
}
},
{
@@ -550,9 +550,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-gov-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": false
}
},
{
@@ -563,9 +563,9 @@
}
},
"params": {
- "UseDualStack": true,
"Region": "us-gov-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": true
}
},
{
@@ -576,9 +576,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-gov-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": false
}
},
{
@@ -587,9 +587,9 @@
"error": "FIPS and DualStack are enabled, but this partition does not support one or both"
},
"params": {
- "UseDualStack": true,
"Region": "us-iso-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": true
}
},
{
@@ -600,9 +600,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-iso-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": false
}
},
{
@@ -611,9 +611,9 @@
"error": "DualStack is enabled but this partition does not support DualStack"
},
"params": {
- "UseDualStack": true,
"Region": "us-iso-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": true
}
},
{
@@ -624,9 +624,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-iso-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": false
}
},
{
@@ -635,9 +635,9 @@
"error": "FIPS and DualStack are enabled, but this partition does not support one or both"
},
"params": {
- "UseDualStack": true,
"Region": "us-isob-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": true
}
},
{
@@ -648,9 +648,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-isob-east-1",
- "UseFIPS": true
+ "UseFIPS": true,
+ "UseDualStack": false
}
},
{
@@ -659,9 +659,9 @@
"error": "DualStack is enabled but this partition does not support DualStack"
},
"params": {
- "UseDualStack": true,
"Region": "us-isob-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": true
}
},
{
@@ -672,9 +672,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-isob-east-1",
- "UseFIPS": false
+ "UseFIPS": false,
+ "UseDualStack": false
}
},
{
@@ -685,9 +685,9 @@
}
},
"params": {
- "UseDualStack": false,
"Region": "us-east-1",
"UseFIPS": false,
+ "UseDualStack": false,
"Endpoint": "https://example.com"
}
},
@@ -699,8 +699,8 @@
}
},
"params": {
- "UseDualStack": false,
"UseFIPS": false,
+ "UseDualStack": false,
"Endpoint": "https://example.com"
}
},
@@ -710,9 +710,9 @@
"error": "Invalid Configuration: FIPS and custom endpoint are not supported"
},
"params": {
- "UseDualStack": false,
"Region": "us-east-1",
"UseFIPS": true,
+ "UseDualStack": false,
"Endpoint": "https://example.com"
}
},
@@ -722,9 +722,9 @@
"error": "Invalid Configuration: Dualstack and custom endpoint are not supported"
},
"params": {
- "UseDualStack": true,
"Region": "us-east-1",
"UseFIPS": false,
+ "UseDualStack": true,
"Endpoint": "https://example.com"
}
},
@@ -866,6 +866,12 @@
"smithy.api#documentation": "A list of FeatureGroup
names, with their corresponding\n RecordIdentifier
value, and Feature name that have been requested to be\n retrieved in batch.
",
"smithy.api#required": {}
}
+ },
+ "ExpirationTimeResponse": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#ExpirationTimeResponse",
+ "traits": {
+ "smithy.api#documentation": "Parameter to request ExpiresAt
in response. If Enabled
,\n BatchGetRecord
will return the value of ExpiresAt
, if it is\n not null. If Disabled
and null, BatchGetRecord
will return\n null.
"
+ }
}
},
"traits": {
@@ -924,6 +930,12 @@
"smithy.api#documentation": "The Record
retrieved.
",
"smithy.api#required": {}
}
+ },
+ "ExpiresAt": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#ExpiresAt",
+ "traits": {
+ "smithy.api#documentation": "The ExpiresAt
ISO string of the requested record.
"
+ }
}
},
"traits": {
@@ -964,7 +976,7 @@
}
],
"traits": {
- "smithy.api#documentation": "Deletes a Record
from a FeatureGroup
in the\n OnlineStore
. Feature Store supports both SOFT_DELETE
and\n HARD_DELETE
. For SOFT_DELETE
(default), feature columns are\n set to null
and the record is no longer retrievable by GetRecord
\n or BatchGetRecord
. For HARD_DELETE
, the complete\n Record
is removed from the OnlineStore
. In both cases, Feature\n Store appends the deleted record marker to the OfflineStore
with feature\n values set to null
, is_deleted
value set to True
,\n and EventTime
set to the delete input EventTime
.
\n Note that the EventTime
specified in DeleteRecord
should be\n set later than the EventTime
of the existing record in the\n OnlineStore
for that RecordIdentifer
. If it is not, the\n deletion does not occur:
\n \n - \n
For SOFT_DELETE
, the existing (undeleted) record remains in the\n OnlineStore
, though the delete record marker is still written to the\n OfflineStore
.
\n \n - \n
\n HARD_DELETE
returns EventTime
: 400\n ValidationException
to indicate that the delete operation failed. No delete\n record marker is written to the OfflineStore
.
\n \n
",
+ "smithy.api#documentation": "Deletes a Record
from a FeatureGroup
in the\n OnlineStore
. Feature Store supports both SoftDelete
and\n HardDelete
. For SoftDelete
(default), feature columns are\n set to null
and the record is no longer retrievable by GetRecord
\n or BatchGetRecord
. For HardDelete
, the complete\n Record
is removed from the OnlineStore
. In both cases, Feature\n Store appends the deleted record marker to the OfflineStore
with feature\n values set to null
, is_deleted
value set to True
,\n and EventTime
set to the delete input EventTime
.
\n Note that the EventTime
specified in DeleteRecord
should be\n set later than the EventTime
of the existing record in the\n OnlineStore
for that RecordIdentifer
. If it is not, the\n deletion does not occur:
\n \n - \n
For SoftDelete
, the existing (undeleted) record remains in the\n OnlineStore
, though the delete record marker is still written to the\n OfflineStore
.
\n \n - \n
\n HardDelete
returns EventTime
: 400\n ValidationException
to indicate that the delete operation failed. No delete\n record marker is written to the OfflineStore
.
\n \n
",
"smithy.api#http": {
"method": "DELETE",
"uri": "/FeatureGroup/{FeatureGroupName}",
@@ -1035,6 +1047,26 @@
}
}
},
+ "com.amazonaws.sagemakerfeaturestoreruntime#ExpirationTimeResponse": {
+ "type": "enum",
+ "members": {
+ "ENABLED": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "Enabled"
+ }
+ },
+ "DISABLED": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "Disabled"
+ }
+ }
+ }
+ },
+ "com.amazonaws.sagemakerfeaturestoreruntime#ExpiresAt": {
+ "type": "string"
+ },
"com.amazonaws.sagemakerfeaturestoreruntime#FeatureGroupName": {
"type": "string",
"traits": {
@@ -1147,6 +1179,13 @@
"smithy.api#documentation": "List of names of Features to be retrieved. If not specified, the latest value for all\n the Features are returned.
",
"smithy.api#httpQuery": "FeatureName"
}
+ },
+ "ExpirationTimeResponse": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#ExpirationTimeResponse",
+ "traits": {
+ "smithy.api#documentation": "Parameter to request ExpiresAt
in response. If Enabled
,\n BatchGetRecord
will return the value of ExpiresAt
, if it is\n not null. If Disabled
and null, BatchGetRecord
will return\n null.
",
+ "smithy.api#httpQuery": "ExpirationTimeResponse"
+ }
}
},
"traits": {
@@ -1161,6 +1200,12 @@
"traits": {
"smithy.api#documentation": "The record you requested. A list of FeatureValues
.
"
}
+ },
+ "ExpiresAt": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#ExpiresAt",
+ "traits": {
+ "smithy.api#documentation": "The ExpiresAt
ISO string of the requested record.
"
+ }
}
},
"traits": {
@@ -1243,6 +1288,12 @@
"traits": {
"smithy.api#documentation": "A list of stores to which you're adding the record. By default, Feature Store adds the\n record to all of the stores that you're using for the FeatureGroup
.
"
}
+ },
+ "TtlDuration": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#TtlDuration",
+ "traits": {
+ "smithy.api#documentation": "Time to live duration, where the record is hard deleted after the expiration time is\n reached; ExpiresAt
= EventTime
+ TtlDuration
. For\n information on HardDelete, see the DeleteRecord API in the Amazon SageMaker API Reference guide.
"
+ }
}
},
"traits": {
@@ -1327,6 +1378,71 @@
}
}
},
+ "com.amazonaws.sagemakerfeaturestoreruntime#TtlDuration": {
+ "type": "structure",
+ "members": {
+ "Unit": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#TtlDurationUnit",
+ "traits": {
+ "smithy.api#documentation": "\n TtlDuration
time unit.
",
+ "smithy.api#required": {}
+ }
+ },
+ "Value": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#TtlDurationValue",
+ "traits": {
+ "smithy.api#documentation": "\n TtlDuration
time value.
",
+ "smithy.api#required": {}
+ }
+ }
+ },
+ "traits": {
+ "smithy.api#documentation": "Time to live duration, where the record is hard deleted after the expiration time is\n reached; ExpiresAt
= EventTime
+ TtlDuration
. For\n information on HardDelete, see the DeleteRecord API in the Amazon SageMaker API Reference guide.
"
+ }
+ },
+ "com.amazonaws.sagemakerfeaturestoreruntime#TtlDurationUnit": {
+ "type": "enum",
+ "members": {
+ "SECONDS": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "Seconds"
+ }
+ },
+ "MINUTES": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "Minutes"
+ }
+ },
+ "HOURS": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "Hours"
+ }
+ },
+ "DAYS": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "Days"
+ }
+ },
+ "WEEKS": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "Weeks"
+ }
+ }
+ }
+ },
+ "com.amazonaws.sagemakerfeaturestoreruntime#TtlDurationValue": {
+ "type": "integer",
+ "traits": {
+ "smithy.api#range": {
+ "min": 1
+ }
+ }
+ },
"com.amazonaws.sagemakerfeaturestoreruntime#UnprocessedIdentifiers": {
"type": "list",
"member": {