AWS ALB 侦听器 - https 和 http
AWS ALB listeners - both https and http
我在 https/443 上有一个带侦听器的 ALB,它将请求转发到附加到 Fargate 服务的目标组。
此 ALB 对 Internet 开放,也是具有一些其他内部服务的特殊 VPC 的一部分,具有内部域 (xxx.local)。
我想使用 xxx.local 从 VPC 内部调用 alb,但我想允许它成为 http/8000 请求。
当我在 http/8000 上添加另一个将请求转发到同一目标组的侦听器时 - 它不起作用。如果我将转发规则替换为重定向规则 https/443,它仍然不起作用。
任何帮助将不胜感激!
已编辑:添加了下图 - 两个听众都转发到同一组
我已经使用 cloudformation 堆栈创建了所有资源,这里是相关部分。我已将其更改为 2 个 TG,但仍然只有 443 可用...
这里是堆栈的相关代码:
TargetGroup1:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Name: TargetGroup1
Protocol: HTTP
Port: 8000
TargetType: ip
...
TargetGroup2:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Name: TargetGroup2
Protocol: HTTP
Port: 8000
TargetType: ip
...
Listener443:
Type: AWS::ElasticLoadBalancingV2::Listener
DependsOn:
...
Properties:
Certificates:
...
DefaultActions:
- TargetGroupArn: !Ref 'TargetGroup1'
Type: 'forward'
LoadBalancerArn: !Ref 'TheAlb'
Port: 443
Protocol: HTTPS
SslPolicy: ELBSecurityPolicy-2016-08
Listener8000:
Type: AWS::ElasticLoadBalancingV2::Listener
DependsOn:
...
Properties:
DefaultActions:
- TargetGroupArn: !Ref 'TargetGroup2'
Type: 'forward'
LoadBalancerArn: !Ref 'TheAlb'
Port: 8000
Protocol: HTTP
FargateService:
Type: AWS::ECS::Service
DependsOn:
...
Properties:
...
LoadBalancers:
- ContainerName: ContainerName
ContainerPort: ContainerPort
TargetGroupArn: !Sub
- "arn:aws:elasticloadbalancing:${AWS::Region}:${AWS::AccountId}:${tgFullName}"
- tgFullName: !GetAtt 'TargetGroup1.TargetGroupFullName'
- ContainerName: ContainerName
ContainerPort: ContainerPort
TargetGroupArn: !Sub
- "arn:aws:elasticloadbalancing:${AWS::Region}:${AWS::AccountId}:${tgFullName}"
- tgFullName: !GetAtt 'TargetGroup2.TargetGroupFullName'
创建第二个目标组并编辑 8000 侦听器以改为使用该目标组。在向导期间,它只会创建 1 个目标组
我在 https/443 上有一个带侦听器的 ALB,它将请求转发到附加到 Fargate 服务的目标组。
此 ALB 对 Internet 开放,也是具有一些其他内部服务的特殊 VPC 的一部分,具有内部域 (xxx.local)。
我想使用 xxx.local 从 VPC 内部调用 alb,但我想允许它成为 http/8000 请求。
当我在 http/8000 上添加另一个将请求转发到同一目标组的侦听器时 - 它不起作用。如果我将转发规则替换为重定向规则 https/443,它仍然不起作用。
任何帮助将不胜感激!
已编辑:添加了下图 - 两个听众都转发到同一组
我已经使用 cloudformation 堆栈创建了所有资源,这里是相关部分。我已将其更改为 2 个 TG,但仍然只有 443 可用... 这里是堆栈的相关代码:
TargetGroup1:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Name: TargetGroup1
Protocol: HTTP
Port: 8000
TargetType: ip
...
TargetGroup2:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Name: TargetGroup2
Protocol: HTTP
Port: 8000
TargetType: ip
...
Listener443:
Type: AWS::ElasticLoadBalancingV2::Listener
DependsOn:
...
Properties:
Certificates:
...
DefaultActions:
- TargetGroupArn: !Ref 'TargetGroup1'
Type: 'forward'
LoadBalancerArn: !Ref 'TheAlb'
Port: 443
Protocol: HTTPS
SslPolicy: ELBSecurityPolicy-2016-08
Listener8000:
Type: AWS::ElasticLoadBalancingV2::Listener
DependsOn:
...
Properties:
DefaultActions:
- TargetGroupArn: !Ref 'TargetGroup2'
Type: 'forward'
LoadBalancerArn: !Ref 'TheAlb'
Port: 8000
Protocol: HTTP
FargateService:
Type: AWS::ECS::Service
DependsOn:
...
Properties:
...
LoadBalancers:
- ContainerName: ContainerName
ContainerPort: ContainerPort
TargetGroupArn: !Sub
- "arn:aws:elasticloadbalancing:${AWS::Region}:${AWS::AccountId}:${tgFullName}"
- tgFullName: !GetAtt 'TargetGroup1.TargetGroupFullName'
- ContainerName: ContainerName
ContainerPort: ContainerPort
TargetGroupArn: !Sub
- "arn:aws:elasticloadbalancing:${AWS::Region}:${AWS::AccountId}:${tgFullName}"
- tgFullName: !GetAtt 'TargetGroup2.TargetGroupFullName'
创建第二个目标组并编辑 8000 侦听器以改为使用该目标组。在向导期间,它只会创建 1 个目标组