Cách lấy blob-url sau khi tải tệp lên trong azure python

Tìm hiểu Microsoft Azure Blob Storage với cheat sheet tiện dụng của Zuar. Bậc, vùng chứa, tạo, xóa, cho thuê, v.v.

  • Cách lấy blob-url sau khi tải tệp lên trong azure python

Đội Zuar

Ngày 20 tháng 7 năm 2021 11 phút đọc

Cách lấy blob-url sau khi tải tệp lên trong azure python

Đối với các hướng dẫn, chúng tôi sẽ chủ yếu sử dụng Azure Storage Explorer và Azure Python SDK

Lưu trữ Blob là gì?

Lưu trữ Azure Blob (đối tượng lớn nhị phân) là giải pháp lưu trữ đối tượng đám mây của Microsoft. Một 'đối tượng' mô tả hình ảnh, tệp văn bản, tệp âm thanh, tệp sao lưu, nhật ký, v.v. Azure Blob Storage được tối ưu hóa để lưu trữ khối lượng dữ liệu phi cấu trúc rất lớn không bị giới hạn trong một mô hình hoặc lược đồ cụ thể. Blob Storage rất tiện lợi và có thể tùy chỉnh theo nhu cầu của bạn. Người dùng có nhiều tùy chọn để lưu trữ và truy xuất dữ liệu từ một phiên bản Azure Blob Storage

Microsoft duy trì các thư viện máy khách cho. Mạng, Java, Nút. js, Python, Go, PHP và Ruby. Ngoài ra, bạn cũng có thể truy cập các đối tượng bằng HTTP/HTTPS. Một điểm hấp dẫn khác là bạn cũng được tích hợp tính năng bảo mật thông qua nền tảng của Microsoft, cũng như lợi ích bổ sung của tính khả dụng cao và khắc phục thảm họa

Cấu trúc của Blob là gì?

Tài khoản → Vùng chứa → Blob

Blob Storage tương đối trực quan và tương tự như cấu trúc tệp truyền thống. thư mục>thư mục con>lược đồ tập tin. Mỗi tài khoản Azure Blob Storage có thể chứa số lượng vùng chứa không giới hạn và mỗi vùng chứa có thể chứa số lượng đốm màu không giới hạn. Mọi người thường coi vùng chứa là thư mục trong ví dụ trên và cố gắng tạo các thư mục trong vùng chứa để sao chép cấu trúc truyền thống, tạo ra cấu trúc tệp ảo. Tuy nhiên, tốt hơn là coi vùng chứa là thư mục con ở trên và chính tài khoản là thư mục. Để tránh những phức tạp không cần thiết, hãy cố gắng làm cho các tệp phẳng nhất có thể mà không có thư mục con ảo

Các loại đốm màu là gì?

  • khối đốm màu. Được tối ưu hóa cho các 'khối' dữ liệu lớn và được xác định bằng một ID khối duy nhất, một khối blob có thể chứa 50 nghìn khối
  • Trang đốm màu. Bộ sưu tập các trang 512 byte được tối ưu hóa cho thao tác đọc/ghi
  • nối các đốm màu. Bao gồm các đốm màu khối được tối ưu hóa cho các hoạt động nối thêm, các khối mới được thêm vào cuối đốm màu. Cập nhật/xóa không được hỗ trợ

găng tay. Nền tảng phân tầng dữ liệu của Zuar

Mitto là một nền tảng dàn dựng dữ liệu tự động, nhanh, nhẹ. Kết nối với API, Cơ sở dữ liệu hoặc Tệp phẳng để lập mô hình dữ liệu của bạn nhằm chuẩn bị cho phân tích

Zuar

Các tầng lưu trữ là gì?

Azure cũng cung cấp tùy chọn để tùy chỉnh các tùy chọn lưu trữ dựa trên mục đích lưu trữ thông qua các tầng khác nhau. Hiện tại, Microsoft cung cấp ba tầng lưu trữ khác nhau. Nóng, Mát và Lưu trữ

Bậc truy cập nóng

Tầng này được sử dụng để lưu trữ các đối tượng được đọc và ghi một cách tích cực và nhất quán vào. Chi phí truy cập cho cấp này là thấp nhất trong số các cấp, tuy nhiên chi phí lưu trữ là cao nhất. Nói chung, khi không còn cần truy cập thường xuyên vào dữ liệu, dữ liệu sẽ được chuyển sang một tầng khác

Cấp truy cập tuyệt vời

