Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách dùng Boto3 lấy chi tiết một connection từ AWS Glue Data Catalog

Đề bài − Sử dụng thư viện boto3 trong Python để lấy chi tiết một connection có trong AWS Glue Data catalog.

Ví dụ − Lấy chi tiết định nghĩa connection 'aurora-test'.

Cách tiếp cận/Thuật toán giải quyết

Bước 1 − Nhập boto3 và botocore exceptions để xử lý ngoại lệ.

Bước 2 − Truyền tham số connection_name cần kiểm tra định nghĩa.

Bước 3 − Tạo phiên AWS bằng boto3. Đảm bảo region_name trong profile mặc định. Nếu không, truyền rõ ràng region_name khi tạo phiên.

Bước 4 − Tạo client AWS cho glue.

Bước 5 − Gọi hàm get_connection và truyền connection_name làm tham số Name.

Bước 6 − Nó sẽ lấy chi tiết định nghĩa connection từ AWS Glue Data Catalog.

Bước 7 − Xử lý ngoại lệ chung nếu có lỗi xảy ra khi kiểm tra job.

Ví dụ

Sử dụng code sau để lấy định nghĩa một connection trong AWS Glue Data catalog:

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"))

Kết quả

{'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}}