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

CircleCI配置添加AWS RDS白名单失败,测试无法连接数据库

CircleCI 添加IP白名单后无法连接AWS RDS数据库

我配置了CircleCI用于合并到master分支前运行测试,启动服务器后需要连接受安全组保护的AWS RDS数据库,但尝试用Orb将CircleCI的IP加入白名单后,仍无法成功连接。

我的CircleCI配置

version: 2.1

orbs:
  aws-white-list-circleci-ip: configure/aws-white-list-circleci-ip@1.0.0
  aws-cli: circleci/aws-cli@0.1.13

jobs:
  aws_setup:
    docker:
      - image: cimg/python:3.11.0
    steps:
      - aws-cli/install
      - aws-white-list-circleci-ip/add
  build:
    docker:
      - image: cimg/node:18.4

    steps:
      - checkout
      - run: node --version
      - restore_cache:
          name: Restore Npm Package Cache
          keys:
            # Find a cache corresponding to this specific package-lock.json checksum
            # when this file is changed, this key will fail
            - v1-npm-deps-{{ checksum "package-lock.json" }}
            # Find the most recently generated cache used from any branch
            - v1-npm-deps-
      - run: npm install
      - run:
          name: start the server
          command: npm start
          background: true
      - save_cache:
          name: Save Npm Package Cache
          key: v1-npm-deps-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules
      - run:
          name: run tests
          command: npm run test
      - aws-white-list-circleci-ip/remove

workflows:
  build-workflow:
    jobs:
      - aws_setup:
          context: aws_context
      - build:
          requires:
            - aws_setup
          context: aws_context

上下文环境变量

AWS_ACCESS_KEY_ID   
AWS_DEFAULT_REGION
AWS_SECRET_ACCESS_KEY
GROUPID

错误截图

数据库连接失败错误提示

使用的Orb

configure/aws-white-list-circleci-ip@1.0.0(用于自动管理CircleCI IP在AWS安全组的白名单)


问题排查与解决方法

1. 核心问题:跨Job的IP不统一

CircleCI每个Job会分配独立的公网IP,你在aws_setup Job中添加的白名单IP是该Job容器的IP,而实际运行测试、连接数据库的build Job用的是另一组IP,导致白名单无效。

  • 修复方案:将IP白名单的添加/移除步骤移到build Job内部,确保白名单绑定的是当前运行测试的Job IP。修改后配置如下:
version: 2.1

orbs:
  aws-white-list-circleci-ip: configure/aws-white-list-circleci-ip@1.0.0
  aws-cli: circleci/aws-cli@0.1.13

jobs:
  build:
    docker:
      - image: cimg/node:18.4
    steps:
      - aws-cli/install
      - aws-white-list-circleci-ip/add
      - checkout
      - run: node --version
      - restore_cache:
          name: Restore Npm Package Cache
          keys:
            - v1-npm-deps-{{ checksum "package-lock.json" }}
            - v1-npm-deps-
      - run: npm install
      - run:
          name: start the server
          command: npm start
          background: true
      - save_cache:
          name: Save Npm Package Cache
          key: v1-npm-deps-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules
      - run:
          name: run tests
          command: npm run test
      - aws-white-list-circleci-ip/remove

workflows:
  build-workflow:
    jobs:
      - build:
          context: aws_context

2. 安全组规则校验

检查AWS RDS对应的安全组:

  • 确认入站规则开放了RDS服务的默认端口(如MySQL 3306、PostgreSQL 5432)
  • 协议设置为TCP
  • 白名单IP的CIDR格式正确(通常为x.x.x.x/32)

3. 验证IP准确性

在build Job中添加打印公网IP的步骤,确认Orb获取的IP是否正确:

- run:
    name: Print public IP
    command: curl ifconfig.me

将打印出的IP手动添加到安全组测试,若能正常连接,说明Orb的IP获取逻辑存在问题,可更换Orb或手动编写IP白名单管理脚本。

4. 数据库连接配置检查

确认测试环境的数据库连接字符串:

  • RDS端点、端口、用户名、密码无拼写错误
  • RDS实例处于可用状态,且允许公网访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:01:18