ข้อกำหนดปัญหา
ใช้ไลบรารี Boto3 ใน Python เพื่อดึงรายละเอียดของ Connection ที่มีอยู่ใน AWS Glue Data Catalog
ตัวอย่าง
ดึงรายละเอียดของ Connection Definition ชื่อ aurora-test
ขั้นตอนการแก้ปัญหา
- ขั้นตอนที่ 1 – นำเข้า
boto3และbotocore.exceptionsเพื่อจัดการข้อยกเว้น - ขั้นตอนที่ 2 – ส่งพารามิเตอร์
connection_nameที่ต้องการตรวจสอบ - ขั้นตอนที่ 3 – สร้าง AWS Session ด้วย Boto3 ตรวจสอบว่า
region_nameถูกกำหนดในโปรไฟล์เริ่มต้น หากไม่ได้ระบุ ให้ส่งregion_nameโดยตรงตอนสร้าง Session - ขั้นตอนที่ 4 – สร้าง AWS Client สำหรับ Glue
- ขั้นตอนที่ 5 – เรียกฟังก์ชัน get_connection และส่ง
connection_nameเป็นพารามิเตอร์ Name - ขั้นตอนที่ 6 – จะดึงรายละเอียด Connection Definition จาก AWS Glue Data Catalog
- ขั้นตอนที่ 7 – จัดการข้อยกเว้นทั่วไปหากเกิดข้อผิดพลาดขณะตรวจสอบ
ตัวอย่างโค้ด
ใช้โค้ดต่อไปนี้เพื่อดึง Definition ของ Connection ใน 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"))
ผลลัพธ์
{
'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
}
}