TerraForm Api网关λ集成触发问题 [英] Terraform Api Gateway Lambda Integration trigger problem

查看:21
本文介绍了TerraForm Api网关λ集成触发问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我手动添加Lambda函数类型的集成请求,Api Gateway触发器将自动添加到lambda函数。

如果我通过Terraform执行此操作,则一切看起来都是正确的,但当我查看Lambda函数时,它没有触发器。

如果我随后手动更新集成请求(更改为Mock并返回到Lambda函数),则触发器将添加到Lambda函数?此后一切正常。

我错过了什么?

resource "aws_api_gateway_integration" "integration" {
  count = var.lambda_definition.apigateway ? 1 : 0
  rest_api_id = "${data.terraform_remote_state.apigateway.outputs.apigateway_id}"
  resource_id = aws_api_gateway_resource.api_proxy_resource[count.index].id
  http_method = "${aws_api_gateway_method.method[count.index].http_method}"
  integration_http_method = "ANY"
  type                    = "AWS_PROXY"
  uri                     = aws_lambda_function.lambda.invoke_arn
}

推荐答案

由于您没有提到是否为您的函数指定了正确的权限,我猜您缺少aws_lambda_permission。这将显式授予API调用您的函数的权限

资源将是(仅限示例):

resource "aws_lambda_permission" "allow_api" {
  statement_id  = "AllowAPIgatewayInvokation"
  action        = "lambda:InvokeFunction"
  function_name = aws_lambda_function.lambda.invoke_arn
  principal     = "apigateway.amazonaws.com"
}

当您在控制台中手动执行此操作时,AWS会在后台设置所有这些权限。

这篇关于TerraForm Api网关λ集成触发问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