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

问题

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

背景

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

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

【问题讨论】:

    标签: aws-api-gateway amazon-cloudwatch terraform-provider-aws


    【解决方案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"
    }
    }
    

    在这里找到:

    参见此处:

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 2018-01-07
      • 2020-05-27
      • 2020-03-21
      • 2021-03-16
      • 2019-07-25
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多