Ngược lại, tầng truy cập mát có chi phí truy cập cao hơn và chi phí lưu trữ thấp hơn so với tầng truy cập nóng. Điều này dành cho dữ liệu không còn được sử dụng thường xuyên nhưng người dùng cần truy cập ngay lập tức nếu có nhu cầu. Dữ liệu trong bậc này dự kiến ​​sẽ duy trì trong ít nhất 30 ngày

Cấp truy cập lưu trữ

Bậc này có chi phí lưu trữ rẻ nhất và chi phí truy cập cao nhất trong các bậc. Microsoft hy vọng rằng dữ liệu được đặt trong bậc này sẽ tồn tại trong ít nhất 180 ngày và tài khoản sẽ phải chịu phí xóa sớm nếu dữ liệu bị xóa trước 180 ngày. Dữ liệu trong tầng này không có sẵn ngay lập tức. Microsoft đưa các đối tượng này vào chế độ ngoại tuyến và bạn sẽ không thể đọc hoặc sửa đổi chúng. Để truy cập các đối tượng trong tầng này, trước tiên bạn phải 'bù nước' cho chúng, về cơ bản đây là thuật ngữ của Microsoft để di chuyển đối tượng trở lại tầng trực tuyến, chẳng hạn như truy cập mát hoặc nóng

Dưới đây là biểu đồ nhanh để giúp hình dung cách sử dụng các bậc truy cập

Cách lấy blob-url sau khi tải tệp lên trong azure python

Trục Y là tần suất dữ liệu cần được truy cập, trong khi trục X biểu thị khoảng thời gian dữ liệu cần được lưu giữ. Cấp truy cập 'Nóng' được truy cập thường xuyên nhưng không bắt buộc phải ở trạng thái tĩnh quá lâu, trong khi cấp 'Mát mẻ' dự kiến ​​sẽ không được truy cập thường xuyên nhưng dự kiến ​​sẽ duy trì trong 30-180 ngày và cuối cùng là cấp 'Lưu trữ'

Làm cách nào để tạo tài khoản lưu trữ?

Để tạo tài khoản lưu trữ, bạn sẽ phải đăng nhập vào tài khoản Azure của mình và điều hướng đến 'Trang chủ' > 'Tài khoản lưu trữ'. Từ đây, bạn sẽ điền tất cả các thông tin cần thiết cho tài khoản mới. Nếu bạn đã có tài khoản lưu trữ thì có thể bỏ qua bước này

Cách lấy blob-url sau khi tải tệp lên trong azure python

Xin lưu ý rằng sau khi tạo tài nguyên, bạn có thể xem cấp truy cập mặc định cho tài khoản trong phần thuộc tính. Điều này có thể được thay đổi dựa trên nhu cầu của bạn, nhưng hãy lưu ý những đối tượng mới nào sẽ được đặt mặc định

Cách lấy blob-url sau khi tải tệp lên trong azure python


Làm cách nào để tạo vùng chứa?

Sau khi có tài khoản lưu trữ, bạn sẽ có thể tạo vùng chứa

Trình thám hiểm lưu trữ

Chỉ cần điều hướng đến tài khoản đăng ký và lưu trữ, sau đó nhấp chuột phải vào 'Bộ chứa Blob' và chọn 'Tạo Bộ chứa Blob' và đặt tên cho nó

Cách lấy blob-url sau khi tải tệp lên trong azure python

Bây giờ bạn sẽ thấy một thùng chứa trống

Cách lấy blob-url sau khi tải tệp lên trong azure python

con trăn

Để kết nối với tài khoản lưu trữ qua Python, có một số điều bạn cần quan tâm trước tiên. Điều đầu tiên bạn cần là chuỗi kết nối cho tài nguyên. Bạn có thể tìm thấy điều này bằng cách đăng nhập vào cổng Azure và điều hướng đến tài khoản lưu trữ, sau đó chọn phần 'Bảo mật + mạng'

Cách lấy blob-url sau khi tải tệp lên trong azure python

Đặt biến môi trường

Sau khi bạn có chuỗi kết nối, Microsoft khuyên bạn nên đặt chuỗi này làm biến môi trường để tránh mã hóa cứng chuỗi đó thành bất kỳ tập lệnh nào. Bạn có thể thực hiện việc này thông qua dòng lệnh hoặc bằng cách sử dụng công cụ được tích hợp sẵn trong windows (nhập 'env' vào thanh tìm kiếm của menu bắt đầu để tìm nó)

GUI

Cách lấy blob-url sau khi tải tệp lên trong azure python

Dòng lệnh

Cách lấy blob-url sau khi tải tệp lên trong azure python

