Terraform 0.11

aws_lambda_function




terraform

aws_lambda_function

एक लैम्बडा फंक्शन संसाधन प्रदान करता है। लैम्ब्डा आपको AWS की घटनाओं के जवाब में कोड के निष्पादन को ट्रिगर करने की अनुमति देता है। लैम्बडा फंक्शन में ही सोर्स कोड और रनटाइम कॉन्फ़िगरेशन शामिल है।

लैम्ब्डा के बारे में जानकारी और इसका उपयोग कैसे करें, देखें कि AWS लैम्ब्डा क्या है?

उदाहरण उपयोग

resource "aws_iam_role" "iam_for_lambda" {
  name = "iam_for_lambda"

  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}

resource "aws_lambda_function" "test_lambda" {
  filename         = "lambda_function_payload.zip"
  function_name    = "lambda_function_name"
  role             = "${aws_iam_role.iam_for_lambda.arn}"
  handler          = "exports.test"
  source_code_hash = "${base64sha256(file("lambda_function_payload.zip"))}"
  runtime          = "nodejs4.3"

  environment {
    variables = {
      foo = "bar"
    }
  }
}

परिनियोजन पैकेज निर्दिष्ट करना

AWS लैंबडा को उम्मीद है कि सोर्स कोड एक तैनाती पैकेज के रूप में प्रदान किया जाएगा जिसकी संरचना भिन्न होती है जिसके आधार पर runtime उपयोग में है। runtime के वैध मानों के लिए Runtimes देखें। तैनाती पैकेज की अपेक्षित संरचना प्रत्येक रनटाइम के लिए एडब्ल्यूएस लाम्बा प्रलेखन में पाई जा सकती है

एक बार जब आप अपना परिनियोजन पैकेज बना लेते हैं, तो आप इसे सीधे या तो एक स्थानीय फ़ाइल (फ़ाइल filename तर्क का उपयोग करके) या परोक्ष रूप से अमेज़ॅन एस 3 के माध्यम से निर्दिष्ट कर सकते हैं ( s3_bucket , s3_key और s3_object_version तर्क का उपयोग करके)। S3 के माध्यम से परिनियोजन पैकेज प्रदान करते समय इसे अपलोड करने के लिए aws_s3_bucket_object संसाधन का उपयोग करना उपयोगी हो सकता है।

बड़े तैनाती पैकेज के लिए अमेज़न द्वारा S3 के माध्यम से अपलोड करने की अनुशंसा की जाती है, क्योंकि S3 API के पास बड़ी फ़ाइलों को कुशलतापूर्वक अपलोड करने के लिए बेहतर समर्थन है।

तर्क संदर्भ

  • filename - (वैकल्पिक) स्थानीय फाइल सिस्टम में फ़ंक्शन के परिनियोजन पैकेज का पथ। यदि परिभाषित किया गया है, तो s3_ -prefixed विकल्पों का उपयोग नहीं किया जा सकता है।
  • s3_bucket - (वैकल्पिक) S3 बाल्टी स्थान जिसमें फ़ंक्शन का परिनियोजन पैकेज है। filename साथ विरोध। इस बाल्टी को उसी AWS क्षेत्र में रहना चाहिए जहाँ आप लैम्बडा फंक्शन बना रहे हैं।
  • s3_key - (वैकल्पिक) फ़ंक्शन के परिनियोजन पैकेज वाले ऑब्जेक्ट की S3 कुंजी। filename साथ विरोध।
  • s3_object_version - (वैकल्पिक) फ़ंक्शन के परिनियोजन पैकेज वाले ऑब्जेक्ट संस्करण। filename साथ विरोध।
  • function_name - (आवश्यक) आपके लैम्ब्डा फंक्शन के लिए एक अनूठा नाम।
  • dead_letter_config - (वैकल्पिक) फ़ंक्शन के मृत पत्र कतार को कॉन्फ़िगर करने के लिए नेस्टेड ब्लॉक। नीचे विवरण देखें।
  • handler - (आवश्यक) आपके कोड में फ़ंक्शन entrypoint
  • role - (आवश्यक) आईएएम भूमिका लैम्बडा फंक्शन से जुड़ी। यह उन दोनों को नियंत्रित करता है जो आपके लैम्ब्डा फंक्शन को लागू कर सकते हैं, साथ ही साथ हमारे लैम्ब्डा फंक्शन में कौन से संसाधन हैं। अधिक जानकारी के लिए लैंबडा अनुमति मॉडल देखें।
  • description - (वैकल्पिक) आपके लैम्ब्डा फंक्शन का क्या वर्णन है।
  • memory_size - (वैकल्पिक) एमबी में मेमोरी की मात्रा आपके लैम्बडा फंक्शन रनटाइम में उपयोग कर सकते हैं। 128 कमी। Limits देखें
  • runtime - (आवश्यक) मान्य मानों के लिए runtime देखें।
  • timeout - (वैकल्पिक) आपके लैम्ब्डा फंक्शन के समय को सेकंड में चलाना होगा। 3 चूक। Limits देखें
  • reserved_concurrent_executions - (वैकल्पिक) इस लंबो कार्य के लिए आरक्षित समवर्ती निष्पादन की राशि। अनारक्षित संगामिति सीमाओं के लिए चूक। देखिए मैनेजिंग कंसीडर
  • publish - (वैकल्पिक) नए लैम्बडा फंक्शन संस्करण के रूप में सृजन / परिवर्तन प्रकाशित करना है या नहीं। false अवहेलना करता false
  • vpc_config - (वैकल्पिक) अपने VPC तक पहुँचने के लिए अपने फ़ंक्शन को अनुमति देने के लिए इसे प्रदान करें। नीचे दिए गए दस्तावेज़। वीपीसी में लैंबडा देखें
  • environment - (वैकल्पिक) लैम्बडा पर्यावरण की कॉन्फ़िगरेशन सेटिंग्स। नीचे दिए गए दस्तावेज़।
  • kms_key_arn - (वैकल्पिक) KMS एन्क्रिप्शन कुंजी के लिए ARN।
  • source_code_hash - (वैकल्पिक) अद्यतन को ट्रिगर करने के लिए उपयोग किया जाता है। फ़ाइल filename या s3_key साथ निर्दिष्ट पैकेज फ़ाइल के एक बेस 64-एन्कोडेड SHA256 हैश पर सेट किया जाना चाहिए। इसे सेट करने का सामान्य तरीका ${base64sha256(file("file.zip"))} , जहाँ "file.zip" लंबो फंक्शन सोर्स आर्काइव का स्थानीय फ़ाइल नाम है।
  • tags - (वैकल्पिक) ऑब्जेक्ट को असाइन करने के लिए टैग की मैपिंग।

