Storage Transfer Service dapat mentransfer data dari semua container dalam satu akun Microsoft Azure Storage dalam satu tugas transfer. Hal ini menyederhanakan alur kerja untuk kasus penggunaan seperti menyerap log yang tersebar di beberapa container.
Mengonfigurasi transfer untuk semua penampung
Untuk mentransfer semua penampung dalam akun penyimpanan, tentukan penampung sumber sebagai * (satu tanda bintang) di objek API publik AzureBlobStorageData atau sebagai
https://AZURE_ACCOUNT_NAME.blob.core.windows.net/* saat
menentukan sumber dalam perintah gcloud.
Menentukan folder sumber atau path tidak didukung untuk transfer multi-penampung. Lihat Memfilter container dan objek yang akan ditransfer untuk menentukan jalur menggunakan awalan.
Saat tugas transfer berjalan, Storage Transfer Service terlebih dahulu membuat kueri Azure untuk mendapatkan daftar semua container yang diperbarui di akun penyimpanan yang ditentukan. Kemudian, untuk setiap penampung yang ditemukan, alat ini akan membuat folder yang sesuai di tujuan dan mentransfer data penampung ke folder baru tersebut.
gcloud
Perintah berikut membuat tugas transfer yang mentransfer semua penampung dari akun Azure Storage yang ditentukan ke bucket Cloud Storage.
gcloud transfer jobs create \
https://AZURE_ACCOUNT_NAME.blob.core.windows.net/* \
gs://GCS_BUCKET_NAME \
--source-creds-file="PATH_TO_AZURE_SAS_FILE" \
--project="PROJECT_ID"
Dengan:
- AZURE_ACCOUNT_NAME: Nama akun Azure Storage Anda.
- GCS_BUCKET_NAME: Nama bucket Cloud Storage tujuan.
- PATH_TO_AZURE_SAS_FILE: Jalur lokal ke file teks yang berisi token SAS Azure tingkat akun Anda. Contoh:
~/.azure/sas_token.txt. Token SAS harus dibuat di tingkat akun penyimpanan dengan Service, Container, dan Object dipilih untuk Jenis resource yang diizinkan. Lihat Mengonfigurasi akses ke sumber: Microsoft Azure Storage untuk mengetahui detailnya. - PROJECT_ID: ID project Google Cloud yang memiliki transfer.
REST
Untuk membuat transfer ini dengan REST API, buat permintaan POST ke
endpoint https://storagetransfer.googleapis.com/v1/transferJobs.
Isi Permintaan:
{
"description": "Transfer all containers from my Azure account",
"projectId": "PROJECT_ID",
"status": "ENABLED",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_ACCOUNT_NAME",
"container": "*",
"azureCredentials": {
"sasToken": "AZURE_SAS_TOKEN"
}
},
"gcsDataSink": {
"bucketName": "GCS_BUCKET_NAME"
}
}
}
Dengan:
- PROJECT_ID: ID project Google Cloud yang memiliki transfer.
- AZURE_ACCOUNT_NAME: Nama akun Azure Storage Anda.
- AZURE_SAS_TOKEN: String token SAS tingkat akun lengkap, seperti
?sv=2020-08-04&ss=bfqt&srt=sco&.... Token SAS harus dibuat di tingkat akun penyimpanan dengan Layanan, Kontainer, dan Objek dipilih untuk Jenis resource yang diizinkan. Lihat Mengonfigurasi akses ke sumber: Microsoft Azure Storage untuk mengetahui detailnya. - GCS_BUCKET_NAME: Nama bucket Cloud Storage tujuan.
Library klien
Contoh ini menggunakan library klien Python google-cloud-storage-transfer untuk membuat transfer.
from google.cloud import storage_transfer_v1
def create_transfer_all_azure_containers(
project_id: str,
description: str,
azure_storage_account: str,
azure_sas_token: str,
gcs_sink_bucket: str,
):
"""Creates a transfer job from all containers in an Azure account to Cloud Storage."""
client = storage_transfer_v1.StorageTransferServiceClient()
transfer_job_request = storage_transfer_v1.CreateTransferJobRequest(
{
"transfer_job": {
"project_id": project_id,
"description": description,
"status": storage_transfer_v1.TransferJob.Status.ENABLED,
"transfer_spec": {
"azure_blob_storage_data_source": {
"storage_account": azure_storage_account,
"container": "*", # Wildcard for all containers
"azure_credentials": {"sas_token": azure_sas_token},
},
"gcs_data_sink": {"bucket_name": gcs_sink_bucket},
},
}
}
)
result = client.create_transfer_job(transfer_job_request)
print(f"Created transfer job: {result.name}")
if __name__ == "__main__":
create_transfer_all_azure_containers(
project_id="PROJECT_ID",
description="All-containers transfer from Azure",
azure_storage_account="AZURE_ACCOUNT_NAME",
azure_sas_token="AZURE_SAS_TOKEN",
gcs_sink_bucket="GCS_BUCKET_NAME",
)
Dengan:
- PROJECT_ID: ID project Google Cloud yang memiliki transfer.
- AZURE_ACCOUNT_NAME: Nama akun Azure Storage Anda.
- AZURE_SAS_TOKEN: String token SAS tingkat akun lengkap, seperti
?sv=2020-08-04&ss=bfqt&srt=sco&.... Token SAS harus dibuat di tingkat akun penyimpanan dengan Layanan, Kontainer, dan Objek dipilih untuk Jenis resource yang diizinkan. Lihat Mengonfigurasi akses ke sumber: Microsoft Azure Storage untuk mengetahui detailnya. - GCS_BUCKET_NAME: Nama bucket Cloud Storage tujuan.
Lihat Membuat transfer untuk mengetahui informasi selengkapnya tentang cara membuat transfer dan opsi yang tersedia.
Memfilter container dan objek yang akan ditransfer
Anda dapat menggunakan awalan atau file manifes untuk mengontrol penampung dan objek yang disertakan dalam transfer.
Filter menurut awalan
Untuk mentransfer container tertentu atau jalur tertentu dalam container, berikan daftar
includePrefixes atau excludePrefixes. Jika kolom penampung adalah *,
segmen pertama dari setiap jalur awalan diperlakukan sebagai nama penampung. Hal ini memungkinkan Anda menentukan jalur yang berbeda untuk container yang berbeda dalam tugas yang sama.
Untuk menerapkan awalan di semua container dalam akun penyimpanan, gunakan * sebagai
segmen pertama, seperti */PREFIX.
Misalnya, untuk mentransfer semua item dari container-a serta objek di bawah
jalur tertentu di container-b, tetapkan awalan yang disertakan sebagai berikut:
"transferSpec": {
...
"azureBlobStorageDataSource": {
"storageAccount": "my-azure-account",
"container": "*"
},
"objectConditions": {
"includePrefixes": [
"container-a",
"container-b/logs/2025/"
]
},
...
}
Konfigurasi ini:
- Mentransfer semua objek dari
container-a. - Mentransfer semua objek di jalur
logs/2025/daricontainer-b. - Melewati semua penampung lainnya di akun penyimpanan.
Untuk mentransfer semua objek di jalur logs/2025/ dari setiap penampung di akun penyimpanan, tentukan "*/logs/2025/" di includePrefixes.
Lihat Memfilter menurut awalan untuk mengetahui informasi selengkapnya tentang menyertakan dan mengecualikan awalan.
Memfilter menggunakan manifes
Untuk menggunakan file manifes untuk transfer multi-penampung, jalur untuk setiap objek yang tercantum dalam file CSV manifes Anda harus dimulai dengan nama penampung.
Contoh:
container-a/photos/photo1.jpg
container-a/photos/photo2.jpg
container-c/archive.zip
Lihat Mentransfer file atau objek tertentu menggunakan manifes untuk mengetahui detail selengkapnya tentang file manifes.
Transfer berdasarkan peristiwa
Transfer berbasis peristiwa dari Azure didukung untuk konfigurasi multi-container.
Untuk mendapatkan performa terbaik dan menghindari pemrosesan peristiwa yang tidak perlu, konfigurasi filter peristiwa Anda di Azure untuk menentukan container mana yang harus memicu peristiwa. Tanpa filter, peristiwa akan dibuat untuk semua update penampung dalam akun penyimpanan.
Untuk mengetahui detail selengkapnya, lihat Transfer berbasis peristiwa dari Azure Blob Storage.
Kuota Azure API
Transfer dari banyak penampung dapat meningkatkan jumlah permintaan API yang dibuat ke Azure. Akun Azure Storage memiliki batas kecepatan permintaan, biasanya sekitar 20.000 permintaan per detik. Jika Anda memiliki sejumlah besar penampung, Storage Transfer Service dapat membatasi proses pencantuman agar tetap dalam batas ini.