Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Boto3로 AWS Glue 데이터 카탈로그의 연결(Connection) 세부 정보 조회하는 방법

문제 상황

Python의 boto3 라이브러리를 사용하여 AWS Glue 데이터 카탈로그(Data Catalog)에 등록된 연결(Connection)의 세부 정보를 조회하는 방법을 알아보겠습니다.

예제 − 'aurora-test'라는 이름의 연결 정의 세부 정보를 가져옵니다.

해결 접근 방식 및 알고리즘

1단계 − boto3와 botocore의 예외 처리 모듈(ClientError)을 임포트합니다.

2단계 − 정의를 확인하려는 연결 이름(connection_name)을 매개변수로 전달합니다.

3단계 − boto3 라이브러리를 사용하여 AWS 세션(Session)을 생성합니다. 기본 프로필(default profile)에 region_name이 설정되어 있지 않다면, 세션 생성 시 반드시 리전명을 명시적으로 지정해야 합니다.

4단계 − AWS Glue 서비스를 위한 클라이언트를 생성합니다.

5단계get_connection 함수를 호출하고, 연결 이름을 Name 매개변수로 전달합니다.

6단계 − 해당 함수는 AWS Glue 데이터 카탈로그에서 연결 정의의 세부 정보를 반환합니다.

7단계 − 조회 과정에서 오류가 발생할 경우 일반 예외(generic exception)를 처리하여 안정성을 확보합니다.

예제 코드

다음 코드를 사용하면 AWS Glue 데이터 카탈로그에 등록된 연결의 정의를 조회할 수 있습니다.

import boto3
from botocore.exceptions import ClientError

def get_details_of_a_connection(connection_name):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_connection(Name= connection_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in get_details_of_a_connection: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in get_details_of_a_connection: " + e.__str__())
print(get_details_of_a_connection("aurora-poc"))

실행 결과

{'Connection': {'Name': 'aurora-poc', 'ConnectionType': 'JDBC',
'ConnectionProperties': {'JDBC_CONNECTION_URL': 'jdbc:postgresql://abcpostgresql-cluster.cluster-abc.us-east-1.rds.amazonaws.com:0132/abc,
'JDBC_ENFORCE_SSL': 'false', 'PASSWORD': '******', 'USERNAME':
'abc***'}, 'PhysicalConnectionRequirements': {'SubnetId': 'subnet351*****', 'SecurityGroupIdList': ['sg-caa******', 'sg-*************'],
'AvailabilityZone': 'us-east-1c'}, 'CreationTime':
datetime.datetime(2020, 11, 18, 12, 38, 29, 625000, tzinfo=tzlocal()),
'LastUpdatedTime': datetime.datetime(2020, 11, 18, 12, 51, 16, 59000,
tzinfo=tzlocal())}, 'ResponseMetadata': {'RequestId': '6f13524b-4175-
454b-bc60-c7f408967098', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date':
'Sun, 28 Feb 2021 11:19:18 GMT', 'content-type': 'application/x-amzjson-1.1', 'content-length': '523', 'connection': 'keep-alive', 'x-amznrequestid': '6f13524b-*****************7098'}, 'RetryAttempts': 0}}