איך להשתמש באחסון Blob דרך אחסון קובץ Azure

ניתן למצוא את עצמך זקוק לפתרון זול אך יעיל לאחסון הקבצים שלך בכל שלב, אך איפה מצאת את הפתרון הזה? תבדוק את אחסון עצמאי של עצם בינארי (Blob) של Microsoft Azure! אחסון Blob הוא אחד משירותי האחסון של Azure ומאפשר לך לאחסן כמויות גדולות של קבצי טקסט ומידע בינארי, תוכן זרם או אפילו תוכן סטטי להפצה.

במדריך זה, תלמד איך לעבוד עם אחסון Blob ב-Azure על ידי הליכים בדוגמאות נפוצות.

קרא הלאה כדי להתקדם!

דרישות ראשוניות

מדובר בהדגמה שמעון לקבל חלק בה, ודא שיש לך את התקנים והיכולות הבאות.

בניית סביבת Azure

לפני שאתה משתמש באחסון blob לאחסון הקבצים שלך, תצטרך לייבא מודולים של PowerShell Core, להתחבר למנוי שלך ב-Azure, ולבנות סביבת Azure.

1. הפעל את PowerShell 7 והפעל את הפקודה הבאה כדי לייבא מודולים שתשתמש בהם לאחסון קבצים באחסון blob.

Importing the necessary modules
# Az.Accounts - מספק פקודות ניהול כרטיסי אשראי
# Az.Resources - מספק פקודות לעבוד עם ספקי המשאב העליונים של Azure, 
               # כמו מנויים
# Az.Storage - מספק פקודות שיעזרו לך לעבוד עם 
             # משאבי אחסון שונים, כמו בלובים
Import-Module Az.Accounts, Az.Resources, Az.Storage

2. לאחר מכן, התחבר ל-דיור הפעיל שלך ב-Azure, ואז הפעל את הפקודה למטה כדי להשלים אימות אינטראקטיבי בדפדפן האינטרנט שלך, כפי שמוצג למטה.

אף על פי שמחוץ לטווח של המדריך הזה, קיימים שיטות אימות אחרות, כגון Service Principal או שימוש ב־אסימון גישה.

Connect-AzAccount
Azure Portal interactive login.

תמיד וודא שהמשכיר והמינוי המוצגים לאחר התחברות הם אלה שתכוון להשתמש בהם. אם נדרש, באפשרותך לשנות את ההקשר שלך.

3. כעת הרץ את הפקודה הבאה כדי ליצור קבוצת משאבים חדשה בשם demo, ומוסיף אליה חמישה מספרים אקראיים (Get-Random -Maximum 99999). קבוצות המשאבים נמצאות בהיררכיה מתחת למינויים ומכילות משאבים שמאפשרים ניהול מופקטי.

שים לב שה־-מיקום של קבוצת המשאבים מוגדר ל־Central US בדוגמה זו. כאשר הפקודה מושלמת, היא שומרת את התוצאה במשתנה $resourceGroup.

$resourceGroup = New-AzResourceGroup "demo$(Get-Random -Maximum 99999)" -Location 'Central US'
Creating a new resource group

4. הריצו את הפקודה להביצוע המשימות הבאות וליצירת חשבון אחסון Azure חדש. לדוגמה, שם החשבון המאוחסן הוא storage, ונוסף אליו חמישה מספרים אקראיים (Get-Random -Maximum 99999). המשתנה $storageAccount יחזיק את האובייקט שיחזור לאחר השלמת הפקודה.

# עבירת -ResourceGroupName עם מאפיין ResourceGroupName 
# של המשתנה $resourceGroup שנוצר בשלב שלוש.
# הוספת מספרים אקראיים לשם חשבון האחסון -Name 
# דומים לקבוצת המשאבים.
# הגדרת אותה -Location כמו מאפיין Location של המשתנה $resourceGroup.
# הצבת משאבים באותה אזור כמו קבוצת המשאבים האב היא שיטה טובה. 
# ציון שם חשבון האחסון -SkuName עם אחד מהאפשרויות
# אחסון חוזר מקומי (LRS) או שם ייחודי בעולם בתוך Azure.

$storageAccount = New-AzStorageAccount `
 -ResourceGroupName $resourceGroup.ResourceGroupName `
 -Name storage$(Get-Random -Maximum 99999) `
 -Location $resourceGroup.Location `
 -SkuName Standard_LRS
Creating a new storage account

5. הריצו את הפקודה הבאה כדי לבצע כמה משימות עבור הקצאת תפקיד Azure AD:

  • הערך של -SignInName משתמש בחשבון שאתה מחובר אליו כרגע דרך מאפיין UserID המוחזר על ידי הפקודה Get-AzAccessToken.
  • ערך ה־-RoleDefinitionName הוא התפקיד המובנה Storage Blob Data Contributor שאתה משיין.
  • ערך ה־-Scope מגדיר את ההיקף של ההקצאת תפקיד לחשבון האחסון שיצרת (המוצג בשם storage10029) דרך מאפיין Id של משתנה $storageAccount.

