إدارة حاويات كائن ثنائي كبير الحجم باستخدام PowerShell
يسمح لك تخزين كائن ثنائي كبير الحجم من Azure بتخزين كميات مهولة من بيانات الكائن غير المنظمة. يمكنك استخدام تخزين كائن ثنائي كبير الحجم لجمع الوسائط أو المحتوى أو بيانات التطبيق للمستخدمين أو عرضها. نظرًا لأن كافة بيانات كائن ثنائي كبير الحجم تُخزن داخل حاويات، فيجب إنشاء حاوية تخزين قبل أن تتمكن من بدء تحميل البيانات. لمعرفة المزيد حول تخزين كائن ثنائي كبير الحجم، اقرأ مقدمة لتخزين Azure Blob.
تشرح هذه المقالة الإرشادية كيفية العمل مع كلٍ من كائنات حاوية التخزين الفردية والمتعددة.
المتطلبات الأساسية
اشتراك Azure. راجع الحصول على الإصدار التجريبي المجاني من Azure .
الوحدة Az لـ PowerShell هي وحدة PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell.
ستحتاج إلى الحصول على تخويل لاشتراك Azure قبل أن تتمكن من استخدام الأمثلة الواردة في هذه المقالة. يمكن أن يحدث التخويل عن طريق المصادقة باستخدام حساب Microsoft Entra أو باستخدام مفتاح مشترك. تستخدم الأمثلة في هذه المقالة مصادقة Microsoft Entra بالاقتران مع كائنات السياق. تغلف كائنات السياق بيانات اعتماد Microsoft Entra وتمريرها على عمليات البيانات اللاحقة، مما يلغي الحاجة إلى إعادة المصادقة.
لتسجيل الدخول إلى حساب Azure الخاص بك باستخدام حساب Microsoft Entra، افتح PowerShell واستدع الاتصال-AzAccount cmdlet.
# Connect to your Azure subscription
Connect-AzAccount
بعد إنشاء الاتصال، بادر بإنشاء سياق حساب التخزين عن طريق استدعاء New-AzStorageContext
cmdlet. قم بتضمين المعلمة -UseConnectedAccount
بحيث يتم تنفيذ عمليات البيانات باستخدام بيانات اعتماد Microsoft Entra.
# Create a context object using Azure AD credentials
$ctx = New-AzStorageContext -StorageAccountName <storage account name> -UseConnectedAccount
تذكَّر استبدال قيم العناصر النائبة في الأقواس بقيمك. لمزيد من المعلومات حول تسجيل الدخول في Azure باستخدام PowerShell، راجع تسجيل الدخول باستخدام Azure PowerShell.
إنشاء حاوية
لإنشاء حاويات باستخدام PowerShell، استدعِ New-AzStorageContainercmdlet. لا توجد حدود لعدد الكائنات الثنائية كبيرة الحجم أو الحاويات التي يمكن إنشاؤها داخل حساب تخزين. لا يمكن تضمين الحاويات داخل حاويات أخرى.
يوضح المثال التالي ثلاثة خيارات لإنشاء حاويات الكائنات الثنائية كبيرة الحجم باستخدام New-AzStorageContainer
cmdlet. يُنشئ الأسلوب الأول حاويةً واحدةً بينما يستفيد الأسلوبان المتبقيان من عمليات PowerShell لأتمتة إنشاء الحاوية.
لاستخدام هذا المثال، بادر بتوفير قيم للمتغيرات وتأكد من إنشاء اتصال باشتراك Azure خاصتك. تذكَّر استبدال قيم العناصر النائبة في الأقواس بقيمك.
# Create variables
$containerName = "individual-container"
$prefixName = "loop"
# Approach 1: Create a container
New-AzStorageContainer -Name $containerName -Context $ctx
# Approach 2: Create containers with a PowerShell loop
for ($i = 1; $i -le 3; $i++) {
New-AzStorageContainer -Name (-join($prefixName, $i)) -Context $ctx
}
# Approach 3: Create containers using the PowerShell Split method
"$($prefixName)4 $($prefixName)5 $($prefixName)6".split() | New-AzStorageContainer -Context $ctx
توفر النتيجة اسم حساب التخزين وتؤكد إنشاء الحاوية الجديدة.
Storage Account Name: demostorageaccount
Name PublicAccess LastModified
---- ------------ ------------
individual-container Off 11/2/2021 4:09:05 AM +00:00
loop-container1 Off 11/2/2021 4:09:05 AM +00:00
loop-container2 Off 11/2/2021 4:09:05 AM +00:00
loop-container3 Off 11/2/2021 4:09:05 AM +00:00
loop-container4 Off 11/2/2021 4:09:05 AM +00:00
loop-container5 Off 11/2/2021 4:09:05 AM +00:00
loop-container6 Off 11/2/2021 4:09:05 AM +00:00
قائمة الحاويات
استخدم Get-AzStorageContainer
cmdlet لاسترداد حاويات التخزين. لاسترداد حاوية واحدة، بادر بتضمين المعلمة -Name
. لإرجاع قائمة بالحاويات التي تبدأ بسلسلة أحرف معينة، حدد قيمة للمعلمة -Prefix.
يسترد المثال التالي كلاً من حاوية فردية وقائمة موارد الحاويات.
# Create variables
$containerName = "individual-container"
$prefixName = "loop-"
# Approach 1: Retrieve an individual container
Get-AzStorageContainer -Name $containerName -Context $ctx
Write-Host
# Approach 2: Retrieve a list of containers
Get-AzStorageContainer -Prefix $prefixName -Context $ctx
توفر النتيجة معرف URI لنقطة نهاية كائن ثنائي كبير الحجم وتدرج الحاويات التي تم استردادها بالاسم والبادئة.
Storage Account Name: demostorageaccount
Name PublicAccess LastModified IsDeleted VersionId
---- ------------ ------------ --------- ---------
individual-container 11/2/2021 5:52:08 PM +00:00
loop-container1 11/2/2021 12:22:00 AM +00:00
loop-container2 11/2/2021 12:22:00 AM +00:00
loop-container1 11/2/2021 12:22:00 AM +00:00
loop-container2 11/2/2021 12:22:00 AM +00:00
loop-container3 11/2/2021 12:22:00 AM +00:00 True 01D7E7129FDBD7D4
loop-container4 11/2/2021 12:22:00 AM +00:00 True 01D7E8A5EF01C787
قراءة خصائص الحاوية وبيانات التعريف
تعرض الحاوية كلاً من خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم. توجد خصائص النظام على كل مورد من موارد تخزين كائن ثنائي كبير الحجم. بعض الخصائص للقراءة فقط، بينما يمكن قراءة خصائص أخرى أو تعيينها. تحت الأغلفة، تُعيّن بعض خصائص النظام إلى عناوين HTTP قياسية معينة.
تتكون بيانات التعريف المعرفة من قبل المستخدم من زوج واحد أو أكثر من أزواج اسم-قيمة التي تحددها لمورد تخزين كائن ثنائي كبير الحجم. يمكنك استخدام بيانات التعريف لتخزين قيم إضافية مع المورد. قيم بيانات التعريف هي لأغراضك فقط، ولا تؤثر على كيفية تصرف المورد.
خصائص الحاوية
بعد ذلك يسترد جميع الحاويات مع البادئة demo ويتكرر من خلالهم مع إدراج خصائصها.
# Create variable
$prefix = "loop"
# Get containers
$containers = Get-AzStorageContainer -Prefix $prefix -Context $ctx
# Iterate containers, display properties
Foreach ($container in $containers)
{
$containerProperties = $container.BlobContainerClient.GetProperties()
Write-Host $container.Name "properties:"
$containerProperties.Value
}
تعرض النتائج جميع الحاويات التي تحتوي على تكرار البادئة وتدرج خصائصها.
loop-container1 properties:
LastModified : 12/7/2021 7:47:17 PM +00:00
LeaseStatus : Unlocked
LeaseState : Available
LeaseDuration : Infinite
PublicAccess :
HasImmutabilityPolicy : False
HasLegalHold : False
DefaultEncryptionScope : $account-encryption-key
PreventEncryptionScopeOverride : False
DeletedOn :
RemainingRetentionDays :
ETag : 0x8D9B9BA602806DA
Metadata : {}
HasImmutableStorageWithVersioning : False
loop-container2 properties:
LastModified : 12/7/2021 7:47:18 PM +00:00
LeaseStatus : Unlocked
LeaseState : Available
LeaseDuration : Infinite
PublicAccess :
HasImmutabilityPolicy : False
HasLegalHold : False
DefaultEncryptionScope : $account-encryption-key
PreventEncryptionScopeOverride : False
DeletedOn :
RemainingRetentionDays :
ETag : 0x8D9B9BA605996AE
Metadata : {}
HasImmutableStorageWithVersioning : False
قراءة بيانات تعريف الحاوية وكتابتها
يمكن للمستخدمين الذين لديهم عدة آلاف من العناصر داخل حساب التخزين خاصتهم تحديد مواقع حاويات معينة بسرعة استنادًا إلى بيانات تعريفهم. للوصول إلى بيانات التعريف، ستستخدم الكائن BlobContainerClient
. يسمح لك هذا الكائن بالوصول إلى الحاويات والكائنات الثنائية كبيرة الحجم خاصتها ومعالجتها. لتحديث بيانات التعريف، ستحتاج إلى استدعاء الأسلوب SetMetadata()
. يقبل هذا الأسلوب أزواج قيم المفاتيح المخزنة في كائن IDictionary
عام فقط. لمزيدٍ من المعلومات، راجع تعريف فئة BlobContainerClient
يحدِّث المثال أدناه أولاً بيانات تعريف الحاوية وبعد ذلك استرداد بيانات تعريف الحاوية. يمسح المثال نموذج الحاوية من الذاكرة ويستردها مرةً أخرى لضمان عدم قراءة بيانات التعريف من الكائن الموجود في الذاكرة.
# Create variable
$containerName = "individual-container"
# Retrieve container
$container = Get-AzStorageContainer -Name $containerName -Context $ctx
# Create IDictionary, add key-value metadata pairs to IDictionary
$metadata = New-Object System.Collections.Generic.Dictionary"[String,String]"
$metadata.Add("CustomerName","Anthony Bennedetto")
$metadata.Add("CustomerDOB","08/03/1926")
$metadata.Add("CustomerBirthplace","Long Island City")
# Update metadata
$container.BlobContainerClient.SetMetadata($metadata, $null)
# Flush container from memory, retrieve updated container
$container = $null
$container = Get-AzStorageContainer -Name $containerName -Context $ctx
# Display metadata
$properties = $container.BlobContainerClient.GetProperties()
Write-Host $container.Name "metadata:"
Write-Host $properties.Value.Metadata
تعرض النتائج بيانات التعريف الكاملة لحاوية.
individual-container metadata:
[CustomerName, Anthony Bennedetto] [CustomerDOB, 08/03/1926] [CustomerBirthplace, Long Island City]
الحصول على توقيع الوصول المشترك للحاوية
يوفر توقيع الوصول المشترك (SAS) الوصول المُفوض إلى موارد Azure. يمنحك توقيع الوصول المشترك تحكمًا دقيقًا في كيفية وصول العميل إلى بياناتك. على سبيل المثال، يمكنك تحديد الموارد المُتوفرة للعميل. يمكنك أيضاً تحديد أنواع العمليات التي يمكن للعميل تنفيذها، وتحديد مقدار الوقت الذي يمكن فيه اتخاذ الإجراءات.
يُشاع استخدام توقيع الوصول المشترك لتوفير وصول مؤقت وآمن إلى عميل لا يملك أذونات عادة. مثال على هذا السيناريو هو خدمة تسمح للمستخدمين بقراءة بياناتهم وكتابتها في حساب تخزينك.
يدعم Azure Storage ثلاثة أنواع من توقيعات الوصول المشتركة: تفويض المستخدم والخدمة وحساب SAS. لمزيدٍ من المعلومات عن توقيعات الوصول المشترك، راجع مقالة إنشاء خدمة SAS لحاوية أو نقطة.
تنبيه
يمكن لأي عميل يمتلك توقيع وصول مشترك صالح الوصول إلى البيانات في حساب التخزين خاصتك كما هو مسموح به من توقيع الوصول المشترك. من المهم حماية توقيع الوصول المشترك من الاستخدام الضار أو غير المقصود. استخدم التقدير في توزيع توقيع الوصول المشترك، وضع خطة لإلغاء توقيع الوصول المشترك المُخترق.
يوضح المثال التالي عملية تكوين خدمة توقيع الوصول المشترك لحاوية معينة باستخدام New-AzStorageContainerSASToken
cmdlet. سيُكوّن المثال توقيع الوصول المشترك بأوقات البدء وانتهاء الصلاحية والبروتوكول. كما سيتم تحديد أذونات قراءة، و كتابة، و إدراج في توقيع الوصول المشترك باستخدام المعلمة -Permission
. يمكنك الرجوع إلى الجدول الكامل للأذونات في المقالة إنشاء خدمة توقيع الوصول المشترك.
# Create variables
$accountName = "<storage-account>"
$containerName = "individual-container"
$startTime = Get-Date
$expiryTime = $startTime.AddDays(7)
$permissions = "rwl"
$protocol = "HttpsOnly"
# Create a context object using Azure AD credentials, retrieve container
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
# Approach 1: Generate SAS token for a specific container
$sas = New-AzStorageContainerSASToken `
-Context $ctx `
-Name $containerName `
-StartTime $startTime `
-ExpiryTime $expiryTime `
-Permission $permissions `
-Protocol $protocol
# Approach 2: Generate SAS tokens for a container list using pipeline
Get-AzStorageContainer -Container $filterName -Context $ctx | New-AzStorageContainerSASToken `
-Context $ctx `
-StartTime $startTime `
-ExpiryTime $expiryTime `
-Permission $permissions `
-Protocol $protocol | Write-Output
إشعار
لا يتضمن رمز SAS المميز الذي تم إرجاعه بواسطة Blob Storage حرف المحدد ('؟') لسلسلة استعلام URL. إذا كنت تقوم بإلحاق رمز SAS المميز بعنوان URL لمورد، فتذكر أيضا إلحاق حرف المحدد.
حذف الحاويات
استناداً إلى حالة الاستخدام خاصتك، يمكنك حذف حاوية واحدة أو مجموعة من الحاويات باستخدام Remove-AzStorageContainer
cmdlet. عند حذف قائمة الحاويات، يمكنك الاستفادة من العمليات الشرطية أو التكرارات الحلقية أو البنية الأساسية لبرنامج ربط العمليات التجارية في PowerShell كما هو موضح في الأمثلة أدناه.
# Create variables
$accountName = "<storage-account>"
$containerName = "individual-container"
$prefixName = "loop-"
# Delete a single named container
Remove-AzStorageContainer -Name $containerName -Context $ctx
# Iterate a loop, deleting containers
for ($i = 1; $i -le 2; $i++) {
Remove-AzStorageContainer -Name (-join($containerPrefix, $i)) -Context $ctx
}
# Retrieve container list, delete using a pipeline
Get-AzStorageContainer -Prefix $prefixName -Context $ctx | Remove-AzStorageContainer
في بعض الحالات، من الممكن استرداد الحاويات التي تم حذفها. إذا مُكّن خيار حماية بيانات الحذف المبدئي لحساب التخزين خاصتك، ستُرجه المعلمة -IncludeDeleted
الحاويات المحذوفة خلال فترة الاستبقاء المُقترنة. لا يمكن استخدام المعلمة -IncludeDeleted
إلا بالاقتران مع المعلمة -Prefix
عند إرجاع قائمة الحاويات. لمعرفة المزيد حول الحذف المبدئي، راجع مقالة حذف مبدئي للحاويات.
استخدم المثال التالي لاسترداد قائمة الحاويات المحذوفة ضمن فترة الاستبقاء المُقترنة بحساب التخزين.
# Retrieve a list of containers including those recently deleted
Get-AzStorageContainer -Prefix $prefixName -Context $ctx -IncludeDeleted
استعادة حاوية حُذفت مبدئيًا
كما هو مذكور في قسم قائمة الحاويات، يمكنك تكوين خيار حماية بيانات الحذف المبدئي على حساب التخزين خاصتك. عند التمكين، من الممكن استعادة الحاويات المحذوفة خلال فترة الاستبقاء المُقترنة.
تُوضح الأمثلة التالية كيفية استعادة حاوية حُذفت مبدئياً باستخدام Restore-AzStorageContainer
cmdlet. قبل أن تتمكن من اتباع هذا المثال، ستحتاج إلى تمكين الحذف المبدئي وتكوينه على حساب تخزين واحد على الأقل.
لمعرفة المزيد حول خيار حماية بيانات الحذف المبدئي، راجع مقالة حذف مبدئي للحاويات.
# Create variables
$accountName = "<storage-account>"
$prefixName = "loop-"
# Create a context object using Azure AD credentials
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
# Retrieve all containers, filter deleted containers, restore deleted containers
Get-AzStorageContainer -Prefix $prefixName -IncludeDeleted `
-Context $ctx | ? { $_.IsDeleted } | Restore-AzStorageContainer
تعرض النتائج جميع الحاويات التي تحتوي على عرض توضيحي للبادئة والتي تمت استعادتها.
Storage Account Name: demostorageaccount
Name PublicAccess LastModified IsDeleted VersionId
---- ------------ ------------ --------- ---------
loop-container3
loop-container4