Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีใช้ Boto3 ดึงรายละเอียด Connection จาก AWS Glue Data Catalog


ข้อกำหนดปัญหา

ใช้ไลบรารี Boto3 ใน Python เพื่อดึงรายละเอียดของ Connection ที่มีอยู่ใน AWS Glue Data Catalog

ตัวอย่าง

ดึงรายละเอียดของ Connection Definition ชื่อ aurora-test

ขั้นตอนการแก้ปัญหา

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