我正在尝试从 CodeBuild 项目连接 Postgres RDS 无服务器实例。
这是失败的地方:psql --host ${PG_HOST} --dbname ${PG_DBNAME} --user ${SECRET_USER} -f /tmp/file
/tmp/file 存在,所以文件权限/不存在的问题是不可能的
到目前为止,我尝试过的用户名和密码是:
env:
secrets-manager:
# key: secret-id:json-key:version-stage:version-id
SECRET_USER: rds-db-credentials:username
SECRET_PASSWORD: rds-db-credentials:password
psql --host ${PG_HOST} --dbname ${PG_DBNAME} "user=mydbuser password=0fNKJtNv" -f /tmp/file;
echo ${PG_HOST}:${PG_PORT}:${PG_DBNAME}:${SECRET_USER}:${SECRET_PASSWORD} > ~/.pgpass
chmod 600 ~/.pgpass
可以肯定的是,我也导出了变量,PGPASSFILE="~/.pgpass"
当我回显用户名和密码时,我只会打印 *** ,例如:[Container] 2020/09/27 07:39:34 Running command cat ~/.pgpass
something.eu-central-1.rds.amazonaws.com:5432:spumdb:***:***
错误:psql --host ${PG_HOST} --dbname ${PG_DBNAME} --user ${PG_USER} -f /tmp/file
,错误是 psql: warning: extra command-line argument "/tmp/file" ignored
Password for user -f:
psql: fe_sendauth: no password supplied
psql --host ${PG_HOST} --dbname ${PG_DBNAME} --user ${SECRET_USER} -f /tmp/file
,错误是 Password for user ***:
psql: fe_sendauth: no password supplied
psql --host ${PG_HOST} --dbname ${PG_DBNAME} "user=mydbuser password=0fNKJtNv" -f /tmp/file
,错误为:Password for user user=*** password=***:
psql: fe_sendauth: no password supplied
仅供引用,看起来是 CodeBuild 端的问题,而不是 RDS 端的问题。出于某种原因,CodeBuild 没有获得参数的值,也只有用户名和密码,其他人如主机名、数据库名被正确评估!
有人在任何地方看到任何问题吗?谢谢!
最佳答案
我试过 复制问题 ,但我唯一发现你应该使用 --username
,不是 --user
.无论如何,这是我的 buildspec.yml
用于验证:
version: 0.2
env:
variables:
PG_HOST: database-1.cm3c1syrcj06.us-east-1.rds.amazonaws.com
PG_PORT: 5432
PG_DBNAME: mydb
secrets-manager:
SECRET_USER: rds-db-credentials:username
SECRET_PASSWORD: rds-db-credentials:password
phases:
pre_build:
commands:
- echo ${PG_HOST}:${PG_PORT}:${PG_DBNAME}:${SECRET_USER}:${SECRET_PASSWORD} > ~/.pgpass
- chmod 600 ~/.pgpass
build:
commands:
- cat ~/.pgpass | rev
- echo "\dt" > /tmp/file
- psql --host ${PG_HOST} --dbname ${PG_DBNAME} --username ${SECRET_USER} -f /tmp/file
在上面我使用了 小把戏显示密码和用户名,但相反。否则你只能看到 ***
.一切都按预期工作 , CB 连接数据库,如
No relations found
所示(这是意料之中的,因为我的数据库是空的):关于postgresql - CodeBuild 到 RDS 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64086322/