2016-07-01 17 views
51

Ecco (la parte DynamoDB di) mia troposfera generati JSON:CloudFormation insiste la mia creazione DynamoDB JSON è valido .. ma non riesco a vedere come

"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 mi dà questo errore sul tentativo di spin up il VPC: Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes.

Ma ... è così? Sto specificando audit_id come chiave solitaria e sicuramente esiste all'interno dell'elenco AttributeDefinitions. Sono molto nuovo a CF (e Dynamo, se è per questo) quindi potrei stare perdendo qualcosa di estremamente ovvio, ma al momento non mi è chiaro.

Ho cercato su Google e ho trovato davvero solo una menzione di questo errore, e si trattava più di uno strato tra sviluppatore e CF, piuttosto che CF stesso.

Qualcuno può segnalare cosa c'è di sbagliato nel mio modello?

risposta

106

Questo era dovuto a un malinteso da parte mia per quanto riguarda DynamoDB. Gli solo attributi che dovrebbero essere definiti qui sono quelli che verranno utilizzati come chiavi. Così, modificando la matrice AttributeDefinitions di seguito risolto il problema:

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

Questo viene anche catturata [qui] (http://stackoverflow.com/a/30924384/1111215) –

+1

L'errore qui cercava di definire la schema della tabella (cioè le 'colonne' della tabella nel DB relazionale parlano). In DynamoDb si definisce solo la chiave con cui recuperare i valori dell'elemento nella tabella, non lo schema dell'elemento stesso. DynamoDb è senza schemi e i valori memorizzati su ogni chiave vengono definiti quando viene aggiunto l'elemento. Non esiste una forma dati da definire. – Zodman

+0

@Zodman Grazie mille per il tuo commento in particolare questa parte: "DynamoDb è schemaless, e i valori memorizzati su ogni chiave sono definiti quando l'elemento viene aggiunto. Non c'è nessuna forma di dati da definire" –

Problemi correlati