2016-07-01 6 views
51

यहाँ (के DynamoDB हिस्सा) मेरी Troposphere-उत्पन्न JSON है:CloudFormation का कहना है मेरी DynamoDB निर्माण JSON अमान्य है .. लेकिन मुझे नहीं देख सकते हैं कि

"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 मुझे स्पिन करने की कोशिश कर पर इस त्रुटि देता है वीपीसी: Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes

लेकिन ... है ना? मैं audit_id को एकमात्र कुंजी के रूप में निर्दिष्ट कर रहा हूं, और यह निश्चित रूप से विशेषता वितरण सूची में मौजूद है। मैं सीएफ (और डायनेमो, उस मामले के लिए बहुत नया हूं) इसलिए मुझे कुछ बेहद स्पष्ट याद आ रही है, लेकिन इस समय मुझे यह स्पष्ट नहीं है।

मैंने चारों ओर गुगल किया है और केवल वास्तव में इस त्रुटि का एक उल्लेख पाया है, और सीएफ के बजाए डेवलपर और सीएफ के बीच एक परत के साथ और अधिक करना था।

कोई भी बता सकता है कि मेरे टेम्पलेट में क्या गलत है?

उत्तर

106

यह डायनेमो डीबी के संबंध में मेरे हिस्से पर एक गलतफहमी के लिए नीचे था। केवल विशेषताएँ जिन्हें यहां परिभाषित किया जाना चाहिए वे हैं जिन्हें कुंजी के रूप में उपयोग किया जाएगा। इस प्रकार, निम्नलिखित को AttributeDefinitions सरणी बदलते समस्या हल:

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

यह भी [यहां] कब्जा कर लिया है (http://stackoverflow.com/a/30924384/1111215) –

+1

गलती यहाँ परिभाषित करने के लिए कोशिश कर रहा था तालिका की स्कीमा (यानी डीबी के संबंध में तालिका के 'कॉलम' बोलते हैं)। डायनेमो डीबी में आप केवल उस कुंजी को परिभाषित करते हैं जिसके साथ तालिका में आइटम के मानों को पुनर्प्राप्त करना है, आइटम की स्कीमा नहीं। डायनेमो डीबी स्कीमालेस है, और आइटम को जोड़े जाने पर प्रत्येक कुंजी के विरुद्ध संग्रहीत मान परिभाषित किए जाते हैं। परिभाषित करने के लिए कोई डेटा आकार नहीं है। – Zodman

+0

@Zodman आपकी टिप्पणी के लिए विशेष रूप से बहुत कुछ धन्यवाद: "डायनेमो डीबी स्कीमालेस है, और आइटम को जोड़े जाने पर प्रत्येक कुंजी के विरुद्ध संग्रहीत मान परिभाषित किए जाते हैं। परिभाषित करने के लिए कोई डेटा आकार नहीं है" –

संबंधित मुद्दे