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

如何在.ebextensions中动态获取Elastic Beanstalk负载均衡器的ARN?

获取Elastic Beanstalk自动创建的ALB ARN用于CloudWatch告警配置

你遇到的这个问题很常见——硬编码EB自动生成的ALB ARN确实不灵活,每次环境重建或者更新都得手动修改,完全不符合基础设施即代码的理念。

其实Elastic Beanstalk在创建ALB时,会在底层的CloudFormation栈里给这个负载均衡器分配一个固定的逻辑ID:AWSEBApplicationLoadBalancer(这正好对应你配置里用的AWS/ApplicationELB命名空间)。你只需要用CloudFormation的Ref函数引用这个ID,就能动态获取到当前环境ALB的ARN了。

修改后的.ebextensions/cloudwatch-alarms.config配置如下:

Resources:
  ELBLatencyAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": HIGH ELB latency." ]]}
      Namespace: AWS/ApplicationELB
      MetricName: Latency
      Dimensions:
        - Name: LoadBalancer
          Value : { "Ref" : "AWSEBApplicationLoadBalancer" }
      Statistic: Average
      Period: 300
      EvaluationPeriods: 1
      Threshold:
        Fn::GetOptionSetting:
          OptionName: ELBLatency
          DefaultValue: "0.5"
      ComparisonOperator: GreaterThanThreshold

补充说明:

  • 如果你使用的是Network Load Balancer,对应的逻辑ID是AWSEBNetworkLoadBalancer,替换掉配置里的引用即可。
  • 如果你还在使用Classic Load Balancer(现在不太推荐),逻辑ID是AWSEBLoadBalancer,同时记得把命名空间改成AWS/ELB。

这样配置后,不管你重建多少次EB环境,CloudWatch告警都会自动关联到当前环境的ALB,再也不用手动更新ARN了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:23:10