99x / 99x/serverless-dynamodb-local
UnexpectedParameter: Unexpected key 'TimeToLiveSpecification'
- Dominant language
- JavaScript
- Stars
- 621
- Forks
- 232
- PR merge metrics
- No merged PRs in 30d
Description
**Actual Behaviour**
When running with the following serverless config for Dynamo:
```
TodosDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Delete
Properties:
AttributeDefinitions:
-
AttributeName: eviSessionId
AttributeType: S
KeySchema:
-
AttributeName: eviSessionId
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 50
WriteCapacityUnits: 15
TableName: ${self:provider.environment.DYNAMODB_TABLE}
TimeToLiveSpecification:
AttributeName: expiresOn
Enabled: true
```
I get this error as a result of the `TimeToLiveSpecification` field:
```
UnexpectedParameter: Unexpected key 'TimeToLiveSpecification' found in params
at ParamValidator.fail (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/param_validator.js:50:37)
at ParamValidator.validateStructure (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/param_validator.js:77:14)
at ParamValidator.validateMember (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/param_validator.js:88:21)
at ParamValidator.validate (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/param_validator.js:34:10)
at Request.VALIDATE_PARAMETERS (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/event_listeners.js:125:42)
at Request.callListeners (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
at callNextListener (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/sequential_executor.js:95:12)
at /Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/event_listeners.js:85:9
at finish (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/config.js:320:7)
at /Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/config.js:338:9
at Credentials.get (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/credentials.js:126:7)
at getAsyncCredentials (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/config.js:332:24)
at Config.getCredentials (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/config.js:352:9)
at Request.VALIDATE_CREDENTIALS (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/event_listeners.js:80:26)
at Request.callListeners (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/sequential_executor.js:101:18)
at Request.emit (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
at Request.emit (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/state_machine.js:14:12)
at Request.runTo (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/request.js:403:15)
at Request.send (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/request.js:367:10)
at makeRequest (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/service.js:193:27)
at svc.(anonymous function) [as createTable] (/Users/lilith.saer/Projects/session-access-cache/node_modules/aws-sdk/lib/service.js:499:23)
at BbPromise (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless-dynamodb-local/index.js:200:26)
at ServerlessDynamodbLocal.createTable (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless-dynamodb-local/index.js:199:16)
at BbPromise.each (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless-dynamodb-local/index.js:122:55)
From previous event:
at ServerlessDynamodbLocal.migrateHandler (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless-dynamodb-local/index.js:122:26)
at BbPromise.resolve.then (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless-dynamodb-local/index.js:157:45)
From previous event:
at ServerlessDynamodbLocal.startHandler (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless-dynamodb-local/index.js:157:10)
at BbPromise.reduce (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless/lib/classes/PluginManager.js:372:55)
From previous event:
at PluginManager.invoke (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless/lib/classes/PluginManager.js:372:22)
at PluginManager.run (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless/lib/classes/PluginManager.js:403:17)
at variables.populateService.then (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless/lib/Serverless.js:102:33)
at runCallback (timers.js:666:20)
at tryOnImmediate (timers.js:639:5)
at processImmediate [as _immediateCallback] (timers.js:611:5)
From previous event:
at Serverless.run (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless/lib/Serverless.js:89:74)
at serverless.init.then (/Users/lilith.saer/Projects/session-access-cache/node_modules/serverless/bin/serverless:42:50)
```
**Expected Behaviour**
This should start up without issue.
**Steps to reproduce it**
Run `npm start` with the following field included in the DynamoDB specs:
```
TimeToLiveSpecification:
AttributeName: expiresOn
Enabled: true
```
**Would you like to work on the issue?**
I would like to work on resolving this myself, but do not know where to start. If someone can point me in the right direction I would not mind taking the time to attempt a resolution.
Contributor guide
Research direction
Start at serverless-dynamodb-local/index.js around the createTable call shown in the stack trace, then reproduce the issue with npm start and the TimeToLiveSpecification field. Done means the local DynamoDB table starts successfully with that configuration and the UnexpectedParameter error no longer occurs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, javascript
- Domain
- database
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100