如何在VPC内以自定义域名访问AppRunner中的私有服务?
可行,以下是几种实现方式:
1. 利用Route 53私有托管区做DNS解析
这是最直接的无额外部署方案:
- 登录AWS控制台进入Route 53,创建私有托管区,域名直接设为
employee-service并关联你的目标VPC。 - 在托管区内添加CNAME记录,将
employee-service(或空主机记录@)指向AppRunner私有端点bf8dsd7yud.myregion.awsapprunner.com。 - 配置完成后,VPC内资源发起请求时,
https://employee-service/会被解析到AppRunner端点。 - 注意:AppRunner的HTTPS证书仅对
*.myregion.awsapprunner.com有效,用employee-service访问会出现证书不匹配错误,若需验证证书需配合反向代理使用。
2. 部署VPC内反向代理(以Nginx为例)
此方案可解决HTTPS证书验证问题:
- 在VPC内的EC2实例或EKS Pod中部署Nginx。
- 配置Nginx反向代理规则,将
employee-service的请求转发到AppRunner端点:server { listen 443 ssl; server_name employee-service; ssl_certificate /path/to/your/certificate.pem; ssl_certificate_key /path/to/your/private-key.pem; location / { proxy_pass https://bf8dsd7yud.myregion.awsapprunner.com/; proxy_set_header Host bf8dsd7yud.myregion.awsapprunner.com; } } - 在AWS ACM申请
employee-service域名的证书,挂载到Nginx(EC2可直接集成ACM,EKS用Secret挂载)。 - 在Route 53私有托管区将
employee-service指向Nginx的私网IP或EKS Service地址。 - 此时VPC内客户端访问
https://employee-service/可获得有效HTTPS证书,请求会转发到AppRunner服务。
3. 结合EKS的Service与Endpoint(适用于EKS环境)
若服务主要在EKS集群内访问,可模拟ClusterIP体验:
- 创建ClusterIP类型的Kubernetes Service,命名为
employee-service:apiVersion: v1 kind: Service metadata: name: employee-service spec: ports: - port: 443 targetPort: 443 clusterIP: None # 或自动分配,按需选择 - 创建对应Endpoint,填入AppRunner私有端点的IP(通过
nslookup bf8dsd7yud.myregion.awsapprunner.com获取):apiVersion: v1 kind: Endpoints metadata: name: employee-service subsets: - addresses: - ip: x.x.x.x # 替换为AppRunner端点的实际IP ports: - port: 443 - 集群内Pod可直接通过
https://employee-service/访问,VPC内其他资源需通过Route 53将employee-service解析到该Service的ClusterIP。 - 注意:AppRunner的IP可能变更,此方式灵活性不如CNAME,适合IP相对稳定的场景。
内容的提问来源于stack exchange,提问作者RamPrakash
相关产品推荐
相关产品推荐