תמיד ניתן לספק הקצאות תפקיד יותר דקות למיכלים פרטיים ככל הצורך.

New-AzRoleAssignment `
 -SignInName (Get-AzAccessToken).UserId`
 -RoleDefinitionName "Storage Blob Data Contributor"`
 -Scope $storageAccount.Id
Creating and verifying a new file

6. לבסוף, הפעל את סדר הפקודות למטה כדי ליצור קובץ בשם temp.dat במערכת המקומית שלך. תעלה ותוריד את הקובץ הזה מהחשבון האחסון בחלקים הבאים כדי להדגיש כיצד אחסון ה-Blob עובד.

# טען את ה-Class של FileStream ב-.NET
$file = New-Object System.IO.FileStream .\temp.dat,Create,ReadWrite
# הגדר את גודל הקובץ
$file.SetLength(10MB)
# סגור את הידית
$file.Close()
# חפש את הקובץ כדי לאשר את הגודל
(Get-ChildItem $file.Name).Length
Creating and verifying a new file

העלאת קבצים דרך PowerShell

עכשיו שבנית סביבת Azure ויצרת קובץ דוגמה, בואו נתחיל להעלות את הקובץ לאחסון blob. אחסון blob פועל בצורה שונה ממערכות הקבצים התקניות. כל קובץ באחסון blob הוא אובייקט ומתקיים בתוך קונטיינרים.

הפונקציות היסודיות של ה- blobs דומות למערכות קבצים אחרות, אך יש תרחישים בהם כל אחד מהם יכול להיות פתרון טוב יותר. בלובים אפשר גם לתמוך במערכות קבצים וירטואליות (לדוג' BlobFuse).

מיקרוסופט מציעה מספר אפשרויות להעלאת קבצים לחשבונות האחסון שלך דרך PowerShell, AzCopy, ו Azure Portal. אך בוא נעלה את קובץ הדוגמה (temp.dat) לאחסון blob דרך PowerShell להתחלה. PowerShell מאפשר לך חוויית עבודה יציבה עם חשבונות האחסון שלך ב-Azure.

הפעולות הנדרשות לביצוע הדגמה הזו יכולות לגרום לעלויות. מומלץ לעקוב אחרי הצריכה שלך ולמחוק משאבים כשאין לך כוונה להם יותר.

הריצו את הפקודות למטה כדי ליצור קונטיינר חדש ולהעלות את קובץ temp.dat ($file) כאובייקט. הקונטיינר נקרא demo לדוגמה זו, אך תוכלו לתת לו שם אחר לפי ההעדפה שלך.

# יוצר מיכל בתוך $storageAccount דרך המאפיין Context של חשבון האחסון
# האובייקט שהוחזר מועבר אז למשתנה $container
$container = New-AzStorageContainer -Name demo -Context $storageAccount.Context
# מעלה את קובץ temp.dat ($file) לתוך המיכל הדמו ($container)
# שם ה-Blob (-Blob) יהיה זהה לשם הקובץ שאתה מעלה (Get-ChildItem $file.Name)
Set-AzStorageBlobContent -File $file.Name -Container $container.Name -Blob (Get-ChildItem $file.Name).Name -Context $storageAccount.Context
Uploading a file to Azure Storage Account

העלאת קבצים דרך AzCopy

אולי יש לך מקרים שימושיים מורכבים יותר, כמו סנכרון תוכן או העתקת תוכן בין חשבונות שונים בסקאלה. אם כן, כלי השורת פקודה AzCopy הוא מה שאתה צריך.

הרץ את הפקודות למטה כדי להתחבר למערכת ה Azure שלך ולהעתיק את הקובץ המקומי שלך ($file) לכתובת ה-URL של המיכל שלך. אתה מתחבר למערכת Azure מאחר ו-AzCopy אינו מודע לזיהוי האישורים שאתה משתמש בהם עם PowerShell.

# התחברו למנהל הכתובות Azure
& .\azcopy.exe login
# העתקו את הקובץ המקומי $file לכתובת המלאה של היעד $container
& .\azcopy.exe copy $file.Name $container.CloudBlobContainer.Uri.AbsoluteUri
Uploading to Azure Storage Account using AzCopy

במקום העלאה, אולי תרצו להוריד קבצים באמצעות AzCopy. אם כן, הפעילו את הפקודה למטה כדי להעתיק את הקבצים המסוימים (temp.dat) מהתכולה שלכם לספריית המקומית הנוכחית: & .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat

העלאת קבצים דרך פורטל Azure

אם אתם מעדיפים שיטת GUI להעלאת הקבצים שלכם, אז ממשק Azure Storage הוא חברכם. ממשק האחסון של Azure הוא אחת משיטות הניהול הגרפיות הטובות ביותר לניהול האחסון שלכם. ניתן לגשת לממשק האחסון ממשאב החשבון שלכם בפורטל Azure.

1. פתחו את דפדפן האינטרנט האהוב עליכם ונווטו לממשק האחסון שלכם בפורטל Azure.

2. לחצו על התכולה demo תחת אחסוני BLOB, כפי שמוצג למטה, ואז לחצו על העלאה כדי לגשת ללהב "העלאת Blob" (לוח הימין).

3. כעת לחצו על סמל התיקייה בלוח "העלאת Blob" כדי לבחור אילו קבצים להעלאה (temp.dat).

סוף סוף, לחץ על העלאה (כפתור כחול) כדי להעלות את הקובץ שלך.

Using the Upload blob blade in Azure Storage Explorer

לאחר ההעלאה, ניתן לסגור את לוח ה־העלאת ה־blob ולראות את ה־blob שהועלה, כמו בתמונה למטה.

Viewing contents of a blob container in Azure Storage Explorer

הורדת קבצים דרך פורטל Azure

בדומה להעלאת תוכן לאחסון blob, Azure תומך בהורדת תוכן בכמה דרכים. אך מאחר שהעלית קובץ (temp.dat) דרך פורטל Azure, בוא נוריד את אותו הקובץ באמצעות סייר האחסון של Azure בפורטל Azure.

בחר את הקובץ (temp.dat) להורדה ולחץ על כפתור ה־הורדה בסייר האחסון של Azure, כפי שמוצג למטה. פעולה זו תפתח תיבת דו־שיח חדשה כדי לאשר את ההורדה שתראה בשלב הבא.

Selecting Files to Download

עכשיו לחץ על כפתור לחץ כאן כדי להתחיל בהורדה כדי להוריד את הקבצים שבחרת.

Downloading Selected Files from the Blob Storage

הורדת קבצים דרך PowerShell

כמו בהעלאת קבצים, יש לך גם אפשרות להוריד קבצים מאחסון ה־blob על ידי הרצת פקודות ב־PowerShell. בעזרת PowerShell, ניתן לרשום את האובייקטים בתוך קונטיינר, ואז להוריד אותם.

הרץ את הפקודות הבאות כדי לרשום את כל האובייקטים בקונטיינר שלך ולהוריד את temp.dat לתיקייה המקומית שלך.

# רשום את כל האובייקטים בתוך ה־$container כדי לוודא שהקונטיינר הריק נוצר
Get-AzStorageBlob -Container $container.Name -Context $storageAccount.Context
# הורד את האובייקט temp.dat מה־$container
Get-AzStorageBlobContent -Blob temp.dat -Container $container.Name -Context $storageAccount.Context
Downloading files from Azure Storage Account

אם תעדיפו להשתמש בקישורים ייחודיים הפועלים לזמן קצר כדי להוריד קבצים, ניתן להשתמש ב אסימון שיתוף גישה משותף (SAS) כדי ליצור קישור להורדה שמור מראש. אלה הם אסימונים ייחודיים ופרטיים המאשרים את הגישה שלך.

הריצו את הפקודות למטה כדי ליצור קישור הורדה חדש עבור הקובץ (temp.dat) שתרצו להוריד. הקישור להורדה שנוצר יפוג אחרי 10 שניות ויעביר את התוכן באמצעותו למשתנה $temp.

# ליצירת קישור הורדה חדש התקפל עבור 10 דקות
$uri = New-AzStorageBlobSASToken -Context $storageAccount.Context -Container $container.Name -Blob temp.dat -Permission r -ExpiryTime (Get-Date).AddSeconds(10) -FullUri
# השתמשו בקישור כדי להוריד את הקובץ למשתנה $temp
$temp = Invoke-WebRequest $uri

# או אפשרו לקובץ להתקיים בתיקייה הנוכחית
Invoke-WebRequest $uri -OutFile .\temp.dat
Download from Azure Storage Account using a SAS token

אירוח עמוד אינטרנטי באינטרנט הציבורי מאחסון Blob

עד כה, ראיתם דוגמאות להורדת קבצים על ידי משתמשים מאומתים. אבל הידעתם שאחסון ה-Blob יכול לספק אפשרות מצוינת גם לתוכן ציבורי? דוגמה אחת היא השימוש ב-Blob לאחסון תוכן דף האינטרנט שלכם, אשר תצליחו לבצע בדמו זה.

אפילו אם תוכן דף האינטרנט שלך מוצפן גם במעבר וגם במנוחה, כל אחד יכול לגשת אל התוכן הזה אם הגישה הציבורית מוגדרת.

מאחר שאתה מגדיר מקרה שימוש שונה, תשתמש באחד היתרונות העיקריים של הענן הציבורי בגודל ובגמישות. תוכל להקצות חשבון אחסון חדש עבור מקרה שימוש ספציפי ולהגביל את הסיכון בשימוש במיכלים ציבוריים.

1. הרץ את הפקודה ליצירת חשבון אחסון חדש כפי שעשית בשלב הרביעי של סעיף "בניית סביבת Azure". אך הפעם, תעבור את האובייקט שחוזר למשתנה $publicStorageAccount.

$publicStorageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup.ResourceGroupName -Name storage$(Get-Random -Maximum 99999) -Location $resourceGroup.Location -SkuName Standard_LRS
Creating a storage account

עכשיו יש לך חשבון אחסון מוקצה עבור תוכן הציבורי שלך, ותוכל להגדיר אותו לארח תוכן אינטרנטי סטטי באמצעות הפקודה הבאה.

2. לאחר מכן, הפעל את הפקודה Enable-AzStorageStaticWebsite כדי להגדיר את חשבון האחסון ($publicStorageAccount) למקרה השימוש החדש שלך. האפשרות -IndexDocument מגדירה את העמוד האינטרנטי המוגדר כברירת מחדל שתרצה להציג למשתמשים. האפשרות -Context תהיה חשבון האחסון החדש שכרגע יצרת.

# צור את המיכל $web והגדר את חשבון האחסון
Enable-AzStorageStaticWebsite -IndexDocument index.html -Context $publicStorageAccount.Context
Enable storage account for website hosting

3. הרץ את הפקודות למטה כדי ליצור מסמך HTML חדש בתיקיית הנוכחית שלך, ולהעלות את המסמך הזה למיכל שנועד לאירוח תוכן אינטרנטי. סוג התוכן מוגדר כ-HTML (ContentType="text/html"), כך שדפדפני האינטרנט יכולים לפענח את המסמך בצורה תקינה.

גישה למסמך בדפדפן אינטרנט מדפיסה את ההודעה Hello from <storage account name>.

# צור קובץ HTML פשוט
"<body><h1>Hello from $($publicStorageAccount.StorageAccountName)!</h1></body>"|Out-File .\index.html
# העלה את קובץ ה-HTML לתוך תפריט האחסון הסטטי וקבע את ContentType ל-text/html
Set-AzStorageBlobContent -File .\index.html -Container "`$web" -Properties @{ContentType="text/html"} -Context $publicStorageAccount.Context
Create and upload an HTML document

