如何在AWS Fargate中托管OSRM实例



我一直在尝试在Fargate中设置一个OSRM后端实例。然而,我还没能成功地做到这一点。我在其他地方读过关于如何在EC2实例中托管的文章,但没有关于如何在AWS Fargate上托管的文章。

我已经能够修改下面OSRM后端的基本docker映像(基本映像暴露端口5000(:

FROM osrm/osrm-backend
WORKDIR /data
RUN apt-get update && apt-get install -y --no-install-recommends curl
RUN curl http://download.geofabrik.de/europe/ireland-and-northern-ireland-latest.osm.pbf --output ni-latest.osm.pbf && 
osrm-extract -p /opt/car.lua ni-latest.osm.pbf && 
osrm-partition ni-latest.osrm && 
osrm-customize ni-latest.osrm
CMD ["osrm-routed", "--algorithm", "mld", "ni-latest.osrm", "--max-matching-size","50000"]

一旦我把它推到容器注册表中,在弹性容器服务中设置任务定义,就会给出状态代码200,如下所示:

[info] starting up engines, v5.22.0
[info] Threads: 4
[info] IP address: 0.0.0.0
[info] IP port: 5000
[info] http 1.1 compression handled by zlib version 1.2.11
[info] Listening on: 0.0.0.0:5000
[info] running and waiting for requests

然而,在ECS任务中给定了公共IP,并尝试在sagemaker笔记本中调用它之后,它会按预期运行:

response = requests.get('http://{ECSpublicIP}:80/match/v1/driving/13.388860,52.517037;13.397634,52.529407?overview=full&geometries=geojson')

它给出了一个连接错误代码111,我一直不知道为什么。在Fargate上托管OSRM可能吗?

感谢

很抱歉延迟回复,不知道这是否仍然相关,但是的,这应该是可能的。在本地部署时,您是否能够通过localhost访问它?此外,请确保您的容器端口映射到位,有关任务网络的更多信息,请参阅此链接https://aws.amazon.com/blogs/compute/task-networking-in-aws-fargate/

最新更新