티스토리 뷰
Cloud/AWS
DynamoDB에 PutItem 시 InvalidParameterType: Expected params.Item['*'].N to be a string 발생
jhbaek 2021. 1. 13. 17:30아래와 같은 코드로 DDB에 값을 넣으려고 했더니
InvalidParameterType: Expected params.Item['StartTime'].N to be a string
라면서 에러가 난다.
async function putBook(bookId, title, password, startTime, endTime) {
return await ddb.putItem({
TableName: BOOKS_TABLE_NAME,
Item: {
'BookId': { S: bookId },
'Title': { S: title },
'Password': { S: password },
'StartTime': { N: startTime },
'EndTime': { N: endTime }
}
}).promise();
}
Cloudwatch에서 확인한 정확한 에러 내용은 아래와 같다.
{
"errorType": "MultipleValidationErrors",
"errorMessage": "There were 2 validation errors:\n* InvalidParameterType: Expected params.Item['StartTime'].N to be a string\n* InvalidParameterType: Expected params.Item['EndTime'].N to be a string",
"code": "MultipleValidationErrors",
"message": "There were 2 validation errors:\n* InvalidParameterType: Expected params.Item['StartTime'].N to be a string\n* InvalidParameterType: Expected params.Item['EndTime'].N to be a string",
"errors": [
{
"errorType": "InvalidParameterType",
"errorMessage": "Expected params.Item['StartTime'].N to be a string",
"code": "InvalidParameterType",
"message": "Expected params.Item['StartTime'].N to be a string",
"time": "2021-01-13T08:06:32.300Z",
"stack": [
"InvalidParameterType: Expected params.Item['StartTime'].N to be a string",
" at ParamValidator.fail (/var/task/aws-sdk/lib/param_validator.js:50:37)",
" at ParamValidator.validateType (/var/task/aws-sdk/lib/param_validator.js:232:10)",
" at ParamValidator.validateString (/var/task/aws-sdk/lib/param_validator.js:154:32)",
" at ParamValidator.validateScalar (/var/task/aws-sdk/lib/param_validator.js:130:21)",
" at ParamValidator.validateMember (/var/task/aws-sdk/lib/param_validator.js:94:21)",
" at ParamValidator.validateStructure (/var/task/aws-sdk/lib/param_validator.js:75:14)",
" at ParamValidator.validateMember (/var/task/aws-sdk/lib/param_validator.js:88:21)",
" at ParamValidator.validateMap (/var/task/aws-sdk/lib/param_validator.js:117:14)",
" at ParamValidator.validateMember (/var/task/aws-sdk/lib/param_validator.js:92:21)",
" at ParamValidator.validateStructure (/var/task/aws-sdk/lib/param_validator.js:75:14)"
]
},
{
"errorType": "InvalidParameterType",
"errorMessage": "Expected params.Item['EndTime'].N to be a string",
"code": "InvalidParameterType",
"message": "Expected params.Item['EndTime'].N to be a string",
"time": "2021-01-13T08:06:32.300Z",
"stack": [
"InvalidParameterType: Expected params.Item['EndTime'].N to be a string",
" at ParamValidator.fail (/var/task/aws-sdk/lib/param_validator.js:50:37)",
" at ParamValidator.validateType (/var/task/aws-sdk/lib/param_validator.js:232:10)",
" at ParamValidator.validateString (/var/task/aws-sdk/lib/param_validator.js:154:32)",
" at ParamValidator.validateScalar (/var/task/aws-sdk/lib/param_validator.js:130:21)",
" at ParamValidator.validateMember (/var/task/aws-sdk/lib/param_validator.js:94:21)",
" at ParamValidator.validateStructure (/var/task/aws-sdk/lib/param_validator.js:75:14)",
" at ParamValidator.validateMember (/var/task/aws-sdk/lib/param_validator.js:88:21)",
" at ParamValidator.validateMap (/var/task/aws-sdk/lib/param_validator.js:117:14)",
" at ParamValidator.validateMember (/var/task/aws-sdk/lib/param_validator.js:92:21)",
" at ParamValidator.validateStructure (/var/task/aws-sdk/lib/param_validator.js:75:14)"
]
}
],
"time": "2021-01-13T08:06:32.300Z",
"stack": [
"MultipleValidationErrors: There were 2 validation errors:",
"* InvalidParameterType: Expected params.Item['StartTime'].N to be a string",
"* InvalidParameterType: Expected params.Item['EndTime'].N to be a string",
" at ParamValidator.validate (/var/task/aws-sdk/lib/param_validator.js:40:28)",
" at Request.VALIDATE_PARAMETERS (/var/task/aws-sdk/lib/event_listeners.js:126:42)",
" at Request.callListeners (/var/task/aws-sdk/lib/sequential_executor.js:106:20)",
" at callNextListener (/var/task/aws-sdk/lib/sequential_executor.js:96:12)",
" at /var/task/aws-sdk/lib/event_listeners.js:86:9",
" at finish (/var/task/aws-sdk/lib/config.js:379:7)",
" at /var/task/aws-sdk/lib/config.js:397:9",
" at EnvironmentCredentials.get (/var/task/aws-sdk/lib/credentials.js:127:7)",
" at getAsyncCredentials (/var/task/aws-sdk/lib/config.js:391:24)",
" at Config.getCredentials (/var/task/aws-sdk/lib/config.js:411:9)"
]
}
무엇이 문제일까?
DynamoDB의 Number Type에 값을 넣을 땐, 아무리 Number Type이라 해도 String 값을 넣어줘야 한다.
따라서 위의 코드는 아래 처럼 바꾸거나, 애당초 파라미터로 String type을 넘겼어야 했다.
async function putBook(bookId, title, password, startTime, endTime) {
return await ddb.putItem({
TableName: BOOKS_TABLE_NAME,
Item: {
'BookId': { S: bookId },
'Title': { S: title },
'Password': { S: password },
'StartTime': { N: String(startTime) },
'EndTime': { N: String(endTime) }
}
}).promise();
}
'Cloud > AWS' 카테고리의 다른 글
DynamoDB에 PutItem 시 InvalidParameterType: Expected params.Item['*'].N to be a string 발생 (0) | 2021.01.13 |
---|---|
우아콘2020 배달의민족 마이크로서비스 여행기 (0) | 2020.12.16 |
보안 정책을 통하여 유저에게 MFA 강제하기 (0) | 2020.08.24 |
CDK Deploy를 위한 최소한의 Policy (0) | 2020.07.28 |
AWS Pinpoint → Kinesis Firehose → Elasticsearch Event stream 활성화 (0) | 2020.07.10 |
Amazon Pinpoint 이벤트 트리거 (0) | 2020.05.31 |
AWS Java SDK v2 코드로 AWS Elasticsearch에 쿼리하기 (0) | 2020.05.31 |
AWS CloudFormation 안에 Lambda 코드를 포함하여 배포하기 (0) | 2020.04.19 |
AWS Code Build에서 Code Commit 코드 가져오기 (0) | 2020.03.29 |
- TAG
- AWS, database, DevelopmentOnAWS, dynamodb, node
댓글
공지사항
- Total
- 736,675
- Today
- 72
- Yesterday
- 230
TAG
- NDK
- 드라이버
- Python
- Quiz
- 음악
- API
- winapi
- 안드로이드
- linux
- kering
- C
- Visual C++
- Cloud
- C++
- jni강좌
- Troubleshooting
- MFC
- db
- algorithm
- android
- jni
- gcc
- database
- 리눅스
- AWS
- java
- driver
- it
- 프로그래밍
- source