Terraform 0.11

aws_dynamodb_table




terraform

aws_dynamodb_table

डायनामोबीडी टेबल संसाधन प्रदान करता है

उदाहरण उपयोग

निम्न डायनोडब तालिका विवरण एडब्ल्यूएस एसडीके उदाहरण प्रलेखन में दिखाया गया तालिका और जीएसआई मॉडल का वर्णन करता है

resource "aws_dynamodb_table" "basic-dynamodb-table" {
  name           = "GameScores"
  read_capacity  = 20
  write_capacity = 20
  hash_key       = "UserId"
  range_key      = "GameTitle"

  attribute {
    name = "UserId"
    type = "S"
  }

  attribute {
    name = "GameTitle"
    type = "S"
  }

  attribute {
    name = "TopScore"
    type = "N"
  }

  ttl {
    attribute_name = "TimeToExist"
    enabled = false
  }

  global_secondary_index {
    name               = "GameTitleIndex"
    hash_key           = "GameTitle"
    range_key          = "TopScore"
    write_capacity     = 10
    read_capacity      = 10
    projection_type    = "INCLUDE"
    non_key_attributes = ["UserId"]
  }

  tags {
    Name        = "dynamodb-table-1"
    Environment = "production"
  }
}

नोट: attribute सूचियाँ हो सकती हैं

  attribute = [{
    name = "UserId"
    type = "S"
  }, {
    name = "GameTitle"
    type = "S"
  }, {
    name = "TopScore"
    type = "N"
  }]

तर्क संदर्भ

निम्नलिखित तर्क समर्थित हैं:

  • name - (आवश्यक) तालिका का नाम, यह एक क्षेत्र में अद्वितीय होना चाहिए।
  • hash_key - (आवश्यक, नए संसाधन के लिए) हैश (विभाजन) कुंजी के रूप में उपयोग करने की विशेषता। एक attribute रूप में भी परिभाषित किया जाना चाहिए, नीचे देखें।
  • range_key - (वैकल्पिक, नए संसाधन) रेंज (सॉर्ट) कुंजी के रूप में उपयोग करने की विशेषता। एक attribute रूप में भी परिभाषित किया जाना चाहिए, नीचे देखें।
  • write_capacity - (आवश्यक) इस तालिका के लिए लेखन इकाइयों की संख्या
  • read_capacity - (आवश्यक) इस तालिका के लिए रीड यूनिट की संख्या
  • attribute - (आवश्यक) नेस्टेड विशेषता परिभाषाओं की सूची। केवल hash_key और range_key विशेषताओं के लिए आवश्यक है। प्रत्येक विशेषता के दो गुण हैं:
    • name - (आवश्यक) विशेषता का नाम
    • type - (आवश्यक) विशेषता प्रकार, जो एक अदिश प्रकार होना चाहिए: S , N , या B लिए (एस) ट्रिंग, (एन) umber या (बी) निष्क्रिय डेटा
  • ttl - (वैकल्पिक) ttl को परिभाषित करता है, दो गुण हैं, और केवल एक बार निर्दिष्ट किया जा सकता है:
    • enabled - (आवश्यक) इंगित करता है कि क्या ttl सक्षम है (सत्य) या अक्षम (झूठा)।
    • attribute_name - (आवश्यक) तालिका विशेषता का नाम टीटीएल टाइमस्टैम्प को स्टोर करने के लिए।
  • local_secondary_index - (वैकल्पिक, नए संसाधन) टेबल पर एक LSI का वर्णन करें; इन्हें केवल निर्माण पर ही आवंटित किया जा सकता है ताकि आप संसाधन बनाने के बाद इस परिभाषा को बदल न सकें।
  • global_secondary_index - (वैकल्पिक) तालिका के लिए एक जीएसओ का वर्णन करें; जीएसआई, अनुमानित विशेषताओं आदि की संख्या पर सामान्य सीमा के अधीन।
  • stream_enabled - (वैकल्पिक) इंगित करता है कि क्या स्ट्रीम सक्षम (सत्य) या अक्षम (झूठी) हैं।
  • stream_view_type - (वैकल्पिक) जब तालिका में कोई आइटम संशोधित किया जाता है, तो स्ट्रीम व्यू टाइप यह निर्धारित करता है कि तालिका के स्ट्रीम में क्या जानकारी लिखी गई है। मान्य मान KEYS_ONLY , NEW_IMAGE , OLD_IMAGE , NEW_AND_OLD_IMAGES
  • server_side_encryption एन्क्रिप्शन - (वैकल्पिक) बाकी विकल्पों पर एन्क्रिप्ट करें।
  • tags - (वैकल्पिक) बनाए गए टेबल पर पॉप्युलेट करने के लिए टैग का एक नक्शा।
  • point_in_time_recovery - (वैकल्पिक) पॉइंट-इन-टाइम रिकवरी विकल्प।

समय समाप्ति

timeouts ब्लॉक आपको कुछ कार्यों के लिए timeouts निर्दिष्ट करने की अनुमति देता है:

  • create - (10 मिनट के लिए डिफ़ाल्ट) तालिका बनाते समय प्रयुक्त
  • update - (10 मिनट में चूक) तालिका को अद्यतन करते समय उपयोग किया जाता है
  • delete - (10 मिनट के लिए डिफ़ॉल्ट) तालिका को हटाते समय प्रयुक्त

खेतों की मेड़