4. כעת הרץ את הפקודה הבאה כדי לקבל את כתובת ה-URL שבה משתמשים יכולים לגשת אל תוכן שלך.

$publicStorageAccount.PrimaryEndpoints.Web
Get the URI of the endpoint

5. לבסוף, פתח את ה-URL בדפדפן שלך, ותראה משהו דומה לתמונה הבאה.

Accessing HTML Document from Blob Storage

ניקוי משאבים

עכשיו שעברת דרך בדיקת המושגים החדשים בשימוש באחסון כדור, תרצה לנקות את המשאבים שלך. למה? על-מנת לשמור על המינוי שלך. בנוסף, אתה עוצר להוסיף תשלומים נוספים.

מאחר וכל המשאבים שהשתמשת בהם במדריך זה נמצאים באותה קבוצת משאבים אחת, אתה יכול לנקות את כל המשאבים על ידי מחיקת קבוצת המשאבים.

לא תמיד יתאפשר להכניס את כל המשאבים בתוך קבוצת משאבים אחת, וזה ממחיש למה שימוש רב בחלוקה לוגית יכול להיות מועיל, במיוחד כאשר אתה נבדק או חוזר על התהליכים בתדירות.

הרץ את ה-Remove-AzResourceGroup cmdlet למטה, וציין את המאפיין ResourceGroupName של המשתנה $resourceGroup כדי למחוק את קבוצת המשאבים וכל המשאבים בתוך זה.

Remove-AzResourceGroup -Name $resourceGroup.ResourceGroupName
Delete resource group and contents

סיכום

במדריך זה, נגעת בהעלאה והורדה של קבצים אל ומתוך כדורים באחסון בענן בפלטפורמות שונות. למדת גם שאפשר לארח דף אינטרנט מאחסון בענן שמשתמשים יכולים לגשת אליו באופן ציבורי.

ניתן לעשות יותר עם אחסון Blob וסוגי אחסון אחרים, אז איך היית מבנה על מושגים אלה? אולי לעבוד עם חשבונות אחסון של קבצים, לספק מערכות קבצים ללא שרת, או להשתמש ב-Blobs דף עבור דיסקים קשיחים וירטואליים עם מכונות וירטואליות של Azure?

Source:
https://adamtheautomator.com/blob-storage/