Ich habe folgende Vorlage, die ich in der Cloudformation-Benutzeroberfläche verwende, um eine dynamoDB-Tabelle zu erstellen. Ich möchte eine Tabelle mit PrimaryKey als ID und sortKey als Wert erstellen
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "DB Description",
"Resources" : {
"TableName" : {
"Type" : "AWS::DynamoDB::Table",
"Properties" : {
"AttributeDefinitions": [ {
"AttributeName" : "ID",
"AttributeType" : "S"
}, {
"AttributeName" : "Value",
"AttributeType" : "S"
} ],
"KeySchema": [
{
"AttributeName": "ID",
"KeyType": "HASH"
}
]
},
"TableName": "TableName"
}
}
}
Auf der CF-Benutzeroberfläche klicke ich auf einen neuen Stapel, zeige auf die template
Datei von meinem lokalen Computer, gebe dem Stapel einen Namen und klicke auf Weiter. Nach einiger Zeit erhalte ich die Fehlermeldung, dass Property AttributeDefinitions nicht mit dem KeySchema der Tabelle und den Sekundärindizes übereinstimmt
Antworten:
Das Problem ist, dass der
Resources.Properties.AttributeDefinitions
Schlüssel nur Spalten definieren darf , die für Indizes oder Schlüssel verwendet werden. Mit anderen Worten, die Schlüssel inResources.Properties.AttributeDefinitions
müssen mit den gleichen Schlüsseln übereinstimmen, die in definiert sindResources.Properties.KeySchema
.AWS-Dokumente:
Die resultierende Vorlage würde also folgendermaßen aussehen:
quelle
Value
dass der Sortierschlüssel sein sollte, also sollte er in der enthalten seinKeySchema
, nicht aus der entfernt werdenAttributeDefinitions
.Die akzeptierte Antwort ist in der Fehlerursache korrekt, aber Sie sagten, Sie wollten den Sortierschlüssel
Value
. Sie sollten Ihre CloudFormation also so ändern, dass sie Folgendes enthält:quelle
In AttributeDefinitions müssen Sie nur Partitions- und Bereichsschlüssel definieren, keine anderen Attribute.
Die Anzahl der Attribute in AttributeDefinitions und KeySchema sollte übereinstimmen und genau gleich sein.
quelle