You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK Python调用ALB metric_http_code_elb报AttributeError

问题描述

Python环境下使用AWS CDK开发,引用已有ALB资源并调用其metric_http_code_elb方法时,抛出如下属性错误:

AttributeError: '<class 'aws_cdk.Resource'>+<class 'aws_cdk.aws_elasticloadbalancingv2._IApplicationLoadBalancerProxy'>' object has no attribute 'metric_http_code_elb'.
复现代码
load_balancer = elbv2.ApplicationLoadBalancer.from_lookup(
    self,
    "ALB",
    load_balancer_arn="arn:aws:elasticloadbalancing:ap-south-1:345396902820:loadbalancer/app/QA-Env-Public-ALB/573f88222ed64875"
)        
http_5xx_metric = load_balancer.metric_http_code_elb()
根因分析
  • from_lookup方法返回的是IApplicationLoadBalancer接口的代理对象,不是ApplicationLoadBalancer实体类实例
  • metric_http_code_elb这类指标便捷构造方法,仅在ALB实体类上实现,接口代理类未定义对应方法,直接调用就会触发属性不存在的报错
解决方案

放弃调用实例自带的指标方法,手动构造CloudWatch指标对象即可,效果和内置方法完全一致,参考实现:

from aws_cdk import Duration
from aws_cdk import aws_cloudwatch as cw

load_balancer = elbv2.ApplicationLoadBalancer.from_lookup(
    self,
    "ALB",
    load_balancer_arn="arn:aws:elasticloadbalancing:ap-south-1:345396902820:loadbalancer/app/QA-Env-Public-ALB/573f88222ed64875"
)

http_5xx_metric = cw.Metric(
    namespace="AWS/ApplicationELB",
    metric_name="HTTPCode_ELB_5XX_Count",
    dimensions_map={
        "LoadBalancer": load_balancer.load_balancer_full_name
    },
    period=Duration.minutes(1),
    statistic="Sum"
)

提示:其他ALB相关指标(包括目标组维度、监听器维度的指标)都可以通过该方式手动构造,只需要对应调整指标名、维度参数即可。


内容的提问来源于stack exchange,提问作者shikha singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:15:29