Conectar a instância de banco de dados usando a autenticação do IAM na linha de comando: AWS CLI e cliente psql - Amazon Relational Database Service

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 --port 5432 --region us-west-2 --username jane_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 usado

    Quando 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ública

    Para 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 --port 5432 --region us-west-2 --username jane_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.