如何从 localstack 中的 Lambda 函数连接到 mysql?
How do I connect to mysql from a Lambda function in localstack?
我已经在 docker 上设置了 localstack 运行ning。我有一个 .Net Core 2.1 c# Lambda 函数正在尝试连接到本地主机上的 MySql 数据库。这是我在控制台中得到的:
"Unable to connect to any of the specified MySQL hosts"
这是我的连接字符串的样子:
"Data Source=localhost;Initial Catalog=xxx;Host=localhost;Connection Timeout=10;User ID=xxxx;Password=xxxx;SSL Mode=none"
我尝试了各种 IP 地址(127...等),包括我们的实时数据库连接字符串。
编辑(2019 年 4 月 23 日):
命令 I 运行 在 localstack 文件夹上:
docker-compose up
这是我正在使用的 docker 文件:
version: '2.1'
services: localstack:
image: localstack/localstack
ports:
- "4567-4593:4567-4593"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=lambda,sqs,dynamodb,s3
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
- PORT_WEB_UI=${PORT_WEB_UI- }
- LAMBDA_EXECUTOR=docker-reuse
- KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
所以我自己解决了这个问题,毕竟我只是在犯傻...
我必须将 MySql 连接字符串的 "host" 从 "localhost" 更新为以太网适配器 IP 的 IP 地址,如下所示:
"Data Source=172.x.x.x;Initial Catalog=xxx;Host=localhost;Connection Timeout=10;User ID=xxxx;Password=xxxx;SSL Mode=none"
我已经在 docker 上设置了 localstack 运行ning。我有一个 .Net Core 2.1 c# Lambda 函数正在尝试连接到本地主机上的 MySql 数据库。这是我在控制台中得到的:
"Unable to connect to any of the specified MySQL hosts"
这是我的连接字符串的样子:
"Data Source=localhost;Initial Catalog=xxx;Host=localhost;Connection Timeout=10;User ID=xxxx;Password=xxxx;SSL Mode=none"
我尝试了各种 IP 地址(127...等),包括我们的实时数据库连接字符串。
编辑(2019 年 4 月 23 日): 命令 I 运行 在 localstack 文件夹上:
docker-compose up
这是我正在使用的 docker 文件:
version: '2.1'
services: localstack:
image: localstack/localstack
ports:
- "4567-4593:4567-4593"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=lambda,sqs,dynamodb,s3
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
- PORT_WEB_UI=${PORT_WEB_UI- }
- LAMBDA_EXECUTOR=docker-reuse
- KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
所以我自己解决了这个问题,毕竟我只是在犯傻...
我必须将 MySql 连接字符串的 "host" 从 "localhost" 更新为以太网适配器 IP 的 IP 地址,如下所示:
"Data Source=172.x.x.x;Initial Catalog=xxx;Host=localhost;Connection Timeout=10;User ID=xxxx;Password=xxxx;SSL Mode=none"