我想使用 ebextensions 将 cloudwatch 警报添加到弹性 beanstalk 环境。
因此,我创建了一个 .ebextensions/cloudwatch-alarms.confg
文件,如下所示:
Resources:
ELBLatencyAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": HIGH ELB latency." ]]}
Namespace: AWS/ApplicationELB
MetricName: Latency
Dimensions:
- Name: LoadBalancer
Value : "arn:aws:elasticloadbalancing:xx-xxxxxx-1:123456789012:loadbalancer/app/awseb-AWSEB-oooooooooooo/12b68287xxxxxxxx"
Statistic: Average
Period: 300
EvaluationPeriods: 1
Threshold:
Fn::GetOptionSetting:
OptionName: ELBLatency
DefaultValue: "0.5"
ComparisonOperator: GreaterThanThreshold
我还没弄清楚的一件事是如何使用函数来获取负载均衡器的 ARN。
负载均衡器的 arn,arn:aws:elasticloadbalancing:xx-xxxxxx-1:123456789012:loadbalancer/app/awseb-AWSEB-oooooooooooo/12b68287xxxxxxxx
由 Elastic beanstalk 创建。在环境创建之前我不知道。
我想我可能可以使用 here 描述的函数来获取负载均衡器的 arn。但我还没想好怎么做。
有人知道怎么做吗?
最佳答案
根据docs :
When you pass the logical ID of this resource to the intrinsic Ref function, Ref returns the Amazon Resource Name (ARN) of the load balancer.
因此,如果您使用的是当前一代的负载均衡器(即 ALB 或 NLB,而不是 CLB),则应该能够在负载均衡器的逻辑名称上使用 Ref
函数:
Value: !Ref MyLoadBalancer
我还发现了this list “内置”beanstalk 资源名称对于获取与自动生成的架构片段相关的属性非常有用,以便在模板中使用。
仅供引用,资源的“逻辑名称”通常是您分配给它的名称,作为模板中 Resources
属性的子级,例如
Resources:
MyLoadBalancer:
...
MyS3Bucket:
...
这里的逻辑名称是MyLoadBalancer
和MyS3Bucket
。如果您尚未定义它们,则使用上面链接的列表中的名称,因此您的负载均衡器可能是 AWSEBLoadBalancer
或 AWSEBV2LoadBalancer
,具体取决于它是经典的还是当前的-gen 负载均衡器。
关于amazon-web-services - 如何在 .ebextensions 中获取负载均衡器的 ARN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723251/