Pat*_*Pat 7 amazon-web-services aws-lambda terraform aws-api-gateway
我对AWS和野兽比较陌生。在进行API网关到Lambda代理集成的工作后,我得到了Execution failed due to configuration error: Invalid permissions on Lambda function
我按照以下记录进行了设置,该记录确实有据可查terraform documentation
,并且正是我所需要的。但是在API Gateway控制台上进行测试时,出现上述错误。
resource "aws_lambda_permission" "apigw" {
statement_id = "AllowAPIGatewayInvoke"
action = "lambda:InvokeFunction"
function_name = "${aws_lambda_function.resource_name.arn}"
principal = "apigateway.amazonaws.com"
# The /*/* portion grants access from any method on any resource
# within the API Gateway "REST API".
source_arn = "${aws_api_gateway_deployment.resource_name_of_deployment.execution_arn}/*/*"
}
Run Code Online (Sandbox Code Playgroud)
Pat*_*Pat 11
从API Gateway Lambda代理集成中学到的很少
由于有许多文档和修复程序建议将详细路径显式配置为"arn:aws:execute-api:region_name:account_id:${aws_api_gateway_rest_api.api_resource.id}/*/*"
具有授予访问权限的已配置源
arn:aws:execute-api:region:accountid:fu349z93pa/*/*
Run Code Online (Sandbox Code Playgroud)
从terraform文档中 "${aws_api_gateway_deployment.deployment_rsc_name.execution_arn}"
具有授予访问权限的已配置源是
arn:aws:execute-api:region:accountid:fu349z93pa/stage/*/*
Run Code Online (Sandbox Code Playgroud)
如果从API Gateway控制台进行测试,最终将出现相同的错误,并且必须手动向lambda添加权限或在方法集成控制台上重新选择lambda函数名称(功能相同)。该配置将2个API网关配置为访问Lambda。(一个/stage
部署了ARN,另一个部署了/*/METHOD/*
- used for test console
)
但是,如果您在邮递员上通过舞台环境的ARN测试API网关,则无需对terraform构建的基础架构进行任何手动更新,它的效果就可以正常工作。在大多数情况下,这才是最重要的。
Malformed response from lambda
这是相当容易的,并且有据可查。AWS文档
我们要做的就是更新lambda以指定格式进行响应。
对于。例如在下面添加
callback(null, { "statusCode": 200, "body" : JSON.stringify(sampleResponseJSON) }); on lambda `js`
Run Code Online (Sandbox Code Playgroud)
一旦端到端工作,我们总是可以添加错误处理方案。
希望这可以为像我这样的初学者节省一些时间。
所以不要使用:
resource "aws_lambda_permission" "apigw" {
... ...
source_arn = "${aws_api_gateway_deployment.resource_name_of_deployment.execution_arn}/*/*"
}
Run Code Online (Sandbox Code Playgroud)
我使用该方法从以下位置replace
删除:stage_name
execution_arn
resource "aws_lambda_permission" "apigw" {
... ...
source_arn = "${replace(aws_api_gateway_deployment.resource_name_of_deployment.execution_arn, var.stage_name, "")}*/*"
}
Run Code Online (Sandbox Code Playgroud)
现在一切都适合我
归档时间: |
|
查看次数: |
3397 次 |
最近记录: |