העלאת קבצים ל-S3 עם CLI של AWS: מדריך מקיף

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

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

לדרישות אוטומציה כאלו עם שירותי Amazon Web, כולל Amazon S3, כלי AWS CLI מספק למנהלים אפשרויות בממשק שורת פקודה לניהול דליי S3 ואובייקטים.

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

דרישות מוקדמות

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

  • חשבון AWS. אם אין לך מנוי AWS קיים, תוכל להירשם ל-תכנית הבדיקה של AWS.
  • דלי של AWS S3. ניתן להשתמש בדלי קיים אם תעדיף, אך מומלץ ליצור דלי ריק במקום. אנא הפנה אל יצירת דלי.
  • A Windows 10 computer with at least Windows PowerShell 5.1. In this article, PowerShell 7.0.2 will be used.
  • כלי הגרסה ה-2 של AWS CLI חייב להיות מותקן על המחשב שלך.
  • תיקיות וקבצים מקומיים שתעלה או תסנכרן עם Amazon S3

הכנת הגישה שלך ל-AWS S3

נניח שכבר יש לך את הדרישות הנדרשות. היית חושב שכבר אתה יכול להתחיל ולפעול עם AWS CLI עם הדלי שלך ב-S3. כלומר, הלוואי והיה זה פשוט כל כך, נכון?

לאלו מכם שרק מתחילים לעבוד עם Amazon S3 או AWS בכלל, סעיף זה מטרתו לעזור לכם להגדיר גישה ל-S3 ולהגדיר פרופיל של AWS CLI.

התיעוד המלא ליצירת משתמש IAM ב-AWS ניתן למצוא בקישור שלהלן. יצירת משתמש IAM בחשבון ה-AWS שלך

יצירת משתמש IAM עם הרשאת גישה ל-S3

כאשר מבצעים גישה ל-AWS באמצעות ה-CLI, יהיה עליך ליצור משתמש אחד או יותר של IAM עם גישה מספקת למשאבים עם הם אתה מתכוון לעבוד. בסעיף זה, תיצור משתמש IAM עם גישה ל-Amazon S3.

כדי ליצור משתמש IAM עם גישה ל-Amazon S3, עליך תחילה להיכנס לתוך מרכז השליטה של AWS IAM. בקבוצת ניהול גישה, לחץ על משתמשים. לאחר מכן, לחץ על הוסף משתמש.

IAM Users Menu

הזן את שם המשתמש IAM שאתה יוצר בתוך תיבת שם משתמש* כגון s3Admin. בבחירת סוג גישה*, סמן את גישת פרוגרמה. לאחר מכן, לחץ על הבא: הרשאות.

Set IAM user details

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

Assign IAM user permissions

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

IAM user tags

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

IAM user summary

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

IAM user key credentials

הגדרת פרופיל AWS על המחשב שלך

עכשיו שיצרת את המשתמש IAM עם הגישה המתאימה ל-Amazon S3, השלב הבא הוא להגדיר את פרופיל ה-CLI של AWS על המחשב שלך.

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

  • ה-מזהה מפתח גישה של המשתמש IAM.
  • ה-מפתח גישה סודי הקשור למשתמש IAM.
  • שם האזור ברירת מחדל המתאים למיקום של דלת ה-S3 שלך ב-AWS. ניתן לבדוק את רשימת נקודות הקצה באמצעות קישור זה. במאמר זה, דלת ה-S3 של AWS ממוקמת באזור אסיה-שקם המזרחית (סידני), והנקודה הסופית המתאימה היא ap-southeast-2.
  • פורמט הפלט ברירת המחדל. יש להשתמש ב־JSON לכך.

כדי ליצור את הפרופיל, פתח את PowerShell והקלד את הפקודה למטה ועקוב אחר ההוראות.

aws configure

הזן את מזהה מפתח הגישה, מפתח הגישה הסודי, שם אזור ברירת המחדל, ו־שם ברירת המחדל לפלט. ראה את הדגמה למטה.

Configure an AWS CLI profile

בדיקת גישה ל-CLI של AWS

לאחר הגדרת פרופיל CLI של AWS, ניתן לאמת כי הפרופיל עובד על ידי הרצת הפקודה למטה ב-PowerShell.

aws s3 ls

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

List S3 buckets

כדי ללמוד על הפקודות של AWS CLI הספציפיות ל-Amazon S3, ניתן לבקר בעמוד ההתייחסות לפקודות AWS CLI S3.

