web-dev-qa-db-fra.com

CloudFormation insiste sur le fait que mon JSON de création DynamoDB n'est pas valide .. mais je ne vois pas comment

Voici (la partie DynamoDB de) mon JSON généré par Troposphere:

"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 me donne cette erreur en essayant de lancer le VPC: Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes.

Mais ... c'est ça? Je spécifie audit_id en tant que clé unique et existe certainement dans la liste AttributeDefinitions. Je suis très nouveau dans CF (et Dynamo, d'ailleurs), alors il se peut que je manque quelque chose d'extrêmement évident, mais ce n'est pas évident pour moi pour le moment.

J'ai cherché sur Google et n'ai trouvé qu'une seule mention de cette erreur. Il s'agissait davantage d'une couche entre développeur et CF, plutôt que CF elle-même.

Quelqu'un peut-il indiquer ce qui ne va pas avec mon modèle?

78
user1381745

C'était un malentendu de ma part concernant DynamoDB. Les attributs niquement qui devraient être définis ici sont ceux qui seront utilisés comme clés. Ainsi, la modification du tableau AttributeDefinitions comme suit a résolu le problème:

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