2016-07-01 4 views
51

Hier ist (der DynamoDB Teil) mein Troposphäre generierte JSON:Cloudformation besteht darauf, meine DynamoDB Schöpfung JSON ungültig ist .. aber ich kann nicht sehen, wie

"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 gibt mir diesen Fehler zu versuchen, bis zu spinnen die VPC: Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes.

Aber ... ist es? Ich gebe audit_id als einen einzigen Schlüssel, und es ist definitiv in der Liste AttributeDefinitions vorhanden. Ich bin sehr neu in CF (und Dynamo), also mag ich etwas sehr Offensichtliches vermissen, aber es ist mir im Moment nicht klar.

Ich habe gegoogled und fand nur eine Erwähnung dieses Fehlers, und es war mehr mit einer Schicht zwischen Entwickler und CF, als CF selbst zu tun.

Kann jemand darauf hinweisen, was mit meiner Vorlage nicht stimmt?

Antwort

106

Dies war auf ein Missverständnis meinerseits in Bezug auf DynamoDB. Die nur Attribute, die hier definiert werden sollten, sind diejenigen, die als Schlüssel verwendet werden. So auf die folgenden die AttributeDefinitions Array ändert das Problem gelöst:

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

Dies auch [hier] erfasst wird (http://stackoverflow.com/a/30924384/1111215) –

+1

Der Fehler wurde hier versucht, die definieren Schema der Tabelle (dh die 'Spalten' der Tabelle in relationalen DB sprechen). In DynamoDb definieren Sie nur den Schlüssel, mit dem die Werte des Elements in der Tabelle abgerufen werden, nicht das Schema des Elements selbst. DynamoDb ist schemalos, und die Werte, die für jeden Schlüssel gespeichert werden, werden beim Hinzufügen des Elements definiert. Es gibt keine zu definierende Datenform. – Zodman

+0

@Zodman Vielen Dank für Ihren Kommentar speziell diesen Teil: "DynamoDb ist schemaless, und die Werte für jeden Schlüssel gespeichert wird definiert, wenn das Element hinzugefügt wird. Es gibt keine Datenform zu definieren" –

Verwandte Themen