aws / aws-sdk

Landing page for the AWS SDKs on GitHub
https://aws.amazon.com/tools/
Other
68 stars 12 forks source link

Timestream Composite Key doesn't work #759

Open AnonHax0r opened 1 month ago

AnonHax0r commented 1 month ago

Describe the bug

Adding a composite key fails on validation, saying you can only specify one key. Documentation shows you can list multiple as you would expect, and the order would determine the heirarchy. The shorthand for --schema is also failing to parse the inputs correctly.

Example input that fails:

aws timestream-write create-table --database-name example-database --table-name composite-test --retention-properties '{"MemoryStoreRetentionPeriodInHours": 24, "MagneticStoreRetentionPeriodInDays": 830}' --schema '{ "CompositePartitionKey": [ { "Type": "DIMENSION", "Name": "station", "EnforcementInRecord": "REQUIRED" }, { "Type": "DIMENSION", "Name": "device_id", "EnforcementInRecord": "REQUIRED" } ] }'

Expected Behavior

I expected a table with a composite key to be created using 'station' and 'device_id'

Current Behavior

An error occurred (ValidationException) when calling the CreateTable operation: You have specified too many partition keys to be used in your composite partition key. Only 1 partition keys can be specified.

Reproduction Steps

aws timestream-write create-table --database-name example-database --table-name composite-test --retention-properties '{"MemoryStoreRetentionPeriodInHours": 24, "MagneticStoreRetentionPeriodInDays": 830}' --schema '{ "CompositePartitionKey": [ { "Type": "DIMENSION", "Name": "station", "EnforcementInRecord": "REQUIRED" }, { "Type": "DIMENSION", "Name": "device_id", "EnforcementInRecord": "REQUIRED" } ] }'

Possible Solution

Unsure

Additional Information/Context

No response

CLI version used

2.15.58

Environment details (OS name and version, etc.)

Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal

tim-finnigan commented 3 weeks ago

Thanks for reporting this issue. The ValidationError is coming from the underlying CreateTable service API. And the limitation of one partition key does not seem to be documented. I'll transfer this to our cross-SDK repository (since service APIs like this are used across AWS SDKs in addition to the CLI) and reach out to the Timestream team for clarification here.

In the future you can also use the Provide feedback at the bottom of the API documentations to send feedback directly to the appropriate team, and andy changes will get automatically reflected in the CLI/SDK documentation. (ref: P133768076)