ניהול קבצים ב-S3

עם AWS CLI, ניתן לבצע פעולות ניהול קבצים טיפוליות כמו העלאת קבצים ל-S3, הורדת קבצים מ-S3, מחיקת אובייקטים ב-S3, והעתקת אובייקטים ב-S3 למיקום S3 אחר. הכל נעשה על ידי הכרת הפקודה הנכונה, התחביר, הפרמטרים והאפשרויות הנכונות.

בסעיפים הבאים, הסביבה המשמשת מורכבת מהבאים.

  • שני דליים S3, כלומר atasync1 ו־atasync2. התמונה למטה מציגה את הדליים S3 הקיימים ב- קונסולת Amazon S3 .
List of available S3 bucket names in the Amazon S3 console
  • תיקייה מקומית וקבצים הנמצאים תחת c:\sync.
Local Directory

העלאת קבצים יחידים ל-S3

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

כדי להעלות קובץ ל-S3, יהיה עליך לספק שני ארגומנטים (מקור ויעד) לפקודת aws s3 cp.

לדוגמה, כדי להעלות את הקובץ c:\sync\logs\log1.xml לשורש הדלי atasync1, תוכל להשתמש בפקודה הבאה.

aws s3 cp c:\sync\logs\log1.xml s3://atasync1/

הערה: שמות הדליים S3 תמיד מתחילים ב-S3:// כאשר משמשים עם AWS CLI

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

Upload file to S3

הדגמה למעלה מראה כי הקובץ בשם c:\sync\logs\log1.xml הועלה ללא שגיאות ליעד S3 s3://atasync1/.

השתמש בפקודה למטה כדי לרשום את האובייקטים בשורש של קופסת ה-S3.

aws s3 ls s3://atasync1/

הרצת הפקודה למעלה ב-PowerShell תגרום לפלט דומה, כפי שמוצג בדוגמה למטה. כפי שניתן לראות בפלט למטה, הקובץ log1.xml נמצא בשורש של המיקום ב-S3.

List the uploaded file in S3

העלאת מספר קבצים ותיקיות ל-S3 באופן רקורסיבי

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

לפקודה aws s3 cp יש אפשרות לעבד קבצים ותיקיות באופן רקורסיבי, וזו אפשרות ה---recursive.

כדוגמה, התיקייה c:\sync מכילה 166 אובייקטים (קבצים ותתי-תיקיות).

The folder containing multiple files and sub-folders

באמצעות האפשרות --recursive, כל תוכן התיקייה c:\sync יתווסף ל-S3 תוך ששומר על מבנה התיקייה. כדי לבדוק, השתמש בקוד הדוגמא למטה, אך וודא שאתה משנה את המקור והיעד בהתאם לסביבת העבודה שלך.

תשים לב מהקוד למטה, המקור הוא c:\sync, והיעד הוא s3://atasync1/sync. המפתח /sync שאחרי שם הסל S3 מציין ל-AWS CLI להעלות את הקבצים בתיקייה /sync ב-S3. אם התיקייה /sync אינה קיימת ב-S3, היא תיווצר באופן אוטומטי.

aws s3 cp c:\sync s3://atasync1/sync --recursive

הקוד למעלה יוביל לפלט, כפי שמוצג בהדגמה למטה.

Upload multiple files and folders to S3

העלאת מספר קבצים ותיקיות ל-S3 באופן בררני

בכמה מקרים, העלאת כל סוגי הקבצים אינה האפשרות הטובה ביותר. לדוג, כאשר יש רק צורך להעלות קבצים עם סיומות קבועות (לדוג, *.ps1). שתי אפשרויות נוספות זמינות לפקודת cp הן --include ו---exclude.

בעוד שהשימוש בפקודה בקטע הקודם כולל את כל הקבצים בהעלאה רקורסיבית, הפקודה למטה תכלול רק את הקבצים התואמים את סיומת הקובץ *.ps1 ותייצא מההעלאה כל קובץ אחר.

aws s3 cp c:\sync s3://atasync1/sync --recursive --exclude * --include *.ps1

ההדגמה למטה מראה כיצד הקוד עובד בביצוע.

Upload files that matched a specific file extension

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

הפקודה למטה תכלול רק את הקבצים *.csv ו-*.png לפקודת ההעתקה.

