【问题标题】:Deploying simple helloworld lambda function (python) using Terraform script - error creating "test lambda"使用 Terraform 脚本部署简单的 helloworld lambda 函数(python) - 创建“测试 lambda”时出错
【发布时间】:2021-05-13 16:23:27
【问题描述】:

我正在尝试使用 terraform 脚本创建 lambda 函数 我收到错误消息“创建 lambda 函数时出错”我也把错误的屏幕截图

这是地形脚本:

我在 AWS 管理控制台中创建了一个角色,并命名为“Welcome-Lambda-Role”。这就是我在下面的脚本中提到的那个角色。不知道是不是这个问题。

provider "aws" {
  region     = "us-west-2"
  access_key = "xxz"
  secret_key = "yyyydtEyZtOaQVGF5h"
}
data "archive_file" "welcome" {
  type = "zip"
  source_file = "welcome.py"
  output_path = "outputs/welcome.zip"
}
resource "aws_lambda_function" "test_lambda" {
  filename = "outputs/welcome.zip"
  function_name = "welcome"
  handler = "welcome.hello"

  //created this role manually in AWS console and referred to that role in the next line
  role = "Welcome-Lambda-Role"
 
  //source_code_hash = filebase64sha256("lambda_function_payload.zip")
  runtime = "python3.7"
}

welcome.py 文件内容

  def hello(event, context):
     print("Welcome to terraform")

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    role 应该是角色的 ARN,而不仅仅是其名称:

    data "aws_iam_role" "role" {
      name = "Welcome-Lambda-Role"
    }
    
    resource "aws_lambda_function" "test_lambda" {
    
          filename      = "welcome.zip"
          function_name = "welcome"
          handler       = "welcome.lambda_handler"
    
          role          = data.aws_iam_role.role.arn
          
          runtime       = "python3.7"
    
    }
    

    或者如果你只是想硬编码:

    resource "aws_lambda_function" "test_lambda" {
    
          filename      = "welcome.zip"
          function_name = "welcome"
          handler       = "welcome.lambda_handler"
    
          role          = "arn:aws:iam::xxxx:role/service-role/Welcome-Lambda-Role"
          
          runtime       = "python3.7"
    
    }
    

    【讨论】:

    • 谢谢马尔辛。那个错误消失了。出于某种原因,我添加到welcome.zip 文件中的welcome.py 文件没有内容。这就是我收到此错误的原因。
    • @Jason 你还没有显示你的welcome.py,可能它是空的或者它在不同的位置?您的archive_file 是正确的。
    • 对不起,我忘了把welcome.py。我将其添加到上面的原始帖子中。抱歉,刚刚开始了解 terraform。为什么我需要上传welcome.zip。为什么不能是welcome.py文件本身?
    • @Jason Zip 是您的 lambda deployment package。除了role 问题之外,您的代码或 lambda 函数没有任何问题。如果您有其他问题(空welcome.py),那么您的问题中不会出现。
    • 谢谢邮编。我会通过你分享的链接。感谢您的帮助。一个问题。使用 Terraform 脚本部署 Lambda 函数是否正常?我构建了一个 CI/CD Jenkins 管道来部署 terraform 脚本。我的计划是使用该管道通过 terraform 脚本部署 Lambda 函数。
    猜你喜欢
    • 2021-10-05
    • 2021-07-18
    • 2019-04-12
    • 2023-02-11
    • 2021-12-19
    • 2021-04-08
    • 2023-02-21
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多