You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Fargate部署两个Streamlit应用并通过路径访问?

可行部署方案:ECS + ALB(可选API Gateway)实现多Streamlit应用子路径访问

步骤1:调整Streamlit应用启动参数

Streamlit默认使用根路径,必须配置baseUrlPath才能支持子路径访问,否则静态资源会404。更新你的容器启动命令:

  • App1启动命令:
    streamlit run app1.py --server.baseUrlPath /app1 --server.enableCORS false --server.enableXsrfProtection false
    
  • App2启动命令:
    streamlit run app2.py --server.baseUrlPath /app2 --server.enableCORS false --server.enableXsrfProtection false
    

更新镜像后重新推送到ECR。

步骤2:ECS Fargate 任务与服务配置

2.1 创建任务定义

  • 分别创建两个任务定义(例如app1-task-def、app2-task-def),选择对应ECR镜像。
  • 容器端口映射:容器端口填8501,主机端口留空(Fargate自动分配)。
  • 网络模式选择awsvpc,任务/执行角色用默认ECS权限角色即可。

2.2 创建ECS服务(带ALB路径转发)

  • 分别创建两个Fargate服务(app1-service、app2-service),关联各自任务定义。
  • 网络配置:选你的VPC和2个以上公有子网,开启“分配公有IP”(POC场景简化网络配置)。
  • 负载均衡配置:
    1. 创建新的Application Load Balancer(ALB),HTTP监听器端口设为80。
    2. 为每个服务创建独立目标组:
      • App1目标组:路径规则设为/app1/*,目标端口8501。
      • App2目标组:路径规则设为/app2/*,目标端口8501。
    3. 在ALB的HTTP监听器中添加路由规则:
      • 路径匹配/app1/* → 转发到App1目标组。
      • 路径匹配/app2/* → 转发到App2目标组。
  • 安全组配置:ECS服务安全组允许ALB访问8501端口;ALB安全组允许外部80端口流量。

完成后,直接用ALB的域名访问:ALB_DNS/app1、ALB_DNS/app2即可打开对应应用。

步骤3:API Gateway 统一入口配置(可选)

如果需要用API Gateway作为统一访问入口,按以下操作:

  • 创建REST API,在根资源下创建/app1、/app2两个子资源。
  • 为每个子资源添加ANY方法,集成类型选HTTP,集成端点填ALB_DNS/app1(对应App1)和ALB_DNS/app2(对应App2),开启代理集成(自动转发所有请求方法和参数)。
  • 部署API到任意阶段(例如prod),之后通过API_GATEWAY_URL/prod/app1、API_GATEWAY_URL/prod/app2访问应用。

核心注意事项

  • 必须配置Streamlit的baseUrlPath,否则页面静态资源会加载失败。
  • 所有网络组件(ECS服务、ALB、API Gateway)的安全组要确保流量互通。

内容的提问来源于stack exchange,提问作者Btibert3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:15:33