我有一个正在运行的容器(如果更具体的话,可以使用wordpress容器),它试图连接到mysql rds实例。
fargate ecs服务容器的参数:
{
"executionRoleArn": "ignore-this",
"containerDefinitions": [
{
"name": "MyCoolContainer",
"image": "wordpress:latest",
"essential": true,
"environment": [
{"name": "WORDPRESS_DB_HOST", "value": "host:3306"},
{"name": "WORDPRESS_DB_USER", "value": "user"},
{"name": "WORDPRESS_DB_PASSWORD", "value": "password"},
{"name": "WORDPRESS_DB_NAME", "value": "name"}
],
"portMappings": [
{
"hostPort": 80,
"protocol": "tcp",
"containerPort": 80
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/aws/ecs/fargate/prefix",
"awslogs-region": "eu-west-1",
"awslogs-stream-prefix": "prefix"
}
}
}
],
"requiresCompatibilities": [
"FARGATE"
],
"networkMode": "awsvpc",
"cpu": "256",
"memory": "512",
"family": "wordpress"
} 另外,对于安全组,我为任何IP地址打开了22、80、443、3306端口。
但是,ECS中的容器仍然不能从以下原因开始:
17-2019 08:42:24 UTC PHP警告: mysqli::__construct():(HY000/2002):在第22行标准输入代码中超时的连接
MySQL连接错误:(2002)连接超时
MySQL连接错误:(2002)连接超时
但是,当尝试使用命令从本地计算机连接时,我可以确保RDS实例是可访问的:
mysql -uuser -ppassword -hhost -P3306此外,我可以确保(wordpress)容器成功地在本地机器上运行,并成功地连接到没有超时的远程RDS数据库。
编辑--这是我的环境在ECS面板中的样子:(我尝试将这些值复制到本地命令中并成功连接。)

我怀疑aws服务配置有问题。有什么想法吗?
发布于 2019-09-22 20:59:56
多亏了Adiii和其他一些在互联网上找到的文章,我对这个问题有了一个完整的解决方案。
您只需将NAT网关附加到启动ECS Fargate实例的子网。
简单地在带有Internet网关的公共子网中启动并不能解决这个问题(尽管逻辑上认为应该这样做)。
TL;DR:
需要NAT网关。AWS是f*d。
https://stackoverflow.com/questions/57970938
复制相似问题