首页 > 解决方案 > 如何使用 gRPC 将 HOST 标头传递给 AWS ALB

问题描述

我成功地创建了一个支持带有私有自签名证书的 gRPC 的 ALB;Host但是,我计划使用此 ALB 根据ALB 支持的标头对 gRPC 请求进行内容路由。直到现在,我尝试都无济于事。有没有人在这方面取得成功?这是我的代码:

import json
import grpc
import base64
from lib import unified_pb2
from lib import unified_pb2_grpc

# Setup
uri = 'internal-test-lb-micky-18886655.us-east-2.elb.amazonaws.com'
with open('server.crt', 'rb') as f:
    trusted_certs = f.read()
    credentials = grpc.ssl_channel_credentials(root_certificates=trusted_certs)
    channel = grpc.secure_channel(f'{uri}:443', credentials)

metadata=( ('host', 'qa.mydomain.com'),)

cf_greeters_stub = unified_pb2_grpc.GreetersStub(channel)
cf_request = unified_pb2.Request()
cf_request.cf_greeters_request.greeter_text = "hello"
data = cf_greeters_stub.GetResponse(cf_request,metadata=metadata)
print(data)

我的 ALB 具有拦截Host标头的规则,并应基于该规则路由到正确的目标组,但是 ALB 没有这样做,将请求传递给默认规则。我创建的规则在200匹配时返回,在正文中返回 JSON 字典。

标签: grpcaws-application-load-balancergrpc-python

解决方案


推荐阅读