Mengelola kontainer blob menggunakan Azure CLI

Penyimpanan Microsoft Azure Blob Storage memungkinkan Anda untuk menyimpan data objek tidak terstruktur dalam jumlah besar. Anda dapat menggunakan penyimpanan blob untuk mengumpulkan atau mengekspos data media, konten, atau aplikasi kepada pengguna. Karena semua data blob disimpan dalam kontainer, maka Anda harus membuat kontainer penyimpanan sebelum mulai mengunggah data. Untuk mempelajari penyimpanan blob lebih lanjut, baca Pengantar penyimpanan Azure Blob.

Azure CLI adalah pengalaman baris perintah lintas platform Azure untuk mengelola sumber daya Azure. Anda dapat menggunakannya di browser Anda dengan Azure Cloud Shell. Anda juga dapat menginstalnya di macOS, Linux, atau Windows, dan menjalankannya secara lokal dari baris perintah.

Pada artikel panduan ini, Anda akan mempelajari cara menggunakan Azure CLI dengan Bash untuk bekerja dengan objek kontainer.

Prasyarat

Untuk mengakses Azure Storage, Anda perlu berlangganan Azure. Jika Anda belum berlangganan, buat akun gratis sebelum memulai.

Semua akses ke Azure Storage dilakukan melalui akun penyimpanan. Untuk mulai cepat ini, Anda dapat membuat akun penyimpanan menggunakan portal Azure, Azure PowerShell, atau Azure CLI. Untuk bantuan membuat akun penyimpanan, lihat Membuat akun penyimpanan.

Persiapkan lingkungan Anda untuk Azure CLI

  • Sebaiknya Anda menginstal versi terbaru Azure CLI. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terinstal.

Izinkan akses ke penyimpanan Blob

Anda dapat mengotorisasi akses ke penyimpanan Blob dari Azure CLI baik dengan kredensial Microsoft Entra atau dengan menggunakan kunci akses akun penyimpanan. Menggunakan kredensial Microsoft Entra disarankan, dan contoh artikel ini menggunakan ID Microsoft Entra secara eksklusif.

Perintah Azure CLI untuk operasi data terhadap penyimpanan Blob mendukung --auth-mode parameter, yang memungkinkan Anda menentukan cara memberi izin operasi tertentu. Atur --auth-mode parameter ke login untuk mengotorisasi dengan kredensial Microsoft Entra. Untuk informasi selengkapnya, lihat Izin akses ke data blob atau antrean dengan Azure CLI.

Jalankan perintah login untuk membuka browser dan menyambungkan ke langganan Azure Anda.

az login

Membuat kontainer

Untuk membuat kontainer dengan Azure CLI, panggil perintah az storage container create. Contoh berikut mengilustrasikan tiga opsi untuk pembuatan kontainer blob dengan perintah az storage container create. Cara pertama menghasilkan satu kontainer, sementara dua cara lain menggunakan operasi Bash untuk mengotomatisasi pembuatan kontainer.

Untuk menggunakan contoh ini, berikan nilai pada variabel dan pastikan bahwa Anda masuk. Ingatlah untuk mengganti nilai tempat penampung dalam tanda kurung dengan nilai Anda sendiri.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"

# Approach 1: Create a container
az storage container create \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# Approach 2: Create containers with a loop
for value in {2..5}
do
    az storage container create \
        --name $containerPrefix$value \
        --account-name $storageAccount \
        --auth-mode login
done

# Approach 3: Create containers by splitting multiple values
containerList="${containerPrefix}6 ${containerPrefix}7 ${containerPrefix}8"
for container in $containerList
do
    az storage container create \
        --name $container \
        --account-name $storageAccount \
        --auth-mode login
done

Mencantumkan kontainer

Gunakan perintah az storage container list untuk mengambil daftar kontainer penyimpanan. Untuk menampilkan daftar kontainer yang namanya dimulai dengan string karakter tertentu, teruskan string yang dimaksud sebagai nilai parameter --prefix.

Parameter --num-results dapat digunakan untuk membatasi jumlah kontainer yang ditampilkan oleh permintaan. Azure Storage membatasi jumlah kontainer yang ditampilkan oleh operasi daftar tunggal hingga 5000. Batas ini memastikan bahwa jumlah data yang dapat dikelola bisa diambil. Jika jumlah kontainer yang ditampilkan melebihi nilai --num-results atau batas layanan, token kelanjutan akan ditampilkan. Token ini memungkinkan Anda untuk menggunakan beberapa permintaan untuk mengambil kontainer dengan jumlah berapa pun.