Khi bạn đã thêm chuỗi kết nối làm biến môi trường, bạn có thể bắt đầu với mã để thêm vùng chứa. Nếu bạn chưa cài đặt thư viện máy khách, vui lòng đảm bảo cài đặt. Nếu bạn có bất kỳ câu hỏi nào liên quan đến bất kỳ đoạn mã Python nào, thì đó là một nguồn tài nguyên tuyệt vời

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Tạo thùng chứa

container_client = blob_service_client. create_container('pytesting')

```

Các bước mã là

Import dependencies > Store connection string environment variable as script variable > Initialize BlobServiceClient object > Create container using BlobServiceClient.create_container() method

Sau khi thực thi mã này, bạn sẽ có thể làm mới phần 'vùng chứa' trong trình khám phá bộ lưu trữ để xem vùng chứa mới

Cách lấy blob-url sau khi tải tệp lên trong azure python

Làm cách nào để tạo một đốm màu?

Trình thám hiểm lưu trữ

Tải lên một đốm màu bằng trình khám phá lưu trữ khá đơn giản. Mở thùng chứa, chọn 'Tải lên', chọn tệp để tải lên và nhấn 'Tải lên'

Cách lấy blob-url sau khi tải tệp lên trong azure python


Một điều cần lưu ý ở đây là bạn được cung cấp tùy chọn để chọn Bậc truy cập và Loại Blob. Bậc truy cập xác định chi phí truy cập so với lưu trữ của blob trong khi Loại Blob xác định cách blob được tối ưu hóa. Trong thực tế, bạn sẽ muốn đảm bảo rằng các tùy chọn này phù hợp với mục đích của mình, tuy nhiên ở đây tôi sẽ để mặc định

Khi quá trình chuyển hoàn tất, tệp của bạn hiện được lưu trữ dưới dạng đốm màu

Cách lấy blob-url sau khi tải tệp lên trong azure python

con trăn

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Khởi tạo ứng dụng khách blob

blob_client = blob_service_client. get_blob_client(

container='pytesting', # container để ghi vào

blob='neo. jpg' # tên của đốm màu

)

# Ghi tập tin vào blob

với mở ('. /dữ liệu/neo. jpg','rb') dưới dạng f

blob_client. upload_blob(f)

```

Các bước mã là

Import dependencies > Store connection string environment variable as script variable > Initialize BlobClient object > Upload blob using BlobClient.upload_blob() method

Bạn cũng có thể xem kết quả trong trình thám hiểm lưu trữ cho điều này

Cách lấy blob-url sau khi tải tệp lên trong azure python

Làm cách nào để thay đổi cấp độ truy cập của blob?

Khi một blob đã được tạo và bạn thấy rằng nhu cầu lưu giữ/truy cập dữ liệu của mình đã thay đổi, bạn có thể cập nhật bậc truy cập của blob để phù hợp với các yêu cầu này và sử dụng tài nguyên của mình hiệu quả hơn. Một trong những cách dễ nhất để thực hiện điều này là thông qua Storage Explorer. Trong Storage Explorer, điều hướng đến đốm màu bạn muốn cập nhật và nhấp chuột phải, sau đó chọn 'Thay đổi cấp truy cập' từ menu

Cách lấy blob-url sau khi tải tệp lên trong azure python


Làm cách nào để tải xuống một đốm màu?

Trình thám hiểm lưu trữ

Trong trình thám hiểm lưu trữ, đây thường là một quá trình tầm thường. Giao diện cung cấp tùy chọn tải xuống rõ ràng sẽ nhắc bạn tìm đường dẫn. Ngoài ra, bạn có thể bấm đúp vào tệp để mở tệp trong bộ nhớ cục bộ tạm thời

Cách lấy blob-url sau khi tải tệp lên trong azure python


con trăn

Trong Python, trước tiên có thể hữu ích khi xem những đốm màu nào được chứa trong vùng chứa trước khi tải xuống. Đoạn mã sau sẽ in ra từng đốm màu trong vùng chứa

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Khởi tạo container từ tên của nó

container_client = blob_service_client. get_container_client('pytesting')

# In tên blob trong vùng chứa

blob_list = container_client. list_blobs()

cho blob trong blob_list

in (blob. tên)

```

Để tải xuống một trong những đốm màu này theo tên, bạn có thể sử dụng đoạn mã dưới đây

```

# Tải một đốm màu về địa phương

với mở ('. /data/from_blob_anchor. jpg','wb') dưới dạng f

f. viết (container_client. download_blob('neo. jpg'). đọc hết())

