我使用 docker-compose 在 2 个独立的容器中运行 python API 和 Localstack 实例,以进行本地开发。
该 API 有一个端点,可生成预签名的 AWS S3 URL 并重定向用户,以便直接从 S3 加载图像。
在本地开发中,API 使用 localstack 容器的地址作为自定义端点 url 实例化 boto3 客户端(即:boto3.client("s3",endpoint_url="http://localstack:4566")
),它允许 API 访问 localstack 容器内的资源。
问题是 boto3 客户端返回的预签名 URL 使用localstack
地址,浏览器无法加载它,因为 localstack 资源暴露给主机,位于http://localhost:4566
.
如果我尝试将 aws resources 端点 url 设置为localhost
在 boto3 客户端实例化中,在容器内运行的 API 将在其自己的容器的本地主机中查找 AWS 资源,而不是暴露本地堆栈资源的主机。
有没有办法使用相同的地址从主机的浏览器和不同的容器访问在 docker 容器中运行的 localstack 资源?
[编辑]我在 mac 上使用 docker,以防发生任何变化[/编辑]
也许你可以给host.docker.internal:4566
尝试一下,因为很可能 localstack 服务将是唯一监听它的服务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)