Terraform - 如何启用 API Gateway 执行日志记录?

Posted

技术标签:

【中文标题】Terraform - 如何启用 API Gateway 执行日志记录?【英文标题】:Terraform - How to enable API Gateway execution logging? 【发布时间】:2019-02-08 21:31:01 【问题描述】:

问题

如何使用 Terraform 设置 API Gateway 阶段级执行日志记录?还不支持吗?

背景

API Gateway 阶段编辑器具有execution logging 配置。但是,似乎没有参数可以在aws_api_gateway_stage 中设置它们,尽管它具有access loggging 配置参数。

想知道是否还有其他资源可以使用,或者只是那些参数尚未实现。

【问题讨论】:

【参考方案1】:

你必须使用aws_api_gateway_method_settings ...

resource "aws_api_gateway_method_settings" "YOUR_settings" 
  rest_api_id = "$aws_api_gateway_rest_api.YOUR.id"
  stage_name  = "$aws_api_gateway_stage.YOUR.stage_name"
  method_path = "*/*"
  settings 
    logging_level = "INFO"
    data_trace_enabled = true
    metrics_enabled = true
  

CloudWatch 日志组应如下所示 API-Gateway-Execution-Logs_YOU_API_ID/YOU_STAGENAME

...也许您必须设置所有 IAM 角色的东西...

【讨论】:

您是否知道如何将该日志组名称配置为对其目的更加自定义和透明的名称?我有一个问题,将来我会有多个 api-gateway 项目,我想相应地命名它们 需要注意的关键是method_part决定了设置是针对整个stage还是只针对那个stage的特定方法。当 method_part 设置为“/”时,aws_api_gateway_method_settings 确定整个阶段的设置。文档中有这个“method_path -(必需)方法路径定义为 resource_path/http_method 用于单个方法覆盖,或 / 用于覆盖阶段中的所有方法。”【参考方案2】:

您可以在整个“阶段”级别设置这些日志记录级别,也可以覆盖阶段级别并在方法级别定义它,如本例所示:(请注意此处的“method_path”值)

resource "aws_api_gateway_method_settings" "s" 
rest_api_id = aws_api_gateway_rest_api.test.id
stage_name  = aws_api_gateway_stage.test.stage_name
method_path = 
"$aws_api_gateway_resource.test.path_part/$aws_api_gateway_method.test.http_method"

settings 
metrics_enabled = true
logging_level   = "INFO"


在这里找到:

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_method_settings

参见此处:

https://github.com/terraform-providers/terraform-provider-aws/issues/4448

【讨论】:

以上是关于Terraform - 如何启用 API Gateway 执行日志记录?的主要内容,如果未能解决你的问题,请参考以下文章

为 GCS 与 Terraform 启用“互操作”访问?

如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig

Terraform azurerm_application_gateway 配置容量自动缩放设置

如何在 terraform 语句中启用 s3 复制存储桶权限

如何在 terraform 中由 AKS 群集资源创建的虚拟机规模集或负载均衡器上启用诊断日志?

如何使用 terraform gke 模块启用 gce_persistent_disk_csi_driver_config