```

Ở đây chúng ta có thể thấy kết quả tải xuống với hình ảnh gốc

Cách lấy blob-url sau khi tải tệp lên trong azure python

Yêu cầu HTTP

Bạn cũng có thể truy xuất blob bằng yêu cầu HTTPS/HTTP. Một cách để tìm URL của blob là sử dụng cổng Azure bằng cách đi tới Trang chủ > Tài khoản lưu trữ > Bộ chứa > Blob > Thuộc tính

Cách lấy blob-url sau khi tải tệp lên trong azure python

Tuy nhiên, có lẽ cách dễ nhất là tìm đốm màu trong Storage Explorer, nhấp chuột phải, sau đó chọn 'Sao chép URL'. Thao tác này sẽ sao chép trực tiếp URL tài nguyên vào khay nhớ tạm. Để tải xuống blob, bạn sẽ điều hướng đến URL đã sao chép và trình duyệt của bạn sẽ bắt đầu tải xuống. Tuy nhiên, trước tiên, bạn sẽ cần thiết lập xác thực cho tài nguyên hoặc thiết lập quyền truy cập công khai. Đối với ví dụ này, tôi sẽ thiết lập quyền truy cập công khai vào vùng chứa. Để thực hiện việc này, chỉ cần nhấp chuột phải vào vùng chứa trong trình khám phá bộ lưu trữ và chọn 'Đặt cấp truy cập công khai. ' và điền vào mẫu

Lưu trữ Explorer Sao chép URL

Cách lấy blob-url sau khi tải tệp lên trong azure python

Truy cập công cộng

Cách lấy blob-url sau khi tải tệp lên trong azure python


Làm cách nào để xóa một đốm màu?

Trình thám hiểm lưu trữ

Để xóa một đốm màu trong Storage Explorer, chỉ cần nhấp chuột phải vào đốm màu mục tiêu và chọn 'xóa'

Cách lấy blob-url sau khi tải tệp lên trong azure python


con trăn

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Khởi tạo container từ tên của nó

container_client = blob_service_client. get_container_client('pytesting')

# Xóa đốm màu theo tên

container_client. delete_blob('neo. jpg')

```

Làm cách nào để xóa vùng chứa?

Trình thám hiểm lưu trữ

Xóa một vùng chứa thông qua Storage Explorer gần giống với việc xóa một đốm màu, ngoại trừ ở đây bạn sẽ nhấp chuột phải vào chính đối tượng vùng chứa đó rồi chọn 'xóa'

Cách lấy blob-url sau khi tải tệp lên trong azure python

con trăn

Xóa vùng chứa bằng Python cũng rất đơn giản. Khi bạn khởi tạo đối tượng máy khách vùng chứa, bạn có thể gọi phương thức 'delete_container' của nó

```

# Khởi tạo container từ tên của nó

container_client = blob_service_client. get_container_client('pytesting')

# Xóa vùng chứa

container_client. xóa_container()

```

Sau những lần xóa này, vùng chứa duy nhất còn lại là vùng chứa $logs mặc định

Cách lấy blob-url sau khi tải tệp lên trong azure python

Làm cách nào để xóa mềm một đốm màu?

Có thể có trường hợp bạn cần khôi phục một đối tượng đã xóa. Trong trường hợp điều này có thể xảy ra, có thể hợp lý khi đặt chính sách lưu giữ trên các đốm màu đã xóa. Điều này sẽ cấp một khoảng thời gian sau khi thứ gì đó đã bị xóa khi bạn có thể khôi phục đốm màu đã xóa

con trăn

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

từ màu xanh. kho. chính sách lưu giữ nhập khẩu blob

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Đặt chính sách lưu giữ cho dịch vụ

blob_service_client. set_service_properties(delete_retention_policy=RetentionPolicy(enabled=True,days=5))

# Tạo vùng chứa mới

container_client = blob_service_client. create_container('retentiontest')

# Khởi tạo ứng dụng khách blob

blob_client = blob_service_client. get_blob_client(

container='retentiontest', # container để ghi vào

blob='đa giác. png' # tên của đốm màu

)

# Ghi tập tin vào blob

với mở ('. /data/đa giác. png','rb') dưới dạng f

blob_client. upload_blob(f)

# Xóa đốm màu

blob_client. xóa_blob()

# Phục hồi đốm màu

blob_client. undelete_blob()

```

Làm thế nào để tôi thuê một đốm màu?

Hợp đồng thuê trên blob đảm bảo rằng không ai khác ngoài người cho thuê có thể sửa đổi hoặc xóa đối tượng đó. Hợp đồng thuê có thể được tạo trong một khoảng thời gian nhất định hoặc vô hạn. Ví dụ bên dưới sẽ khởi tạo một hợp đồng thuê có thời hạn vô hạn trên blob và khóa những người dùng khác không được sửa đổi nó

con trăn

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Khởi tạo container từ tên của nó

container_client = blob_service_client. get_container_client('retentiontest')

# Nhận ứng dụng khách blob

blob_client = container_client. get_blob_client('đa giác. png')

# Khởi tạo hợp đồng thuê trên blob

thuê = blob_client. mua_lease()

```

