我是 AWS CDK 世界的新手。我正在尝试为 API 网关启用指标,因此在创建 API 时我做了以下操作(特别是对于
deploy_options
,它应该执行指标操作)
api = aws_apigateway.RestApi(
stack,
id_,
rest_api_name=name,
description=description,
endpoint_configuration=aws_apigateway.EndpointConfiguration(
types=[aws_apigateway.EndpointType.PRIVATE], vpc_endpoints=[vpce]
),
policy=my_policy_document,
deploy_options=aws_apigateway.StageOptions(
metrics_enabled=True,
logging_level=aws_apigateway.MethodLoggingLevel.INFO,
data_trace_enabled=True,
tracing_enabled=True, # Enable X-Ray tracing
),
)
# Retrieve and output various metrics
error_4xx_metric = api.metric_client_error()
error_5xx_metric = api.metric_server_error()
latency_metric = api.metric_latency()
request_count_metric = api.metric_count()
core.CfnOutput(stack, f"{id_}4xxErrorMetric", value=error_4xx_metric.metric_name)
core.CfnOutput(stack, f"{id_}5xxErrorMetric", value=error_5xx_metric.metric_name)
core.CfnOutput(stack, f"{id_}LatencyMetric", value=latency_metric.metric_name)
core.CfnOutput(
stack, f"{id_}RequestCountMetric", value=request_count_metric.metric_name
)
我可以在 CloudFormation 中看到预期的输出,但是当我尝试在 API Gateway 仪表板(甚至在 CloudWatch Metrics)中检查它们时,我根本看不到任何指标。这让我发疯,我花了一天的大部分时间试图让这项工作成功。
PS:API Gateway > Stages下的日志和跟踪已启用:
我缺少什么?
因此有两件事可能导致此问题:
1 - 您需要确保与 API 网关关联的 IAM 角色具有将指标和日志写入 CloudWatch 的正确权限:
cloudwatch:PutMetricData
logs:CreateLogStream
logs:PutLogEvents
这些权限应该是与 API 网关执行角色关联的策略的一部分。
2 - 日志可能需要一些时间才能显示,您是否尝试发送许多请求然后检查日志?