aws s3 cp c:\sync s3://atasync1/sync --recursive --exclude * --include *.csv --include *.png

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

Upload files with multiple include options

הורדת אובייקטים מ-S3

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

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

aws s3 cp s3://atasync1/sync c:\sync

שים לב שאותן אפשרויות המשמשות כאשר אתה מעלה קבצים ל-S3 יכולות לשמש גם כאשר אתה מוריד אובייקטים מ-S3 למקומי. לדוגמה, להוריד את כל האובייקטים באמצעות הפקודה למטה עם האפשרות --recursive.

aws s3 cp s3://atasync1/sync c:\sync --recursive

העתקת אובייקטים בין מיקומי S3 שונים

לצד העלאת קבצים ותיקיות, באמצעות AWS CLI, תוכל גם להעתיק או להעביר קבצים בין שני מיקומי S3.

תגים למען הדוגמה הפקודה למטה משתמשת במיקום S3 אחד כמקור ובמיקום S3 אחר כיעד.

aws s3 cp s3://atasync1/Log1.xml s3://atasync2/

הדגמה למטה מראה איך הקובץ המקורי מועתק למיקום S3 אחר באמצעות הפקודה למעלה.

Copy objects from one S3 location to another S3 location

סנכרון קבצים ותיקיות עם S3

למדת כיצד להעלות, להוריד ולהעתיק קבצים ב-S3 באמצעות פקודות AWS CLI עד כה. במקטע זה, תלמד עוד פעולת קובץ אחת הזמינה ב-AWS CLI עבור S3, והיא פקודת sync. פקודת sync מעבדת רק קבצים שעודכנו, חדשים ונמחקים.

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

באמצעות הפקודה שלהלן, קבצי יומן בפורמט *.XML הממוקמים תחת התיקייה c:\sync בשרת המקומי יסונכרנו אל מיקום ה-S3 ב-s3://atasync1.

aws s3 sync C:\sync\ s3://atasync1/ --exclude * --include *.xml

ההדגמה להלן מראה שלאחר הרצת הפקודה לעיל ב-PowerShell, כל קבצי ה-*.XML נטענו אל יעד ה-S3 s3://atasync1/.

Synchronizing local files to S3

סנכרון קבצים חדשים ומעודכנים עם S3

בדוגמה הבאה, נניח שתוכן קובץ היומן Log1.xml שונה. הפקודה sync אמורה לזהות את השינוי ולהעלות את השינויים שנעשו בקובץ המקומי ל-S3, כפי שמוצג בהדגמה להלן.

הפקודה לשימוש נותרה זהה לדוגמה הקודמת.

Synchronizing changes to S3

כפי שניתן לראות מהפלט לעיל, מכיוון שרק הקובץ Log1.xml שונה מקומית, הוא גם היה הקובץ היחיד שסונכרן ל-S3.

סנכרון מחיקות עם S3

כברירת מחדל, הפקודה sync אינה מעבדת מחיקות. כל קובץ שנמחק מהמיקום המקורי לא יוסר ביעד. ובכן, לא אלא אם כן תשתמש באפשרות --delete.

בדוגמה הבאה, הקובץ בשם Log5.xml נמחק מהמקור. הפקודה לסנכרון הקבצים תורחב עם אפשרות --delete</code

aws s3 sync C:\sync\ s3://atasync1/ --exclude * --include *.xml --delete

כאשר אתה מפעיל את הפקודה למעלה ב-PowerShell, הקובץ שנמחק בשם Log5.xml צריך גם להיות מוחק במיקום S3 היעד. התוצאה הדוגמית מוצגת למטה.

Synchronize file deletions to S3

סיכום

Amazon S3 הוא משאב מצוין לאחסון קבצים בענן. בעזרת כלי AWS CLI, הדרך בה אתה משתמש ב-Amazon S3 מורחבת ופותחת הזדמנות לאוטומציה של התהליכים שלך.

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

ישנם תרחישי שימוש רבים יותר לשימוש בכלי AWS CLI לאוטומציה של ניהול קבצים עם Amazon S3. תוכל גם לנסות לשלב אותו עם סקריפט PowerShell ולבנות כלים משלך או מודולים שניתן להשתמש בהם. זה תלוי בך למצוא את ההזדמנויות האלו ולהראות את הכישורים שלך.

קריאה נוספת

Source:
https://adamtheautomator.com/upload-file-to-s3/