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

Cách dùng Boto3 lấy trạng thái hoạt động di chuyển (migration)

Đề bài − Sử dụng thư viện boto3 trong Python để lấy trạng thái của một hoạt động di chuyển (migration).

Ví dụ − Lấy trạng thái hoạt động di chuyển trong một tài khoản.

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ố catalog_id cần kiểm tra trạng thái di chuyển. Tuy nhiên, đây là tham số tùy chọn. Nếu không cung cấp, mặc định nó kiểm tra tài khoản đã đăng nhập xem di chuyển đang tiến hành hay đã hoàn thành. catalog_id không gì khác ngoài ID tài khoản người dùng.

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 get_catalog_import_status và truyền catalog_id làm tham số CatalogId.

Bước 6 − Nó sẽ lấy chi tiết hoạt động di chuyển đang diễn ra. Nếu không, nó sẽ lấy chi tiết lần di chuyển cuối cùng.

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 trạng thái hoạt động di chuyển:

import boto3
from botocore.exceptions import ClientError

def status_of_migration(catalog_id=None):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_catalog_import_status(CatalogId=catalog_id)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in status_of_migration: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in status_of_migration: " + e.__str__())

print(status_of_migration())

Kết quả

{'ImportStatus': {'ImportCompleted': True, 'ImportTime': datetime.datetime(2017, 11, 17, 1, 32, 44, tzinfo=tzlocal()), 'ImportedBy': 'StatusSetByDefault'}, 'ResponseMetadata': {'RequestId': '7c33d6f9-..............-3b202961e3e7', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 21 Feb 2021 05:40:06 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '102', 'connection': 'keep-alive', 'x-amzn-requestid': '7c33d6f9-............-3b202961e3e7'}, 'RetryAttempts': 0}}