Troposphere에서 생성 한 JSON (의 DynamoDB 부분)은 다음과 같습니다.
"sandbox": {
"Properties": {
"AttributeDefinitions": [
{
"AttributeName": "audit_id",
"AttributeType": "S"
},
{
"AttributeName": "status",
"AttributeType": "S"
},
{
"AttributeName": "filename",
"AttributeType": "S"
},
{
"AttributeName": "file_detected_dt",
"AttributeType": "S"
},
{
"AttributeName": "time_taken",
"AttributeType": "N"
},
{
"AttributeName": "number_rows_processed_file",
"AttributeType": "N"
},
{
"AttributeName": "number_rows_created_db",
"AttributeType": "N"
},
{
"AttributeName": "info_messages",
"AttributeType": "S"
}
],
"KeySchema": [
{
"AttributeName": "audit_id",
"KeyType": "HASH"
}
],
"ProvisionedThroughput": {
"ReadCapacityUnits": {
"Ref": "ReadCapacityUnits"
},
"WriteCapacityUnits": {
"Ref": "WriteCapacityUnits"
}
}
},
"Type": "AWS::DynamoDB::Table"
}
CloudFormation은 VPC를 스핀 업하려고 할 때 다음 오류를 표시 Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes
합니다..
하지만 … 그렇습니까? 나는 audit_id
고독한 키로 지정 하고 있으며 AttributeDefinitions 목록 내에 확실히 존재합니다. 저는 CF (및 Dynamo, 그 문제)를 처음 접했기 때문에 매우 분명한 것을 놓치고있을 수 있지만 지금은 분명하지 않습니다.
나는 주변을 훑어 보았고 실제로이 오류에 대한 한 가지 언급 만 발견했으며 CF 자체가 아닌 개발자와 CF 사이의 계층과 더 관련이 있습니다.
누구든지 내 템플릿의 문제점을 지적 할 수 있습니까?
답변
이것은 DynamoDB에 대한 내 부분의 오해 때문이었습니다. 여기서 정의해야하는 유일한 속성은 키로 사용되는 속성입니다. 따라서 AttributeDefinitions 배열을 다음과 같이 변경하면 문제가 해결되었습니다.
"AttributeDefinitions": [
{
"AttributeName": "audit_id",
"AttributeType": "S"
}
]