我想使用ebextensions将cloudwatch警报添加到弹性beantalk环境中。
所以我创建了一个.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:aws:elasticloadbalancing:xx-xxxxxx-1:123456789012:loadbalancer/app/awseb-AWSEB-oooooooooooo/12b68287xxxxxxxx
的arn由弹性beantalk创建。在创建环境之前我不知道。
我认为大概可以使用here中描述的功能来获取负载均衡器的信息。但是我还没想办法。
有人知道该怎么做吗?
答案 0 :(得分:1)
根据docs:
当您将此资源的逻辑ID传递给固有的Ref函数时,Ref将返回负载均衡器的Amazon资源名称(ARN)。
因此,如果您使用的是当前负载均衡器(即ALB或NLB,而不是CLB),则应该能够在负载均衡器的逻辑名称上使用Ref
函数:
Value: !Ref MyLoadBalancer
我还发现this list的“内置” beanstalk资源名称对于获取与自动生成以供模板使用的体系结构相关的属性非常有用。
仅供参考,资源的“逻辑名称”通常是您为其分配的名称,作为模板中Resources
属性的子代,例如
Resources:
MyLoadBalancer:
...
MyS3Bucket:
...
此处的逻辑名称为MyLoadBalancer
和MyS3Bucket
。如果尚未定义它们,则使用上面链接中的列表中的名称,因此您的负载均衡器可能是AWSEBLoadBalancer
或AWSEBV2LoadBalancer
,具体取决于它是传统负载均衡器还是当前负载均衡器。< / p>