如何解决Terraform Api Gateway Lambda集成触发问题
如果我手动添加Lambda函数类型的Integration Request,则会将Api Gateway触发器自动添加到lambda函数。
如果我通过Terraform进行操作,一切看起来都正确,但是当我查看Lambda函数时,它没有触发器。
如果然后我手动更新集成请求(更改为“模拟”,然后再返回到Lambda函数),触发器是否添加到Lambda函数?之后一切正常。
我想念什么?
where('product','LIKE','%'.$word.'%')
//or
where('product',"%{$word}%")
解决方法
由于您没有提到您是否为功能指定了正确的权限,所以我猜您是在丢失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会在后台设置所有这些权限。
,请确保将integration_http_method
设置为POST
,而不要像示例中那样设置为ANY
:
integration_http_method = "POST"
请参阅AWS Docs-中途-红色框显示“!重要”:
对于Lambda集成,必须根据函数调用的Lambda服务操作的规范,对集成请求使用POST的HTTP方法。 apigAwsProxyRole的IAM角色必须具有允许apigateway服务调用Lambda函数的策略。有关IAM权限的详细信息,请参阅用于调用API的API网关权限模型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。