diff --git a/clients/client-sagemaker-featurestore-runtime/src/SageMakerFeatureStoreRuntime.ts b/clients/client-sagemaker-featurestore-runtime/src/SageMakerFeatureStoreRuntime.ts
index a90e2222910a..9f4eba455e86 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/SageMakerFeatureStoreRuntime.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/SageMakerFeatureStoreRuntime.ts
@@ -81,8 +81,32 @@ export class SageMakerFeatureStoreRuntime extends SageMakerFeatureStoreRuntimeCl
/**
* @public
- *
Deletes a Record
from a FeatureGroup
. When the DeleteRecord
API is called a new record will be added to the OfflineStore
and the Record
will be removed from the OnlineStore
. This
- * record will have a value of True
in the is_deleted
column.
+ * 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
+ * set to null
and the record is no longer retrievable by GetRecord
+ * or BatchGetRecord
. For HARD_DELETE
, 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
,
+ * and EventTime
set to the delete input EventTime
.
+ * 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 SOFT_DELETE
, the existing (undeleted) record remains in the
+ * OnlineStore
, though the delete record marker is still written to the
+ * OfflineStore
.
+ *
+ * -
+ *
+ * HARD_DELETE
returns EventTime
: 400
+ * ValidationException
to indicate that the delete operation failed. No delete
+ * record marker is written to the OfflineStore
.
+ *
+ *
*/
public deleteRecord(
args: DeleteRecordCommandInput,
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts
index f294adccbc46..4229939544c4 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/BatchGetRecordCommand.ts
@@ -73,8 +73,8 @@ export interface BatchGetRecordCommandOutput extends BatchGetRecordResponse, __M
* You do not have permission to perform an action.
*
* @throws {@link InternalFailure} (server fault)
- * An internal failure occurred. Try your request again. If the problem
- * persists, contact Amazon Web Services customer support.
+ * An internal failure occurred. Try your request again. If the problem persists, contact
+ * Amazon Web Services customer support.
*
* @throws {@link ServiceUnavailable} (server fault)
* The service is currently unavailable.
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts
index d15b2b52b5ba..1f116bebf93d 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/DeleteRecordCommand.ts
@@ -39,8 +39,32 @@ export interface DeleteRecordCommandOutput extends __MetadataBearer {}
/**
* @public
- * Deletes a Record
from a FeatureGroup
. When the DeleteRecord
API is called a new record will be added to the OfflineStore
and the Record
will be removed from the OnlineStore
. This
- * record will have a value of True
in the is_deleted
column.
+ * 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
+ * set to null
and the record is no longer retrievable by GetRecord
+ * or BatchGetRecord
. For HARD_DELETE
, 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
,
+ * and EventTime
set to the delete input EventTime
.
+ * 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 SOFT_DELETE
, the existing (undeleted) record remains in the
+ * OnlineStore
, though the delete record marker is still written to the
+ * OfflineStore
.
+ *
+ * -
+ *
+ * HARD_DELETE
returns EventTime
: 400
+ * ValidationException
to indicate that the delete operation failed. No delete
+ * record marker is written to the OfflineStore
.
+ *
+ *
* @example
* Use a bare-bones client and the command you need to make an API call.
* ```javascript
@@ -54,6 +78,7 @@ export interface DeleteRecordCommandOutput extends __MetadataBearer {}
* TargetStores: [ // TargetStores
* "OnlineStore" || "OfflineStore",
* ],
+ * DeletionMode: "SoftDelete" || "HardDelete",
* };
* const command = new DeleteRecordCommand(input);
* const response = await client.send(command);
@@ -69,8 +94,8 @@ export interface DeleteRecordCommandOutput extends __MetadataBearer {}
* You do not have permission to perform an action.
*
* @throws {@link InternalFailure} (server fault)
- * An internal failure occurred. Try your request again. If the problem
- * persists, contact Amazon Web Services customer support.
+ * An internal failure occurred. Try your request again. If the problem persists, contact
+ * Amazon Web Services customer support.
*
* @throws {@link ServiceUnavailable} (server fault)
* The service is currently unavailable.
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts
index ed4f3b0c000b..8f4a34a30c45 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/GetRecordCommand.ts
@@ -69,8 +69,8 @@ export interface GetRecordCommandOutput extends GetRecordResponse, __MetadataBea
* You do not have permission to perform an action.
*
* @throws {@link InternalFailure} (server fault)
- * An internal failure occurred. Try your request again. If the problem
- * persists, contact Amazon Web Services customer support.
+ * An internal failure occurred. Try your request again. If the problem persists, contact
+ * Amazon Web Services customer support.
*
* @throws {@link ResourceNotFound} (client fault)
* A resource that is required to perform an action was not found.
diff --git a/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts b/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts
index cd282ffd1540..d7517f28864f 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/commands/PutRecordCommand.ts
@@ -76,8 +76,8 @@ export interface PutRecordCommandOutput extends __MetadataBearer {}
* You do not have permission to perform an action.
*
* @throws {@link InternalFailure} (server fault)
- * An internal failure occurred. Try your request again. If the problem
- * persists, contact Amazon Web Services customer support.
+ * An internal failure occurred. Try your request again. If the problem persists, contact
+ * Amazon Web Services customer support.
*
* @throws {@link ServiceUnavailable} (server fault)
* The service is currently unavailable.
diff --git a/clients/client-sagemaker-featurestore-runtime/src/endpoint/EndpointParameters.ts b/clients/client-sagemaker-featurestore-runtime/src/endpoint/EndpointParameters.ts
index 880937efc5e1..4f9a203fdb35 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/endpoint/EndpointParameters.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/endpoint/EndpointParameters.ts
@@ -24,7 +24,7 @@ export const resolveClientEndpointParameters = (
};
export interface EndpointParameters extends __EndpointParameters {
- Region: string;
+ Region?: string;
UseDualStack?: boolean;
UseFIPS?: boolean;
Endpoint?: string;
diff --git a/clients/client-sagemaker-featurestore-runtime/src/endpoint/ruleset.ts b/clients/client-sagemaker-featurestore-runtime/src/endpoint/ruleset.ts
index 3b75e2aa9e53..d609e226f82c 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/endpoint/ruleset.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/endpoint/ruleset.ts
@@ -6,25 +6,25 @@ import { RuleSetObject } from "@aws-sdk/util-endpoints";
or see "smithy.rules#endpointRuleSet"
in codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json */
-const r="fn",
+const q="required",
+r="fn",
s="argv",
t="ref";
-const a=true,
-b=false,
-c="String",
-d="PartitionResult",
-e="tree",
-f="error",
-g="endpoint",
-h={"required":true,"default":false,"type":"Boolean"},
-i={[t]:"Endpoint"},
-j={[r]:"booleanEquals",[s]:[{[t]:"UseFIPS"},true]},
-k={[r]:"booleanEquals",[s]:[{[t]:"UseDualStack"},true]},
-l={},
-m={[r]:"booleanEquals",[s]:[true,{[r]:"getAttr",[s]:[{[t]:d},"supportsFIPS"]}]},
-n={[r]:"booleanEquals",[s]:[true,{[r]:"getAttr",[s]:[{[t]:d},"supportsDualStack"]}]},
-o=[i],
-p=[j],
-q=[k];
-const _data={version:"1.0",parameters:{Region:{required:a,type:c},UseDualStack:h,UseFIPS:h,Endpoint:{required:b,type:c}},rules:[{conditions:[{[r]:"aws.partition",[s]:[{[t]:"Region"}],assign:d}],type:e,rules:[{conditions:[{[r]:"isSet",[s]:o},{[r]:"parseURL",[s]:o,assign:"url"}],type:e,rules:[{conditions:p,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:f},{type:e,rules:[{conditions:q,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:f},{endpoint:{url:i,properties:l,headers:l},type:g}]}]},{conditions:[j,k],type:e,rules:[{conditions:[m,n],type:e,rules:[{endpoint:{url:"https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:l,headers:l},type:g}]},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:f}]},{conditions:p,type:e,rules:[{conditions:[m],type:e,rules:[{endpoint:{url:"https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dnsSuffix}",properties:l,headers:l},type:g}]},{error:"FIPS is enabled but this partition does not support FIPS",type:f}]},{conditions:q,type:e,rules:[{conditions:[n],type:e,rules:[{endpoint:{url:"https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:l,headers:l},type:g}]},{error:"DualStack is enabled but this partition does not support DualStack",type:f}]},{endpoint:{url:"https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dnsSuffix}",properties:l,headers:l},type:g}]}]};
+const a="isSet",
+b="tree",
+c="error",
+d="endpoint",
+e="PartitionResult",
+f={[q]:false,"type":"String"},
+g={[q]:true,"default":false,"type":"Boolean"},
+h={[t]:"Endpoint"},
+i={[r]:"booleanEquals",[s]:[{[t]:"UseFIPS"},true]},
+j={[r]:"booleanEquals",[s]:[{[t]:"UseDualStack"},true]},
+k={},
+l={[r]:"booleanEquals",[s]:[true,{[r]:"getAttr",[s]:[{[t]:e},"supportsFIPS"]}]},
+m={[r]:"booleanEquals",[s]:[true,{[r]:"getAttr",[s]:[{[t]:e},"supportsDualStack"]}]},
+n=[i],
+o=[j],
+p=[{[t]:"Region"}];
+const _data={version:"1.0",parameters:{Region:f,UseDualStack:g,UseFIPS:g,Endpoint:f},rules:[{conditions:[{[r]:a,[s]:[h]}],type:b,rules:[{conditions:n,error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:c},{type:b,rules:[{conditions:o,error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:c},{endpoint:{url:h,properties:k,headers:k},type:d}]}]},{type:b,rules:[{conditions:[{[r]:a,[s]:p}],type:b,rules:[{conditions:[{[r]:"aws.partition",[s]:p,assign:e}],type:b,rules:[{conditions:[i,j],type:b,rules:[{conditions:[l,m],type:b,rules:[{type:b,rules:[{endpoint:{url:"https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:k,headers:k},type:d}]}]},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:c}]},{conditions:n,type:b,rules:[{conditions:[l],type:b,rules:[{type:b,rules:[{endpoint:{url:"https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dnsSuffix}",properties:k,headers:k},type:d}]}]},{error:"FIPS is enabled but this partition does not support FIPS",type:c}]},{conditions:o,type:b,rules:[{conditions:[m],type:b,rules:[{type:b,rules:[{endpoint:{url:"https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:k,headers:k},type:d}]}]},{error:"DualStack is enabled but this partition does not support DualStack",type:c}]},{type:b,rules:[{endpoint:{url:"https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dnsSuffix}",properties:k,headers:k},type:d}]}]}]},{error:"Invalid Configuration: Missing Region",type:c}]}]};
export const ruleSet: RuleSetObject = _data;
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 1115d1f64773..b0d4ef5a09bf 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/models/models_0.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/models/models_0.ts
@@ -27,7 +27,8 @@ export class AccessForbidden extends __BaseException {
/**
* @public
- * The identifier that identifies the batch of Records you are retrieving in a batch.
+ * The identifier that identifies the batch of Records you are retrieving in a
+ * batch.
*/
export interface BatchGetRecordIdentifier {
/**
@@ -52,8 +53,9 @@ export interface BatchGetRecordIdentifier {
*/
export interface BatchGetRecordRequest {
/**
- * A list of FeatureGroup
names, with their corresponding RecordIdentifier
value, and Feature name
- * that have been requested to be retrieved in batch.
+ * A list of FeatureGroup
names, with their corresponding
+ * RecordIdentifier
value, and Feature name that have been requested to be
+ * retrieved in batch.
*/
Identifiers: BatchGetRecordIdentifier[] | undefined;
}
@@ -69,19 +71,21 @@ export interface BatchGetRecordError {
FeatureGroupName: string | undefined;
/**
- * The value for the RecordIdentifier
in string format of a Record from a FeatureGroup
that is causing
- * an error when attempting to be retrieved.
+ * The value for the RecordIdentifier
in string format of a Record from a
+ * FeatureGroup
that is causing an error when attempting to be
+ * retrieved.
*/
RecordIdentifierValueAsString: string | undefined;
/**
- * The error code of an error that has occured when attempting to retrieve a batch of
+ *
The error code of an error that has occurred when attempting to retrieve a batch of
* Records. For more information on errors, see Errors.
*/
ErrorCode: string | undefined;
/**
- * The error message of an error that has occured when attempting to retrieve a record in the batch.
+ * The error message of an error that has occurred when attempting to retrieve a record in
+ * the batch.
*/
ErrorMessage: string | undefined;
}
@@ -114,7 +118,7 @@ export interface BatchGetRecordResultDetail {
FeatureGroupName: string | undefined;
/**
- * The value of the record identifer in string format.
+ * The value of the record identifier in string format.
*/
RecordIdentifierValueAsString: string | undefined;
@@ -139,16 +143,16 @@ export interface BatchGetRecordResponse {
Errors: BatchGetRecordError[] | undefined;
/**
- * A unprocessed list of FeatureGroup
names, with their corresponding RecordIdentifier
value,
- * and Feature name.
+ * A unprocessed list of FeatureGroup
names, with their corresponding
+ * RecordIdentifier
value, and Feature name.
*/
UnprocessedIdentifiers: BatchGetRecordIdentifier[] | undefined;
}
/**
* @public
- * An internal failure occurred. Try your request again. If the problem
- * persists, contact Amazon Web Services customer support.
+ * An internal failure occurred. Try your request again. If the problem persists, contact
+ * Amazon Web Services customer support.
*/
export class InternalFailure extends __BaseException {
readonly name: "InternalFailure" = "InternalFailure";
@@ -212,6 +216,20 @@ export class ValidationError extends __BaseException {
}
}
+/**
+ * @public
+ * @enum
+ */
+export const DeletionMode = {
+ HARD_DELETE: "HardDelete",
+ SOFT_DELETE: "SoftDelete",
+} as const;
+
+/**
+ * @public
+ */
+export type DeletionMode = (typeof DeletionMode)[keyof typeof DeletionMode];
+
/**
* @public
* @enum
@@ -248,9 +266,17 @@ export interface DeleteRecordRequest {
EventTime: string | undefined;
/**
- * A list of stores from which you're deleting the record. By default, Feature Store deletes the record from all of the stores that you're using for the FeatureGroup
.
+ * A list of stores from which you're deleting the record. By default, Feature Store
+ * deletes the record from all of the stores that you're using for the
+ * FeatureGroup
.
*/
TargetStores?: (TargetStore | string)[];
+
+ /**
+ * The name of the deletion mode for deleting the record. By default, the deletion mode is
+ * set to SoftDelete
.
+ */
+ DeletionMode?: DeletionMode | string;
}
/**
@@ -334,7 +360,8 @@ export interface PutRecordRequest {
Record: FeatureValue[] | undefined;
/**
- * A list of stores to which you're adding the record. By default, Feature Store adds the record to all of the stores that you're using for the FeatureGroup
.
+ * A list of stores to which you're adding the record. By default, Feature Store adds the
+ * record to all of the stores that you're using for the FeatureGroup
.
*/
TargetStores?: (TargetStore | string)[];
}
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 a275441fd9f7..e09a7e555256 100644
--- a/clients/client-sagemaker-featurestore-runtime/src/protocols/Aws_restJson1.ts
+++ b/clients/client-sagemaker-featurestore-runtime/src/protocols/Aws_restJson1.ts
@@ -86,6 +86,7 @@ export const serializeAws_restJson1DeleteRecordCommand = async (
() => input.TargetStores !== void 0,
() => (input.TargetStores! || []).map((_entry) => _entry as any),
],
+ DeletionMode: [, input.DeletionMode!],
});
let body: any;
return new __HttpRequest({
diff --git a/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json b/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json
index adbc4df20935..d7133f5d1829 100644
--- a/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json
+++ b/codegen/sdk-codegen/aws-models/sagemaker-featurestore-runtime.json
@@ -78,7 +78,7 @@
"parameters": {
"Region": {
"builtIn": "AWS::Region",
- "required": true,
+ "required": false,
"documentation": "The AWS region used to dispatch the request.",
"type": "String"
},
@@ -107,13 +107,12 @@
{
"conditions": [
{
- "fn": "aws.partition",
+ "fn": "isSet",
"argv": [
{
- "ref": "Region"
+ "ref": "Endpoint"
}
- ],
- "assign": "PartitionResult"
+ ]
}
],
"type": "tree",
@@ -121,23 +120,20 @@
{
"conditions": [
{
- "fn": "isSet",
+ "fn": "booleanEquals",
"argv": [
{
- "ref": "Endpoint"
- }
+ "ref": "UseFIPS"
+ },
+ true
]
- },
- {
- "fn": "parseURL",
- "argv": [
- {
- "ref": "Endpoint"
- }
- ],
- "assign": "url"
}
],
+ "error": "Invalid Configuration: FIPS and custom endpoint are not supported",
+ "type": "error"
+ },
+ {
+ "conditions": [],
"type": "tree",
"rules": [
{
@@ -146,67 +142,42 @@
"fn": "booleanEquals",
"argv": [
{
- "ref": "UseFIPS"
+ "ref": "UseDualStack"
},
true
]
}
],
- "error": "Invalid Configuration: FIPS and custom endpoint are not supported",
+ "error": "Invalid Configuration: Dualstack and custom endpoint are not supported",
"type": "error"
},
{
"conditions": [],
- "type": "tree",
- "rules": [
- {
- "conditions": [
- {
- "fn": "booleanEquals",
- "argv": [
- {
- "ref": "UseDualStack"
- },
- true
- ]
- }
- ],
- "error": "Invalid Configuration: Dualstack and custom endpoint are not supported",
- "type": "error"
+ "endpoint": {
+ "url": {
+ "ref": "Endpoint"
},
- {
- "conditions": [],
- "endpoint": {
- "url": {
- "ref": "Endpoint"
- },
- "properties": {},
- "headers": {}
- },
- "type": "endpoint"
- }
- ]
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
}
]
- },
+ }
+ ]
+ },
+ {
+ "conditions": [],
+ "type": "tree",
+ "rules": [
{
"conditions": [
{
- "fn": "booleanEquals",
- "argv": [
- {
- "ref": "UseFIPS"
- },
- true
- ]
- },
- {
- "fn": "booleanEquals",
+ "fn": "isSet",
"argv": [
{
- "ref": "UseDualStack"
- },
- true
+ "ref": "Region"
+ }
]
}
],
@@ -215,168 +186,238 @@
{
"conditions": [
{
- "fn": "booleanEquals",
+ "fn": "aws.partition",
"argv": [
- true,
{
- "fn": "getAttr",
+ "ref": "Region"
+ }
+ ],
+ "assign": "PartitionResult"
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
"argv": [
{
- "ref": "PartitionResult"
+ "ref": "UseFIPS"
},
- "supportsFIPS"
+ true
]
- }
- ]
- },
- {
- "fn": "booleanEquals",
- "argv": [
- true,
+ },
{
- "fn": "getAttr",
+ "fn": "booleanEquals",
"argv": [
{
- "ref": "PartitionResult"
+ "ref": "UseDualStack"
},
- "supportsDualStack"
+ true
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsFIPS"
+ ]
+ }
+ ]
+ },
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsDualStack"
+ ]
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ }
]
+ },
+ {
+ "conditions": [],
+ "error": "FIPS and DualStack are enabled, but this partition does not support one or both",
+ "type": "error"
}
]
- }
- ],
- "type": "tree",
- "rules": [
- {
- "conditions": [],
- "endpoint": {
- "url": "https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",
- "properties": {},
- "headers": {}
- },
- "type": "endpoint"
- }
- ]
- },
- {
- "conditions": [],
- "error": "FIPS and DualStack are enabled, but this partition does not support one or both",
- "type": "error"
- }
- ]
- },
- {
- "conditions": [
- {
- "fn": "booleanEquals",
- "argv": [
- {
- "ref": "UseFIPS"
},
- true
- ]
- }
- ],
- "type": "tree",
- "rules": [
- {
- "conditions": [
{
- "fn": "booleanEquals",
- "argv": [
- true,
+ "conditions": [
{
- "fn": "getAttr",
+ "fn": "booleanEquals",
"argv": [
{
- "ref": "PartitionResult"
+ "ref": "UseFIPS"
},
- "supportsFIPS"
+ true
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsFIPS"
+ ]
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ }
]
+ },
+ {
+ "conditions": [],
+ "error": "FIPS is enabled but this partition does not support FIPS",
+ "type": "error"
}
]
- }
- ],
- "type": "tree",
- "rules": [
- {
- "conditions": [],
- "endpoint": {
- "url": "https://featurestore-runtime.sagemaker-fips.{Region}.{PartitionResult#dnsSuffix}",
- "properties": {},
- "headers": {}
- },
- "type": "endpoint"
- }
- ]
- },
- {
- "conditions": [],
- "error": "FIPS is enabled but this partition does not support FIPS",
- "type": "error"
- }
- ]
- },
- {
- "conditions": [
- {
- "fn": "booleanEquals",
- "argv": [
- {
- "ref": "UseDualStack"
},
- true
- ]
- }
- ],
- "type": "tree",
- "rules": [
- {
- "conditions": [
{
- "fn": "booleanEquals",
- "argv": [
- true,
+ "conditions": [
{
- "fn": "getAttr",
+ "fn": "booleanEquals",
"argv": [
{
- "ref": "PartitionResult"
+ "ref": "UseDualStack"
},
- "supportsDualStack"
+ true
]
}
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [
+ {
+ "fn": "booleanEquals",
+ "argv": [
+ true,
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "PartitionResult"
+ },
+ "supportsDualStack"
+ ]
+ }
+ ]
+ }
+ ],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dualStackDnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "conditions": [],
+ "error": "DualStack is enabled but this partition does not support DualStack",
+ "type": "error"
+ }
]
- }
- ],
- "type": "tree",
- "rules": [
+ },
{
"conditions": [],
- "endpoint": {
- "url": "https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dualStackDnsSuffix}",
- "properties": {},
- "headers": {}
- },
- "type": "endpoint"
+ "type": "tree",
+ "rules": [
+ {
+ "conditions": [],
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dnsSuffix}",
+ "properties": {},
+ "headers": {}
+ },
+ "type": "endpoint"
+ }
+ ]
}
]
- },
- {
- "conditions": [],
- "error": "DualStack is enabled but this partition does not support DualStack",
- "type": "error"
}
]
},
{
"conditions": [],
- "endpoint": {
- "url": "https://featurestore-runtime.sagemaker.{Region}.{PartitionResult#dnsSuffix}",
- "properties": {},
- "headers": {}
- },
- "type": "endpoint"
+ "error": "Invalid Configuration: Missing Region",
+ "type": "error"
}
]
}
@@ -385,7 +426,259 @@
"smithy.rules#endpointTests": {
"testCases": [
{
- "documentation": "For custom endpoint with fips disabled and dualstack disabled",
+ "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.us-east-1.api.aws"
+ }
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "us-east-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.us-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-east-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.us-east-1.api.aws"
+ }
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "us-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.us-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.cn-north-1.api.amazonwebservices.com.cn"
+ }
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "cn-north-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.cn-north-1.amazonaws.com.cn"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "cn-north-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.cn-north-1.api.amazonwebservices.com.cn"
+ }
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "cn-north-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.cn-north-1.amazonaws.com.cn"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "cn-north-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.us-gov-east-1.api.aws"
+ }
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "us-gov-east-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.us-gov-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-gov-east-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.us-gov-east-1.api.aws"
+ }
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "us-gov-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.us-gov-east-1.amazonaws.com"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-gov-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "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
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.us-iso-east-1.c2s.ic.gov"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-iso-east-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "error": "DualStack is enabled but this partition does not support DualStack"
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "us-iso-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.us-iso-east-1.c2s.ic.gov"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-iso-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled",
+ "expect": {
+ "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
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker-fips.us-isob-east-1.sc2s.sgov.gov"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-isob-east-1",
+ "UseFIPS": true
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled",
+ "expect": {
+ "error": "DualStack is enabled but this partition does not support DualStack"
+ },
+ "params": {
+ "UseDualStack": true,
+ "Region": "us-isob-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://featurestore-runtime.sagemaker.us-isob-east-1.sc2s.sgov.gov"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "Region": "us-isob-east-1",
+ "UseFIPS": false
+ }
+ },
+ {
+ "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled",
"expect": {
"endpoint": {
"url": "https://example.com"
@@ -393,8 +686,21 @@
},
"params": {
"UseDualStack": false,
- "UseFIPS": false,
"Region": "us-east-1",
+ "UseFIPS": false,
+ "Endpoint": "https://example.com"
+ }
+ },
+ {
+ "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled",
+ "expect": {
+ "endpoint": {
+ "url": "https://example.com"
+ }
+ },
+ "params": {
+ "UseDualStack": false,
+ "UseFIPS": false,
"Endpoint": "https://example.com"
}
},
@@ -405,8 +711,8 @@
},
"params": {
"UseDualStack": false,
- "UseFIPS": true,
"Region": "us-east-1",
+ "UseFIPS": true,
"Endpoint": "https://example.com"
}
},
@@ -417,10 +723,16 @@
},
"params": {
"UseDualStack": true,
- "UseFIPS": false,
"Region": "us-east-1",
+ "UseFIPS": false,
"Endpoint": "https://example.com"
}
+ },
+ {
+ "documentation": "Missing region",
+ "expect": {
+ "error": "Invalid Configuration: Missing Region"
+ }
}
],
"version": "1.0"
@@ -471,21 +783,21 @@
"RecordIdentifierValueAsString": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#ValueAsString",
"traits": {
- "smithy.api#documentation": "The value for the RecordIdentifier
in string format of a Record from a FeatureGroup
that is causing \n an error when attempting to be retrieved.
",
+ "smithy.api#documentation": "The value for the RecordIdentifier
in string format of a Record from a\n FeatureGroup
that is causing an error when attempting to be\n retrieved.
",
"smithy.api#required": {}
}
},
"ErrorCode": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#ValueAsString",
"traits": {
- "smithy.api#documentation": "The error code of an error that has occured when attempting to retrieve a batch of\n Records. For more information on errors, see Errors.
",
+ "smithy.api#documentation": "The error code of an error that has occurred when attempting to retrieve a batch of\n Records. For more information on errors, see Errors.
",
"smithy.api#required": {}
}
},
"ErrorMessage": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#Message",
"traits": {
- "smithy.api#documentation": "The error message of an error that has occured when attempting to retrieve a record in the batch.
",
+ "smithy.api#documentation": "The error message of an error that has occurred when attempting to retrieve a record in\n the batch.
",
"smithy.api#required": {}
}
}
@@ -530,7 +842,7 @@
}
},
"traits": {
- "smithy.api#documentation": "The identifier that identifies the batch of Records you are retrieving in a batch.
"
+ "smithy.api#documentation": "The identifier that identifies the batch of Records you are retrieving in a\n batch.
"
}
},
"com.amazonaws.sagemakerfeaturestoreruntime#BatchGetRecordIdentifiers": {
@@ -551,10 +863,13 @@
"Identifiers": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#BatchGetRecordIdentifiers",
"traits": {
- "smithy.api#documentation": "A list of FeatureGroup
names, with their corresponding RecordIdentifier
value, and Feature name\n that have been requested to be retrieved in batch.
",
+ "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": {}
}
}
+ },
+ "traits": {
+ "smithy.api#input": {}
}
},
"com.amazonaws.sagemakerfeaturestoreruntime#BatchGetRecordResponse": {
@@ -577,10 +892,13 @@
"UnprocessedIdentifiers": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#UnprocessedIdentifiers",
"traits": {
- "smithy.api#documentation": "A unprocessed list of FeatureGroup
names, with their corresponding RecordIdentifier
value, \n and Feature name.
",
+ "smithy.api#documentation": "A unprocessed list of FeatureGroup
names, with their corresponding\n RecordIdentifier
value, and Feature name.
",
"smithy.api#required": {}
}
}
+ },
+ "traits": {
+ "smithy.api#output": {}
}
},
"com.amazonaws.sagemakerfeaturestoreruntime#BatchGetRecordResultDetail": {
@@ -596,7 +914,7 @@
"RecordIdentifierValueAsString": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#ValueAsString",
"traits": {
- "smithy.api#documentation": "The value of the record identifer in string format.
",
+ "smithy.api#documentation": "The value of the record identifier in string format.
",
"smithy.api#required": {}
}
},
@@ -646,7 +964,7 @@
}
],
"traits": {
- "smithy.api#documentation": "Deletes a Record
from a FeatureGroup
. When the DeleteRecord
API is called a new record will be added to the OfflineStore
and the Record
will be removed from the OnlineStore
. This\n record will have a value of True
in the is_deleted
column.
",
+ "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#http": {
"method": "DELETE",
"uri": "/FeatureGroup/{FeatureGroupName}",
@@ -684,9 +1002,36 @@
"TargetStores": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#TargetStores",
"traits": {
- "smithy.api#documentation": "A list of stores from which you're deleting the record. By default, Feature Store deletes the record from all of the stores that you're using for the FeatureGroup
.
",
+ "smithy.api#documentation": "A list of stores from which you're deleting the record. By default, Feature Store\n deletes the record from all of the stores that you're using for the\n FeatureGroup
.
",
"smithy.api#httpQuery": "TargetStores"
}
+ },
+ "DeletionMode": {
+ "target": "com.amazonaws.sagemakerfeaturestoreruntime#DeletionMode",
+ "traits": {
+ "smithy.api#documentation": "The name of the deletion mode for deleting the record. By default, the deletion mode is\n set to SoftDelete
.
",
+ "smithy.api#httpQuery": "DeletionMode"
+ }
+ }
+ },
+ "traits": {
+ "smithy.api#input": {}
+ }
+ },
+ "com.amazonaws.sagemakerfeaturestoreruntime#DeletionMode": {
+ "type": "enum",
+ "members": {
+ "SOFT_DELETE": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "SoftDelete"
+ }
+ },
+ "HARD_DELETE": {
+ "target": "smithy.api#Unit",
+ "traits": {
+ "smithy.api#enumValue": "HardDelete"
+ }
}
}
},
@@ -697,7 +1042,7 @@
"min": 1,
"max": 64
},
- "smithy.api#pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,63}$"
+ "smithy.api#pattern": "^[a-zA-Z0-9]([-_]*[a-zA-Z0-9]){0,63}$"
}
},
"com.amazonaws.sagemakerfeaturestoreruntime#FeatureName": {
@@ -803,6 +1148,9 @@
"smithy.api#httpQuery": "FeatureName"
}
}
+ },
+ "traits": {
+ "smithy.api#input": {}
}
},
"com.amazonaws.sagemakerfeaturestoreruntime#GetRecordResponse": {
@@ -814,6 +1162,9 @@
"smithy.api#documentation": "The record you requested. A list of FeatureValues
.
"
}
}
+ },
+ "traits": {
+ "smithy.api#output": {}
}
},
"com.amazonaws.sagemakerfeaturestoreruntime#InternalFailure": {
@@ -824,7 +1175,7 @@
}
},
"traits": {
- "smithy.api#documentation": "An internal failure occurred. Try your request again. If the problem \n persists, contact Amazon Web Services customer support.
",
+ "smithy.api#documentation": "An internal failure occurred. Try your request again. If the problem persists, contact\n Amazon Web Services customer support.
",
"smithy.api#error": "server",
"smithy.api#httpError": 500
}
@@ -890,9 +1241,12 @@
"TargetStores": {
"target": "com.amazonaws.sagemakerfeaturestoreruntime#TargetStores",
"traits": {
- "smithy.api#documentation": "A list of stores to which you're adding the record. By default, Feature Store adds the record to all of the stores that you're using for the FeatureGroup
.
"
+ "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
.
"
}
}
+ },
+ "traits": {
+ "smithy.api#input": {}
}
},
"com.amazonaws.sagemakerfeaturestoreruntime#Record": {