Anda juga dapat menggunakan parameter --query untuk menjalankan kueri JMESPath pada hasil perintah. JMESPath adalah bahasa kueri untuk JSON yang memungkinkan Anda memilih dan mengubah data yang ditampilkan dari output CLI. Kueri dijalankan di output JSON sebelum bisa diformat. Untuk informasi selengkapnya, lihat Cara membuat kueri output perintah Azure CLI menggunakan kueri JMESPath.

Contoh berikut ini pertama-tama mencantumkan jumlah maksimum kontainer (sesuai batas layanan). Berikutnya, mencantumkan tiga kontainer yang namanya memiliki prefiks container- dengan memasukkan nilai untuk parameter --num-results dan --prefix. Terakhir, satu kontainer dicantumkan dengan memasukkan nama kontainer yang diketahui untuk parameter --prefix.

Baca selengkapnya tentang daftar kontainer penyimpanan az.

#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
numResults="3"

# Approach 1: List maximum containers
az storage container list \
    --account-name $storageAccount \
    --auth-mode login

# Approach 2: List a defined number of named containers
az storage container list \
    --prefix $containerPrefix \
    --num-results $numResults \
    --account-name $storageAccount \
    --auth-mode login

# Approach 3: List an individual container
az storage container list \
    --prefix $containerPrefix \
    --query "[?name=='$containerName']" \
    --account-name $storageAccount \
    --auth-mode login

Membaca properti dan metadata kontainer

Kontainer memperlihatkan baik properti sistem dan metadata yang ditentukan pengguna. Terdapat properti sistem di setiap sumber daya penyimpanan blob. Beberapa properti bersifat baca-saja, sementara yang lain bisa dibaca atau diatur. Dibalik itu, beberapa properti sistem memetakan ke header HTTP standar tertentu.

Metadata yang ditentukan pengguna terdiri dari satu atau beberapa pasangan nama-nilai yang Anda tentukan untuk sumber daya penyimpanan blob. Anda dapat menggunakan metadata untuk menyimpan nilai tambahan dengan sumber daya. Nilai metadata hanya untuk tujuan Anda sendiri, dan tidak memengaruhi perilaku sumber daya.

Properti kontainer

Untuk menampilkan properti kontainer dengan Azure CLI, panggil perintah az storage container show.

Dalam contoh berikut ini, cara pertama menampilkan properti dari kontainer bernama tunggal. Berikutnya, cara ini mengambil semua kontainer yang memiliki prefiks demo-container- dan mengulanginya sekaligus mencantumkan properti kontainer tersebut. Ingatlah untuk mengganti nilai tempat penampung dengan nilai Anda sendiri.

#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"

# Show a named container's properties
az storage container show \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# List several containers and show their properties
containerList=$(az storage container list \
    --query "[].name" \
    --prefix $containerPrefix \
    --account-name $storageAccount \
    --auth-mode login \
    --output tsv)

for row in $containerList
do
  tmpRow=$(echo $row | sed -e 's/\r//g')
  az storage container show --name $tmpRow --account-name $storageAccount --auth-mode login
done

Metadata kontainer baca dan tulis

Pengguna yang memiliki ribuan objek dalam akun penyimpanan mereka dapat dengan cepat menemukan kontainer tertentu berdasarkan metadatanya. Untuk membaca metadata, Anda akan menggunakan perintah az storage container metadata show. Untuk memperbarui metadata, Anda harus menggunakan perintah az storage container metadata update. Metode ini hanya menerima pasangan nilai kunci yang dipisahkan spasi. Untuk informasi selengkapnya, lihat dokumentasi metadata kontainer penyimpanan az.

Contoh pertama di bawah memperbarui kemudian mengambil metadata kontainer bernama. Contoh kedua mengulangi daftar kontainer yang cocok dengan nilai -prefix. Kontainer dengan nama yang berisi angka genap memiliki metadata yang diatur dengan nilai yang terdapat di variabel metadata.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"

# Create metadata string
metadata="key=value pie=delicious"

