[英]Enable CloudWatch logs for AWS API Gateway using Terraform
我正在使用 OpenAPI 3.0 规范部署 AWS API 网关。 我无法弄清楚如何为部署启用云监视日志。
这是 terraform 代码:
data "template_file" "test_api_swagger" {
template = file(var.api_spec_path)
vars = {
//ommitted
}
}
resource "aws_api_gateway_rest_api" "test_api_gateway" {
name = "test_backend_api_gateway"
description = "API Gateway for some x"
body = data.template_file.test_api_swagger.rendered
endpoint_configuration {
types = ["REGIONAL"]
}
}
resource "aws_api_gateway_deployment" "test_lambda_gateway" {
rest_api_id = aws_api_gateway_rest_api.test_api_gateway.id
stage_name = var.env
}
我检查了 Amazon OpenAPI 扩展,似乎没有一个有这个选项。 我看到的唯一方法是使用在这种情况下我无法使用的 api_gateway_method_settings 。
我认为 terraform 不支持它。 我目前正在使用terraform 配置程序在创建部署后运行 aws cli 命令,如下例所示:
我提供的示例是启用 XRay 跟踪。 您需要研究用于 CloudWatch 日志的正确路径和值。 您可以在文档中找到更多信息。
resource "aws_api_gateway_deployment" "test_lambda_gateway" {
rest_api_id = aws_api_gateway_rest_api.test_api_gateway.id
stage_name = var.env
provisioner "local-exec" {
command = "aws apigateway update-stage --region ${data.aws_region.current.name} --rest-api-id ${aws_api_gateway_rest_api.test_api_gateway.id} --stage-name ${var.env} --patch-operations op=replace,path=/tracingEnabled,value=true"
}
}
您只需在 terraform 模板中引用 aws 数据提供程序:
data "aws_region" "current" {}
即使您使用 OpenAPI 导入创建网关,您仍然可以使用 api_gateway_method_settings 来引用阶段,假设您按照推荐使用阶段。 请参阅AWS 文档。 根据示例,您只需在 method_path 上指示“*/*”。
resource "aws_api_gateway_stage" "example" {
deployment_id = aws_api_gateway_deployment.test_lambda_gateway.id
rest_api_id = aws_api_gateway_rest_api.test_api_gateway.id
stage_name = "example"
}
resource "aws_api_gateway_method_settings" "all" {
rest_api_id = aws_api_gateway_rest_api.test_api_gateway.id
stage_name = aws_api_gateway_stage.example.stage_name
method_path = "*/*"
settings {
logging_level = "INFO"
}
}
这应该在网关上为所有具有 INFO 级别日志记录的请求设置日志记录,就像您在舞台上的控制台中完成的一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.