【问题标题】:AWS ECS Task can't connect to RDS DatabaseAWS ECS 任务无法连接到 RDS 数据库
【发布时间】:2021-07-17 07:17:01
【问题描述】:

我是新的 AWS 用户,今天我在处理一个示例项目时遇到了困难。我成功创建了一个 docker 容器,该容器运行一个简单的 R 脚本,该脚本连接到我的 AWS RDS MySQL 数据库并创建并写入一些基本文件。我构建了一个公共 ECR 存储库,将我的 docker 映像推送到那里,并构建了一个 ECS 集群和任务,选择 Fargate 并使用我的存储库中的容器映像。我的任务运行了,我在查看日志时可以看到正在执行的 R 代码,但它永远无法连接到 SQL 数据库并随后退出。

我必须在 RDS 数据库的安全组中将我自己的 IP 地址列入白名单,以便我可以连接到它,所以我知道我可能必须为我的 ECS 任务也这样做才能建立该连接。但是,该 IP 地址不会因为执行任务的 Fargate 服务器没有静态 IP 而不断变化吗?我正在尝试继续使用免费套餐,因此我不确定是否要为此服务器设置弹性 IP 地址。

如果不是我遇到的同一问题,这两篇文章似乎很接近,但我无法找到解决方案。我没有找到任何其他信息。

https://aws.amazon.com/premiumsupport/knowledge-center/ecs-fargate-task-database-connection/

https://aws.amazon.com/premiumsupport/knowledge-center/ecs-fargate-static-elastic-ip-address/

最终目标是让这个示例项目在预定的固定时间间隔内成功运行,然后在那里运行实际脚本以帮助自动化事情并使我的生活更轻松,所以这个示例项目是朝着这个目标迈出的第一步。任何有关我遇到的问题的帮助或信息将不胜感激!

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-rds amazon-ecs


    【解决方案1】:

    是的,您的任务是短暂的(无论您是手动启动它还是作为 ECS 服务的一部分启动),如果它被替换,它的私有/公共 IP 地址可能会随着时间而改变。使连接规则保持不变的方式是为任务分配一个安全组(我假设它可能在您需要的特定端口上具有入站访问权限,并对所有内容进行出站访问)并将另一个安全组分配给具有为您分配给任务的安全组在端口 3306 上的入站访问(这是诀窍,SG 不会更改,您告诉 RDS 允许访问来自该 SG 的所有流量)。我看到你发布的第一篇文章没有谈论这部分(它应该)。

    【讨论】:

      猜你喜欢
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多