CloudFormation에서 내 DynamoDB 생성 JSON이 유효하지 않다고 주장합니다 ..


82

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 사이의 계층과 더 관련이 있습니다.

누구든지 내 템플릿의 문제점을 지적 할 수 있습니까?


자세한 정보를 통해이
Pat Myron

답변:


178

이것은 DynamoDB에 대한 내 부분의 오해 때문이었습니다. 여기서 정의해야하는 유일한 속성은 키로 사용되는 속성입니다. 따라서 AttributeDefinitions 배열을 다음과 같이 변경하면 문제가 해결되었습니다.

"AttributeDefinitions": [
            {
                "AttributeName": "audit_id",
                "AttributeType": "S"
            }
]

3
이것은 또한 캡처 여기
베니 바우어

10
여기서 실수는 테이블의 스키마 (즉, 관계형 DB에서 말하는 테이블의 '열')를 정의하려는 것입니다. DynamoDb에서는 항목 자체의 스키마가 아니라 테이블의 항목 값을 검색하는 데 사용할 키만 정의합니다. DynamoDb는 스키마가 없으며 각 키에 대해 저장된 값은 항목이 추가 될 때 정의됩니다. 정의 할 데이터 형태가 없습니다.
Zodman

@Zodman 감사 의견 특별히이 부분에 대한 많은 : "DynamoDB의는 스키마, 그리고 항목이 추가 될 때 각 키에 저장된 값이 정의 정의하는 데이터 모양이 없습니다."
하메드 Minaee

3
오 이런, 나는 오랜 세월 동안 똑같은 문제에 갇혀있었습니다. 감사.
blueprintchris

3
모든 영웅이 망토를 입는 것은 아닙니다 ... 잡아 주셔서 감사합니다!
Marcello Grechi Lins 2018
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.