dead_letter_config एक एकल तर्क के साथ एक बच्चा ब्लॉक है:

  • target_arn - (आवश्यक) SNS विषय का ARN या एक आह्वान विफल होने पर सूचित करने के लिए SQS कतार। यदि इस विकल्प का उपयोग किया जाता है, तो फ़ंक्शन की IAM भूमिका को लक्ष्य ऑब्जेक्ट पर लिखने के लिए उपयुक्त एक्सेस दी जानी चाहिए, जिसका अर्थ है कि या तो sqs:SendMessage sns:Publish या sqs:SendMessage इस ARN पर sqs:SendMessage कार्रवाई, जिसके आधार पर सेवा लक्षित है।

tracing_config एक एकल तर्क के साथ एक बच्चा ब्लॉक है:

  • mode - (आवश्यक) या तो PassThrough या Active हो सकता है। यदि PassThrough, लंबोदर केवल एक अपस्ट्रीम सेवा से अनुरोध का पता लगाएगा यदि इसमें "नमूना = 1" के साथ एक अनुरेखण शीर्षलेख शामिल है। यदि सक्रिय है, तो लैम्ब्डा किसी भी ट्रेसिंग हेडर का सम्मान करेगा जो इसे अपस्ट्रीम सेवा से प्राप्त होता है। यदि कोई ट्रेसिंग हेडर प्राप्त नहीं होता है, तो लैम्बडा एक्स-रे को ट्रेसिंग निर्णय के लिए कॉल करेगा।

vpc_config के लिए निम्नलिखित की आवश्यकता है:

  • subnet_ids - (आवश्यक) subnet_ids फ़ंक्शन से जुड़ी सबनेट आईडी की एक सूची।
  • security_group_ids - (आवश्यक) सुरक्षा समूह IDs की एक सूची लैंबडा फ़ंक्शन से जुड़ी है।

पर्यावरण के लिए निम्नलिखित विशेषताएँ समर्थित हैं:

  • variables - (वैकल्पिक) एक नक्शा जो लैम्ब्डा फ़ंक्शन के लिए पर्यावरण चर को परिभाषित करता है।

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

  • arn - अमेज़ॅन रिसोर्स नेम (ARN) आपके लैम्ब्डा फंक्शन की पहचान करता है।
  • qualified_arn - अमेज़ॅन संसाधन नाम (ARN) आपके लैम्ब्डा फंक्शन संस्करण की पहचान करता है (यदि संस्करण publish = true माध्यम से सक्षम publish = true )।
  • invoke_arn - एपीआई गेटवे से aws_api_gateway_integration फंक्शन के लिए इस्तेमाल किया जाने वाला ARN - aws_api_gateway_integration के uri में उपयोग होने के लिए
  • version - आपके लैम्ब्डा फंक्शन का नवीनतम प्रकाशित संस्करण।
  • last_modified - यह संसाधन अंतिम बार संशोधित किया गया था।
  • kms_key_arn - (वैकल्पिक) KMS एन्क्रिप्शन कुंजी के लिए ARN।
  • source_code_hash - ज़िप फ़ाइल के कच्चे SHA-256 योग का source_code_hash 64-एनकोडेड प्रतिनिधित्व, या तो filename या s3_* मापदंडों के माध्यम से प्रदान किया गया।
  • source_code_size - फ़ंक्शन के बाइट्स में आकार। ज़िप फ़ाइल।

आयात

लैंबडा फंक्शन्स को function_name , उदा। का उपयोग करके आयात किया जा सकता है

$ terraform import aws_lambda_function.test_lambda my_test_lambda_function