You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS CDK搭建的应用服务器无法公网访问,疑因安全组配置问题

问题排查与解决方案

核心问题分析

  • 你将RDS的安全组直接绑定给了Fargate服务,这是关键错误。RDS安全组仅开放了5432端口供自身访问,完全未允许负载均衡访问Fargate任务的3000端口,导致互联网请求到达负载均衡后,无法转发到容器。
  • 负载均衡配置的指向RDS安全组3000端口的出站规则毫无意义,Fargate任务需要接收来自负载均衡的入站请求,而非负载均衡主动向RDS安全组发起出站请求。

数据库安全组配置(无需改动)

你的RDS安全组配置是正确的,规则允许Multi-AZ部署下的RDS实例互相访问5432端口,默认出站规则允许所有流量,足够Fargate任务连接数据库:

const securityGroup = new ec2.SecurityGroup(this, 'RdsSecurityGroup', {
  vpc,
  securityGroupName: SECURITY_GROUP_NAME,
});
securityGroup.addIngressRule(securityGroup, ec2.Port.tcp(5432));

Fargate服务安全组正确配置

需要为Fargate服务单独创建安全组,不要复用RDS的安全组:

1. 创建Fargate专用安全组

在集群栈代码中添加:

// 创建Fargate服务专属安全组
const fargateSecurityGroup = new ec2.SecurityGroup(this, 'FargateServiceSecurityGroup', {
  vpc,
  description: '允许负载均衡访问Fargate任务的3000端口',
});

2. 允许负载均衡访问Fargate的3000端口

ApplicationLoadBalancedFargateService会自动创建负载均衡的安全组,我们需要让Fargate安全组允许来自该安全组的3000端口入站流量:

// 允许负载均衡安全组访问Fargate任务的3000端口
fargateSecurityGroup.addIngressRule(
  ec2.Peer.securityGroupId(service.loadBalancer.securityGroupId),
  ec2.Port.tcp(3000),
  'Allow ALB to reach Fargate task on port 3000'
);

3. 更新Fargate服务配置并允许访问RDS

将Fargate服务的安全组替换为新创建的专用安全组,同时给RDS安全组添加规则,允许Fargate任务访问5432端口:

const service = new ecs_patterns.ApplicationLoadBalancedFargateService(this, 'FargateService', {
  cluster: cluster,
  cpu: 1,
  desiredCount: 1,
  domainName: DOMAIN_NAME,
  domainZone: hostedZone,
  enableExecuteCommand: true,
  memoryLimitMiB: 1024,
  protocol: ApplicationProtocol.HTTPS,
  publicLoadBalancer: true,
  redirectHTTP: true,
  securityGroups: [fargateSecurityGroup], // 替换为Fargate专用安全组
  taskDefinition: taskDefinition,
});

// 允许Fargate任务访问RDS的5432端口
rdsSsecurityGroup.addIngressRule(
  fargateSecurityGroup,
  ec2.Port.tcp(5432),
  'Allow Fargate tasks to connect to RDS'
);

负载均衡规则修正

删除负载均衡上指向RDS安全组3000端口的出站规则,负载均衡默认的出站规则已允许所有流量,足够转发请求到Fargate任务。

验证步骤

  • 部署修改后的CDK栈:cdk deploy
  • 等待部署完成后,访问你的域名,确认Rails应用可正常访问
  • 再次执行aws execute-command进入容器,验证数据库连接依然正常

内容的提问来源于stack exchange,提问作者patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:37:06