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

Flask容器通过环境变量访问本地SQS容器时endpoint无效报错

解决本地SQS模拟服务的端点无效问题

你遇到的核心问题是协议不匹配——本地的SQS模拟镜像(基于docker-SQS-local)默认只提供HTTP服务,而你配置的端点用了HTTPS,这直接触发了ValueError: Invalid endpoint错误。下面是具体的修复步骤:

1. 修正端点协议(关键操作)

打开你的local_secrets.env文件,把所有以https://开头的URL替换为http://:

QUEUE_ENDPOINT=http://sqs_service:9324
FEEDER_QUEUE_URL=http://sqs_service:9324/queue/feeder
PREDICTION_QUEUE_URL=http://sqs_service:9324/queue/prediction
AWS_ACCESS_KEY_ID=''
AWS_SECRET_ACCESS_KEY=''

本地SQS模拟服务没有配置SSL证书,HTTPS请求会被直接拒绝,改用HTTP就能正常建立通信。

2. 优化Boto3客户端配置

确保你的Boto3客户端代码正确读取修正后的环境变量,同时可以补充显式配置避免潜在问题:

import boto3
import os

sqs_client = boto3.client(
    'sqs',
    endpoint_url=os.getenv("QUEUE_ENDPOINT"),
    region_name='us-east-1',  # 可替换为任意真实AWS区域,部分Boto3版本不支持'default'区域
    aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"),
    aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"),
    use_ssl=False  # 强制禁用SSL,和端点协议保持一致
)

添加use_ssl=False可以避免Boto3自动尝试切换到HTTPS连接。

3. 重启Docker服务使配置生效

修改环境变量后,需要重启docker-compose服务让新配置加载:

docker-compose down
docker-compose up --build

额外验证步骤

  • 查看SQS服务日志:执行docker logs sqs_container,确认feeder和prediction队列已成功创建。
  • 测试网络连通性:进入app_service容器内执行curl http://sqs_service:9324,如果返回SQS模拟服务的页面,说明容器间网络通信正常。

按照以上步骤调整后,应该就能正常访问本地SQS服务并发送消息了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:13:04