Terraform 0.11

aws_lambda_permission




terraform

aws_lambda_permission

लैम्ब्डा फ़ंक्शन (जैसे क्लाउडवॉच इवेंट रूल, एसएनएस या एस 3) को लागू करने वाले बाहरी स्रोतों को अनुमति देने के लिए एक लैम्ब्डा अनुमति देता है।

उदाहरण उपयोग

resource "aws_lambda_permission" "allow_cloudwatch" {
  statement_id   = "AllowExecutionFromCloudWatch"
  action         = "lambda:InvokeFunction"
  function_name  = "${aws_lambda_function.test_lambda.function_name}"
  principal      = "events.amazonaws.com"
  source_arn     = "arn:aws:events:eu-west-1:111122223333:rule/RunDaily"
  qualifier      = "${aws_lambda_alias.test_alias.name}"
}

resource "aws_lambda_alias" "test_alias" {
  name             = "testalias"
  description      = "a sample description"
  function_name    = "${aws_lambda_function.test_lambda.function_name}"
  function_version = "$LATEST"
}

resource "aws_lambda_function" "test_lambda" {
  filename      = "lambdatest.zip"
  function_name = "lambda_function_name"
  role          = "${aws_iam_role.iam_for_lambda.arn}"
  handler       = "exports.handler"
  runtime       = "nodejs6.10"
}

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_permission" "with_sns" {
  statement_id  = "AllowExecutionFromSNS"
  action        = "lambda:InvokeFunction"
  function_name = "${aws_lambda_function.func.function_name}"
  principal     = "sns.amazonaws.com"
  source_arn    = "${aws_sns_topic.default.arn}"
}

resource "aws_sns_topic" "default" {
  name = "call-lambda-maybe"
}

resource "aws_sns_topic_subscription" "lambda" {
  topic_arn = "${aws_sns_topic.default.arn}"
  protocol  = "lambda"
  endpoint  = "${aws_lambda_function.func.arn}"
}

resource "aws_lambda_function" "func" {
  filename      = "lambdatest.zip"
  function_name = "lambda_called_from_sns"
  role          = "${aws_iam_role.default.arn}"
  handler       = "exports.handler"
  runtime       = "python2.7"
}

resource "aws_iam_role" "default" {
  name = "iam_for_lambda_with_sns"

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

एपीआई गेटवे रीस्ट एपीआई के लिए लैंबडा अनुमतियाँ निर्दिष्ट करें

resource "aws_api_gateway_rest_api" "MyDemoAPI" {
  name        = "MyDemoAPI"
  description = "This is my API for demonstration purposes"
}

resource "aws_lambda_permission" "lambda_permission" {
  statement_id  = "AllowMyDemoAPIInvoke"
  action        = "lambda:InvokeFunction"
  function_name = "MyDemoFunction"
  principal     = "apigateway.amazonaws.com"

  # The /*/*/* part allows invocation from any stage, method and resource path
  # within API Gateway REST API.
  source_arn = "${aws_api_gateway_rest_api.MyDemoAPI.execution_arn}/*/*/*"
}

तर्क संदर्भ

  • action - (आवश्यक) AWS लैंबडा कार्रवाई जिसे आप इस कथन में अनुमति देना चाहते हैं। (उदाहरण lambda:InvokeFunction )
  • function_name - (आवश्यक) लैंबडा फ़ंक्शन का नाम जिसकी संसाधन नीति आप अपडेट कर रहे हैं
  • principal - (आवश्यक) वह प्रिंसिपल जिसे यह अनुमति मिल रही है। जैसे s3.amazonaws.com , AWS खाता आईडी, या किसी भी मान्य AWS सेवा प्रिंसिपल जैसे sns.amazonaws.com . events.amazonaws.com या sns.amazonaws.com
  • qualifier - (वैकल्पिक) फ़ंक्शन संस्करण या उपनाम नाम निर्दिष्ट करने के लिए क्वेरी पैरामीटर। अनुमति तब विशिष्ट योग्य ARN पर लागू होगी। उदा। arn:aws:lambda:aws-region:acct-id:function:function-name:2
  • source_account - (वैकल्पिक) इस पैरामीटर का उपयोग S3 और SES के लिए किया जाता है। स्रोत स्वामी की AWS खाता आईडी (हाइफ़न के बिना)।
  • source_arn - (वैकल्पिक) Amazon S3 या CloudWatch ईवेंट को आपके फ़ंक्शन को लागू करने की अनुमति देते समय, आपको इस फ़ील्ड को S3 बकेट या CloudWatch ईवेंट नियम के लिए इसके मान के रूप में अमेज़न संसाधन नाम (ARN) के साथ निर्दिष्ट करना चाहिए। यह सुनिश्चित करता है कि केवल निर्दिष्ट बकेट या नियम से उत्पन्न ईवेंट फ़ंक्शन को लागू कर सकते हैं। एपीआई गेटवे ARN में एक अनूठी संरचना है जिसका वर्णन here किया गया here
  • statement_id - (वैकल्पिक) एक अद्वितीय विवरण पहचानकर्ता। Terraform द्वारा उत्पन्न डिफ़ॉल्ट रूप से।
  • statement_id_prefix - (वैकल्पिक) एक बयान पहचानकर्ता उपसर्ग। Terraform एक अद्वितीय प्रत्यय उत्पन्न करेगा। Statement_id के साथ विरोध।