# Update named container metadata
az storage container metadata update \
    --name $containerName \
    --metadata $metadata \
    --account-name $storageAccount \
    --auth-mode login

# Display metadata
az storage container metadata show \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# Get list of containers
containerList=$(az storage container list \
    --query "[].name" \
    --prefix $containerPrefix \
    --account-name $storageAccount \
    --auth-mode login \
    --output tsv)

# Update and display metadata
for row in $containerList
do
  #Get the container's number
  tmpName=$(echo $row | sed -e 's/\r//g')
  if [ `expr ${tmpName: ${#containerPrefix}} % 2` == 0 ]
  then
    az storage container metadata update \
        --name $tmpName \
        --metadata $metadata \
        --account-name $storageAccount \
        --auth-mode login
    
    echo $tmpName

    az storage container metadata show \
    --name $tmpName \
    --account-name $storageAccount \
    --auth-mode login    
  fi
done

Menghapus kontainer

Bergantung pada kasus penggunaan, Anda dapat menghapus satu atau sekelompok kontainer menggunakan perintah az storage container delete. Saat menghapus daftar kontainer, Anda harus menggunakan operasi kondisional seperti yang ditampilkan pada contoh di bawah ini.

Peringatan

Menjalankan contoh berikut dapat menghapus kontainer dan blob secara permanen. Microsoft merekomendasikan Anda mengaktifkan penghapusan sementara kontainer untuk melindungi kontainer dan blob dari penghapusan yang tidak disengaja. Untuk informasi selengkapnya, lihat Penghapusan sementara untuk kontainer.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"

# Delete a single named container
az storage container delete \
    --name $containerName \
    --account-name $storageAccount \
    --auth-mode login

# Delete containers by iterating a loop
list=$(az storage container list \
    --query "[].name" \
    --prefix $containerPrefix \
    --account-name $storageAccount \
    --auth-mode login \
    --output tsv)
for row in $list
do
    tmpName=$(echo $row | sed -e 's/\r//g')
    az storage container delete \
    --name $tmpName \
    --account-name $storageAccount \
    --auth-mode login
done

Jika penghapusan sementara kontainer diaktifkan untuk akun penyimpanan, Anda dapat mengambil kontainer yang telah dihapus. Jika opsi proteksi data penghapusan sementara akun penyimpanan Anda diaktifkan, maka parameter --include-deleted akan menampilkan kontainer yang telah dihapus dalam periode retensi terkait. Parameter --include-deleted hanya bisa digunakan untuk mengembalikan kontainer saat digunakan dengan parameter --prefix. Untuk mempelajari penghapusan sementara lebih lanjut, lihat artikel Penghapusan sementara kontainer.

Gunakan contoh berikut untuk mengambil daftar kontainer yang telah dihapus dalam periode retensi yang terkait dengan akun penyimpanan.

#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"

# Retrieve a list of containers including those recently deleted
az storage container list \
    --prefix $containerPrefix \
    --include-deleted \
    --account-name $storageAccount\
    --auth-mode login

Memulihkan kontainer yang dihapus sementara

Seperti yang telah disebutkan di Mencantumkan kontainer, Anda dapat mengonfigurasi opsi proteksi data penghapusan sementara pada akun penyimpanan Anda. Jika diaktifkan, kontainer yang telah dihapus dalam periode retensi terkait dapat dipulihkan. Sebelum dapat mengikuti contoh ini, Anda perlu mengaktifkan penghapusan sementara dan mengonfigurasinya di setidaknya salah satu akun penyimpanan Anda.

Contoh berikut menjelaskan cara memulihkan kontainer yang telah dihapus sementara menggunakan perintah az storage container restore. Anda harus menyediakan nilai bagi parameter --name dan --version untuk memastikan bahwa versi kontainer yang benar dipulihkan. Jika tidak mengetahui nomor versinya, Anda bisa menggunakan perintah az storage container list untuk mengambilnya seperti yang ditampilkan di contoh pertama. Contoh kedua menemukan dan memulihkan semua kontainer yang dihapus dalam akun penyimpanan tertentu.

Untuk mempelajari opsi proteksi data penghapusan sementara lebih lanjut, lihat artikel Penghapusan sementara kontainer.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"