local_secondary_index

  • name - (आवश्यक) सूचकांक का नाम
  • range_key - (आवश्यक) रेंज कुंजी का नाम; परिभाषित किया जाना चाहिए
  • projection_type - (आवश्यक) ALL एक, KEYS_ONLY या KEYS_ONLY जहां ALL इंडेक्स में प्रत्येक विशेषता को प्रोजेक्ट करते हैं, KEYS_ONLY प्रोजेक्ट केवल हैश और रेंज कुंजी को इंडेक्स में KEYS_ONLY , और KEYS_ONLY प्रोजेक्ट्स केवल non_key_attributes पैरामीटर में निर्दिष्ट कुंजी है।
  • non_key_attributes - (वैकल्पिक) केवल प्रक्षेपण प्रकार के रूप में non_key_attributes साथ आवश्यक; सूचकांक में प्रोजेक्ट करने के लिए विशेषताओं की एक सूची। इन्हें तालिका में विशेषताओं के रूप में परिभाषित करने की आवश्यकता नहीं है।

global_secondary_index

  • name - (आवश्यक) सूचकांक का नाम
  • write_capacity - (आवश्यक) इस सूचकांक के लिए लिखने की संख्या की संख्या
  • read_capacity - (आवश्यक) इस सूचकांक के लिए रीड यूनिट की संख्या
  • hash_key - (आवश्यक) सूचकांक में हैश कुंजी का नाम; संसाधन में एक विशेषता के रूप में परिभाषित किया जाना चाहिए।
  • range_key - (वैकल्पिक) रेंज कुंजी का नाम; परिभाषित किया जाना चाहिए
  • projection_type - (आवश्यक) ALL एक, KEYS_ONLY या KEYS_ONLY जहां ALL इंडेक्स में प्रत्येक विशेषता को प्रोजेक्ट करते हैं, KEYS_ONLY प्रोजेक्ट केवल हैश और रेंज कुंजी को इंडेक्स में KEYS_ONLY , और KEYS_ONLY प्रोजेक्ट्स केवल non_key_attributes पैरामीटर में निर्दिष्ट कुंजी है।
  • non_key_attributes - (वैकल्पिक) केवल प्रक्षेपण प्रकार के रूप में non_key_attributes साथ आवश्यक; सूचकांक में प्रोजेक्ट करने के लिए विशेषताओं की एक सूची। इन्हें तालिका में विशेषताओं के रूप में परिभाषित करने की आवश्यकता नहीं है।

server_side_encryption

  • enabled - (आवश्यक) आराम पर एन्क्रिप्शन सक्षम करने के लिए। यदि server_side_encryption ब्लॉक प्रदान नहीं किया जाता है तो यह डिफ़ॉल्ट रूप से false

point_in_time_recovery

  • enabled - (आवश्यक) चाहे पॉइंट-इन-टाइम रिकवरी को सक्षम करना हो - ध्यान दें कि नई तालिकाओं को सक्षम करने में 10 मिनट तक का समय लग सकता है। यदि point_in_time_recovery ब्लॉक प्रदान नहीं किया जाता है, तो यह डिफ़ॉल्ट रूप से false

विशेषताओं के बारे में एक नोट

केवल तालिका ऑब्जेक्ट पर उन विशेषताओं को परिभाषित करें जिनका उपयोग किया जा रहा है:

  • टेबल हैश कुंजी या रेंज कुंजी
  • LSI या GSI हैश कुंजी या रेंज कुंजी

डायनामोडीबी एपीआई को उम्मीद है कि जीएसआई / एलएसआई बनाने या अपडेट करने या प्रारंभिक तालिका बनाने के दौरान विशेषता संरचना (नाम और प्रकार) को पारित किया जाएगा। इन मामलों में यह उम्मीद करता है कि प्रदान की जाने वाली हैश / रेंज कुंजियाँ; क्योंकि ये कई स्थानों पर फिर से उपयोग किए जाते हैं (यानी टेबल की रेंज कुंजी एक या एक से अधिक GSI का हिस्सा हो सकती है), वे दोहराव को रोकने और स्थिरता बढ़ाने के लिए टेबल ऑब्जेक्ट पर संग्रहीत होते हैं। यदि आप उन विशेषताओं को यहां जोड़ते हैं जो इन परिदृश्यों में उपयोग नहीं किए जाते हैं तो यह योजना में एक अनंत लूप का कारण बन सकता है।

संदर्भ संदर्भित करता है

उपरोक्त सभी तर्कों के अलावा, निम्नलिखित विशेषताएँ निर्यात की जाती हैं:

  • arn - तालिका का arn
  • id - तालिका का नाम
  • stream_arn - तालिका स्ट्रीम का ARN। केवल तभी उपलब्ध है जब stream_enabled = true
  • stream_label - इस स्ट्रीम के लिए, ISO 8601 प्रारूप में एक टाइमस्टैम्प। ध्यान दें कि यह टाइमस्टैम्प अपने आप में धारा के लिए एक विशिष्ट पहचानकर्ता नहीं है। हालांकि, AWS ग्राहक आईडी, तालिका नाम और इस क्षेत्र का संयोजन अद्वितीय होने की गारंटी है। इसका उपयोग CloudWatch Alarms बनाने के लिए किया जा सकता है। केवल तभी उपलब्ध है जब stream_enabled = true

आयात

DynamoDB तालिकाओं को name का उपयोग करके आयात किया जा सकता है, जैसे

$ terraform import aws_dynamodb_table.basic-dynamodb-table GameScores