Conectar a instância de banco de dados usando a autenticação do IAM na linha de comando: AWS CLI e cliente psql
Conecte-se pela linha de comando a uma instância de banco de dados do Amazon RDS para PostgreSQL com a AWS CLI e a ferramenta da linha de comando psql conforme descrito a seguir.
Pré-requisitos
Veja a seguir os pré-requisitos para se conectar à instância de banco de dados usando a autenticação do IAM:
nota
Para obter informações sobre como se conectar ao seu banco de dados usando pgAdmin com autenticação do IAM, consulte a publicação do blog Using IAM authentication to connect with pgAdmin Amazon Aurora PostgreSQL or Amazon RDS para PostgreSQL
Gerar um token de autenticação do IAM
Um token de autenticação é composto de várias centenas de caracteres. Dessa maneira, ele pode ficar estranho na linha de comando. Um modo de contornar isso é salvar o token em uma variável de ambiente, e usar essa variável quando você se conectar. O exemplo a seguir mostra como usar a AWS CLI para obter um token de autenticação assinado usando o comando generate-db-auth-token
e armazená-lo em uma variável de ambiente PGPASSWORD
.
export RDSHOST="
rdspostgres.123456789012.us-west-2.rds.amazonaws.com
" export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port5432
--regionus-west-2
--usernamejane_doe
)"
No exemplo, os parâmetros para o comando generate-db-auth-token
são os seguintes:
-
--hostname
: o nome do host da instância de banco de dados que você deseja acessar -
--port
: o número da porta usada para se conectar à instância de banco de dados -
--region
: a região da AWS na qual a instância do banco de dados está em execução. -
--username
: a conta de banco de dados que você deseja acessar
Os primeiros caracteres do token gerado são parecidos com os seguintes.
rdspostgres.123456789012.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
nota
Não é possível usar um registro DNS personalizado do Route 53 em vez do endpoint da instância de banco de dados para gerar o token de autenticação.
Conectar-se a uma instância PostgreSQL do Amazon RDS
O formato geral para usar psql na conexão é mostrado a seguir.
psql "host=
hostName
port=portNumber
sslmode=verify-full sslrootcert=full_path_to_ssl_certificate
dbname=DBName
user=userName
password=authToken
"
Os parâmetros são os seguintes:
-
host
: o nome do host da instância de banco de dados que você deseja acessar -
port
: o número da porta usada para se conectar à instância de banco de dados -
sslmode
: o modo SSL a ser usadoQuando você usa
sslmode=verify-full
, a conexão SSL verifica o endpoint da instância de banco de dados em relação ao endpoint no certificado SSL. -
sslrootcert
: o caminho completo para o arquivo de certificado SSL que contém a chave públicaPara ter mais informações, consulte Usar o SSL com uma instância de banco de dados PostgreSQL.
Para baixar um certificado SSL, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados.
-
dbname
: o banco de dados que você deseja acessar -
user
: a conta de banco de dados que você deseja acessar -
password
: um token de autenticação do IAM assinado
nota
Não é possível usar um registro DNS personalizado do Route 53 em vez do endpoint da instância de banco de dados para gerar o token de autenticação.
O exemplo a seguir mostra o uso do psql para conexão. No exemplo, psql usa a variável de ambiente RDSHOST
para o host e a variável de ambiente PGPASSWORD
para o token gerado. Além disso, /sample_dir/
corresponde ao caminho completo do arquivo de certificado SSL contendo a chave pública.
export RDSHOST="
rdspostgres.123456789012.us-west-2.rds.amazonaws.com
" export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port5432
--regionus-west-2
--usernamejane_doe
)" psql "host=$RDSHOST port=5432
sslmode=verify-full sslrootcert=/sample_dir/
global-bundle.pem dbname=DBName
user=jane_doe
password=$PGPASSWORD"
Se você quiser se conectar a uma instância de banco de dados por meio de um proxy, consulte Conectar-se a um proxy usando autenticação do IAM.