Để kiểm tra điều này, chúng ta có thể xem các thuộc tính của nó trong Storage Explorer

Cách lấy blob-url sau khi tải tệp lên trong azure python

Làm cách nào để tôi phá vỡ hợp đồng thuê trên một đốm màu?

con trăn

Để phá vỡ hợp đồng thuê trong Python, bạn cần nhập đối tượng BlobLeaseClient, khởi tạo nó với ứng dụng khách blob, sau đó gọi phương thức 'break_lease' của nó. Nếu bạn có đối tượng cho thuê ban đầu mà bạn đã tạo do mã ở trên trong bộ nhớ, bạn có thể gọi phương thức 'break_lease' của đối tượng cho thuê thay thế

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

từ màu xanh. kho. nhập blob BlobLeaseClient

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Khởi tạo container từ tên của nó

container_client = blob_service_client. get_container_client('retentiontest')

# Nhận ứng dụng khách blob

blob_client = container_client. get_blob_client('đa giác. png')

# Phá vỡ hợp đồng thuê

BlobLeaseClient(blob_client). break_lease()

```

Làm cách nào để xem và đặt chính sách truy cập vùng chứa?

con trăn

Thao tác này sẽ tạo chính sách truy cập cho vùng chứa, cập nhật vùng chứa bằng chính sách (bao gồm Quyền truy cập công khai) và in ra các tham số chính sách mới

```

nhập hệ điều hành

từ màu xanh. kho. nhập blob BlobServiceClient

từ màu xanh. kho. blob nhập PublicAccess,AccessPolicy,ContainerSasPermissions

conn_str = os. getenv('az_storage_conn_str')

# Khởi tạo một đối tượng BlobServiceClient

blob_service_client = BlobServiceClient. from_connection_string(conn_str)

# Khởi tạo container từ tên của nó

container_client = blob_service_client. get_container_client('retentiontest')

# Đặt chính sách truy cập

access_policy = AccessPolicy(permission=ContainerSasPermissions(read=True, write=True))

số nhận dạng = {'đọc'. chinh sach truy cập}

container_client. set_container_access_policy(

sign_identifiers=số nhận dạng,

public_access = Truy cập công cộng. Thùng đựng hàng

)

# In chính sách truy cập vùng chứa

in (container_client. get_container_access_policy())

```

Chúng tôi cũng có thể kiểm tra Storage Explorer để xác minh các thay đổi

Cách lấy blob-url sau khi tải tệp lên trong azure python

Làm cách nào để chuyển dữ liệu từ Azure Blob Storage sang cơ sở dữ liệu?

Zuar cung cấp giải pháp ELT+ có tên là Mitto để lấy dữ liệu từ Bộ lưu trữ Azure Blob (và nhiều nguồn khác), chuẩn hóa dữ liệu đó (làm cho cơ sở dữ liệu dữ liệu và sẵn sàng phân tích) cũng như lưu trữ dữ liệu đó trong cơ sở dữ liệu bạn chọn

Tìm hiểu thêm về mitto


Công việc tùy chỉnh của Mitto và Rclone. Zuar

Bản sao [https. //rclone. org/] là một chương trình có thể được sử dụng để truyền tệp đến và từ hơn bốn mươi phụ trợ lưu trữ khác nhau (e. g. , Amazon S3, Box, Dropbox, FTP, Google Cloud Storage, Google Drive, Microsoft Azure Blob Storage, Microsoft OneDrive, Microsoft Sharepoint, SFTP, v.v. ). Mitto…

Làm cách nào để lấy tất cả tên blob từ vùng chứa trong Python?

Nếu bạn muốn lấy tất cả các tên blob trong tất cả các vùng chứa trong tài khoản lưu trữ, chỉ cần thực hiện blob_service. list_containers để lặp qua từng vùng chứa và liệt kê tất cả các đốm màu trong mỗi lần lặp . Đây cũng là một bài viết hữu ích về cách sử dụng Azure Blob Storage từ Python.

URL điểm cuối cho dịch vụ blob là gì?

Điểm cuối mặc định cho bộ nhớ Blob là https. // . Nếu bạn ánh xạ miền tùy chỉnh và miền phụ, chẳng hạn như www. contoso. com đến điểm cuối blob cho tài khoản lưu trữ của bạn, thì người dùng của bạn cũng có thể truy cập dữ liệu blob trong tài khoản lưu trữ của bạn bằng miền đó.