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:

+ * */ 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:

+ * * @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 ", "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": {