명령줄: AWS CLI 및 psql Client에서 IAM 인증을 사용하여 DB 인스턴스에 연결 - Amazon Relational Database Service

명령줄: AWS CLI 및 psql Client에서 IAM 인증을 사용하여 DB 인스턴스에 연결

아래 설명과 같이 AWS CLI 및 psql 명령줄 도구를 사용하여 명령줄에서 Amazon RDS for PostgreSQL DB 인스턴스에 연결할 수 있습니다.

필수 조건

다음은 IAM 인증을 사용하여 DB 인스턴스에 연결하기 위한 사전 조건입니다.

참고

IAM 인증을 통한 pgAdmin을 사용하여 데이터베이스에 연결하는 방법에 대한 자세한 내용은 블로그 게시물 Using IAM authentication to connect with pgAdmin Amazon Aurora PostgreSQL or Amazon RDS for PostgreSQL을 참조하세요.

IAM 인증 토크 생성

인증 토큰은 수백 자의 문자로 구성되므로 명령줄에서는 다루기 불편할 수 있습니다. 이러한 문제를 해결하기 위해 토큰을 환경 변수로 저장한 후 연결할 때 이 변수를 사용하는 것도 한 가지 방법입니다. 다음 예제는 AWS CLI에서 generate-db-auth-token 명령을 사용하여 서명된 인증 토큰을 받고 이를 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 )"

예제에서 generate-db-auth-token 명령에 대한 파라미터는 다음과 같습니다.

  • --hostname – 액세스할 DB 인스턴스의 호스트 이름입니다.

  • --port – DB 인스턴스에 연결할 때 사용할 포트 번호입니다.

  • --region - DB 인스턴스가 실행되는 AWS 리전입니다.

  • --username – 액세스할 데이터베이스 계정입니다.

생성된 토큰에서 처음 몇 글자는 다음과 같은 모습입니다.

rdspostgres.123456789012.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
참고

인증 토큰을 생성할 때는 DB 인스턴스 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드를 사용할 수 없습니다.

Amazon RDS PostgreSQL 인스턴스에 연결

psql을 사용한 일반적인 연결 형식은 다음과 같습니다.

psql "host=hostName port=portNumber sslmode=verify-full sslrootcert=full_path_to_ssl_certificate dbname=DBName user=userName password=authToken"

파라미터는 다음과 같습니다.

  • host – 액세스할 DB 인스턴스의 호스트 이름입니다.

  • port – DB 인스턴스에 연결할 때 사용할 포트 번호입니다.

  • sslmode – 사용할 SSL 모드입니다.

    sslmode=verify-full을 사용하면 SSL 연결에서 SSL 인증서의 엔드포인트와 비교하여 DB 인스턴스 엔드포인트를 확인합니다.

  • sslrootcert - 퍼블릭 키를 포함하는 SSL 인증서 파일의 전체 경로

    자세한 내용은 PostgreSQL DB 인스턴스와 함께 SSL 사용 섹션을 참조하세요.

    SSL 인증서를 다운로드하려면 SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터에 대한 연결 암호화 섹션을 참조하세요.

  • dbname – 액세스할 데이터베이스입니다.

  • user – 액세스할 데이터베이스 계정입니다.

  • password – 서명된 IAM 인증 토큰입니다.

참고

인증 토큰을 생성할 때는 DB 인스턴스 엔드포인트 대신 사용자 지정 Route 53 DNS 레코드를 사용할 수 없습니다.

다음 예제는 psql을 사용하여 연결하는 방법을 보여줍니다. 예에서 psql은 호스트에 대해 환경 변수 RDSHOST를 사용하고 생성된 토큰에 대해 환경 변수 PGPASSWORD를 사용합니다. 또한 /sample_dir/은 퍼블릭 키를 포함하는 SSL 인증서 파일의 전체 경로입니다.

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"

프록시를 통해 DB 인스턴스에 연결하려는 경우 IAM 인증을 사용하여 프록시에 연결을 참조하세요.