【问题标题】:How to reference handler in Terraform for a Lambda on S3如何在 Terraform 中为 S3 上的 Lambda 引用处理程序
【发布时间】:2021-08-27 22:16:39
【问题描述】:

我的 lambda 在 S3 上的 zip 存档中,并且我已在 AWS 上部署了 lambda 和 API 网关。

这是我的项目根文件夹中的内容:

  • index.js(入口点)
  • package.json
  • README.md
  • node_modules
  • build.sh(一个执行 npm installzip -r project-folder . 的 bash 脚本)

index.js 是入口点,在文件中,我使用https://github.com/spring-media/aws-lambda-router 来处理路由:

exports.handler = router.handler({
    proxyIntegration: {
        routes: [
            <routes_defined>
        ]
    }
})

在下面的 terraform 基础架构中(为简单起见,编辑了许多资源参数),我正在使用模块创建一个 lambda 资源,并将处理程序输入为 index.handler 并引用我的 S3 存储桶。所有其他资源都与 API 网关以及网关和 lambda 之间的权限相关:

module "module_name" {
  handler            = "index.handler"
  s3_bucket          = <references_s3_bucket>
}


resource "aws_api_gateway_rest_api" "api_gateway"
resource "aws_api_gateway_rest_api_policy" "api_gateway_policy" 
resource "aws_api_gateway_resource" "proxy"

resource "aws_lambda_permission" "allow_api_gateway" 

resource "aws_api_gateway_method" "proxy" 
resource "aws_api_gateway_integration" "api_gateway_integration" 
resource "aws_api_gateway_deployment" "api_gateway_deploy" 
resource "aws_api_gateway_stage" "api_gateway_stage" 
resource "aws_api_gateway_api_key" "api_gateway_key" 
resource "aws_api_gateway_usage_plan" "api_gateway_usage_plan" 
resource "aws_api_gateway_usage_plan_key" "api_gateway_usage_plan_key" 

现在这在部署时不会显示任何错误,直到我在 AWS 控制台上实际测试 API 网关。当我向 API 网关发出请求时,它会返回错误 index.js is undefined or not exported。似乎是什么问题?我已确保 index.js 位于根文件夹中,如本期所述:Index handler is undefined or not exported

【问题讨论】:

    标签: amazon-web-services aws-lambda terraform terraform-provider-aws


    【解决方案1】:

    哦,好吧,我认为index.handler 的设置是正确的,我只是错过了我们设置别名的部分,并且我的正确版本没有设置为活动状态。一旦我将我的版本升级到活动版本,一切都会正常工作:D

    【讨论】:

      猜你喜欢
      • 2019-01-11
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2021-03-09
      相关资源
      最近更新 更多