我的负载均衡器已经存在,并且不是使用cloudformation创建的。
我将完整的arn作为参数传递给像侦听器一样需要它的资源:
Listener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
DefaultActions:
- Type: forward
TargetGroupArn: !Ref MyTargetGroup
LoadBalancerArn: !Ref LoadBalancerARN
Port: 80
Protocol: HTTP
在这个使用LoadBalacnerArn的模板中,我还希望它输出该负载均衡器的DNSName,这可能吗?
这样做,我可以返回作为参数传入的ARN:
Outputs:
LoadBalancerName:
Description: The DNS Name of the ALB where this container was deploy
Value: !Ref LoadBalancerARN
我试图这样做以获得这样的DNS名称,但出现错误:
Outputs:
LoadBalancerName:
Description: The DNS Name of the ALB where this container was deploy
Value: !GetAtt !Ref LoadBalancerARN.DNSName
有没有办法像这样的!Ref的!GetAtt?
结合其他尝试:
Value:
!GetAtt
- DNSName
- !Ref LoadBalancerARN
这也不起作用
Value:
!GetAtt
- !Ref LoadBalancerARN
- LoadBalancerARN.DNSName
也许我可以做些棘手的事情,例如解析arn以获取dns名称?
答案 0 :(得分:0)
除非负载均衡器是由Cloudformation创建的,否则不能将其称为cloudformation资源。
您将需要通过cloudformation重新创建负载均衡器,以引用诸如DNS名称之类的资源属性。
答案 1 :(得分:0)
除了使用Arn之外,您还可以使用类似的
Fn::Join: [ "", [ "http://", !GetAtt <<LoadBalancerResourceName>>.DNSName ] ]