# Restore an individual named container
containerVersion=$(az storage container list \
    --account-name $storageAccount \
    --query "[?name=='$containerName'].[version]" \
    --auth-mode login \
    --output tsv \
    --include-deleted | sed -e 's/\r//g')

az storage container restore \
    --name $containerName \
    --deleted-version $containerVersion \
    --account-name $storageAccount \
    --auth-mode login

# Restore a list of deleted containers
containerList=$(az storage container list \
    --account-name $storageAccount \
    --include-deleted \
    --auth-mode login \
    --query "[?deleted].{name:name,version:version}" \
    -o json)

for row in $(echo "${containerList}" | jq -c '.[]' )
do
    tmpName=$(echo $row | jq -r '.name')
    tmpVersion=$(echo $row | jq -r '.version')
    az storage container restore \
        --account-name $storageAccount \
        --name $tmpName \
        --deleted-version $tmpVersion \
        --auth-mode login
done

Mendapatkan tanda tangan akses bersama untuk kontainer

Tanda tangan akses bersama (SAS) memberikan akses yang didelegasikan ke sumber daya Azure. SAS memberikan Anda kontrol terperinci mengenai bagaimana klien dapat mengakses data Anda. Misalnya, Anda dapat menentukan sumber daya mana yang akan tersedia untuk klien. Anda juga dapat membatasi jenis operasi yang dapat dilakukan oleh klien, dan menentukan interval validitas SAS.

SAS umumnya digunakan untuk menyediakan akses sementara dan aman kepada klien yang biasanya tidak memiliki izin. Untuk menghasilkan SAS layanan atau akun, Anda harus menyediakan nilai untuk parameter --account-name dan --account-key. Contoh skenario ini adalah layanan yang memungkinkan pengguna untuk membaca dan menulis data mereka sendiri ke akun penyimpanan Anda.

Azure Storage mendukung tiga jenis tanda tangan akses bersama: delegasi pengguna, layanan, dan SAS akun. Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat artikel Memberikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).

Perhatian

Setiap klien yang memiliki SAS yang valid dapat mengakses data di akun penyimpanan Anda sebagaimana diizinkan oleh SAS tersebut. Penting untuk melindungi SAS dari penggunaan berbahaya atau tidak diinginkan. Gunakan kebijaksanaan dalam mendistribusikan SAS, dan memiliki rencana untuk mencabut SAS yang disusupi.

Contoh berikut ini menggambarkan proses konfigurasi layanan SAS untuk kontainer tertentu dengan menggunakan perintah az storage container generate-sas. Karena menghasilkan SAS layanan, contoh ini pertama-tama mengambil kunci akun penyimpanan untuk meneruskannya sebagai nilai --account-key.

Contohnya akan mengonfigurasi SAS dengan waktu mulai dan berakhir serta sebuah protokol. Contoh ini juga akan menentukan izin hapus, baca, tulis, dan buat daftar di SAS dengan menggunakan parameter --permissions. Anda dapat merujuk ke tabel lengkap izin dalam artikel Membuat SAS layanan.

Salin dan tempelkan nilai token SAS Blob di lokasi yang aman. Nilai token ini hanya akan ditampilkan sekali saja dan tidak dapat diambil setelah Bash ditutup. Untuk membuat URL SAS, tambahkan token SAS (URI) ke URL untuk layanan penyimpanan.

#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
permissions="drwl"
expiry=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'`

accountKey=$(az storage account keys list \
    --account-name $storageAccount \
    --query "[?permissions == 'FULL'].[value]" \
    --output tsv)

accountKey=$( echo $accountKey | cut -d' ' -f1 )
 
az storage container generate-sas \
    --name $containerName \
    --https-only \
    --permissions dlrw \
    --expiry $expiry \
    --account-key $accountKey \
    --account-name $storageAccount

Catatan

Token SAS yang dikembalikan oleh Azure CLI tidak menyertakan karakter pemisah ('?') untuk string kueri URL. Jika Anda menambahkan token SAS ke URL sumber daya, ingatlah untuk menambahkan karakter pemisah ke URL sumber daya sebelum menambahkan token SAS.

Langkah berikutnya

Dalam artikel panduan ini, Anda mempelajari cara mengelola kontainer di Blob Storage. Untuk mempelajari selengkapnya tentang bekerja dengan penyimpanan blob menggunakan Azure CLI, pilih opsi di bawah ini.