מבוא לאחסון Google Cloud עם Java

1. סקירה כללית

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

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

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

2. הגדרת אחסון בענן של גוגל

2.1. תלות של Maven

עלינו להוסיף תלות אחת שלנו pom.xml:

 com.google.cloud google-cloud-storage 1.17.0 

ל- Maven Central יש את הגרסה האחרונה של הספרייה.

2.2. צור מפתח אימות

לפני שנוכל להתחבר ל- Google Cloud, עלינו להגדיר אימות. יישומי Google Cloud Platform (GCP) טוענים מפתח פרטי ומידע תצורה מקובץ תצורה של JSON. אנו מייצרים קובץ זה באמצעות מסוף GCP. הגישה למסוף דורשת חשבון חוקי של Google Cloud Platform.

אנו יוצרים את התצורה שלנו על ידי:

  1. הולך למסוף פלטפורמת הענן של גוגל
  2. אם עדיין לא הגדרנו פרויקט GCP, אנו לוחצים על ה- לִיצוֹר כפתור והזן שם פרויקט, כגון "baeldung-cloud-tutorial
  3. בחר "חשבון שירות חדש"מהרשימה הנפתחת
  4. הוסף שם כגון "baeldung-cloud-storage”בשדה שם החשבון.
  5. תחת “תַפְקִידבחר פרויקט ולאחר מכן בעלים בתפריט המשנה.
  6. בחר באפשרות צור והקונסולה מורידה קובץ מפתח פרטי.

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

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

2.3. התקן את מפתח האימות

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

עבור לינוקס או מק:

ייצא GOOGLE_APPLICATION_CREDENTIALS = "/ נתיב / לקובץ"

עבור Windows:

הגדר GOOGLE_APPLICATION_CREDENTIALS = "C: \ path \ to \ file"

2.4. התקן כלים בענן

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

אנו יכולים לעשות זאת בשני שלבים פשוטים:

  1. התקן את SDK Cloud מההוראות כאן לפלטפורמה שלנו.
  2. עקוב אחר Quickstart לפלטפורמה שלנו כאן. בשלב 4 של אתחל את ה- SDK, אנו בוחרים את שם הפרויקט בשלב 4 של סעיף 2.2 לעיל ("baeldung-cloud-storage”או באיזה שם השתמשת).

gsutil מותקן כעת ומוגדר לקריאת נתונים מפרויקט הענן שלנו.

3. מתחבר אל אִחסוּן ויצירת א דְלִי

3.1. להתחבר ל אִחסוּן

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

אחסון אחסון = StorageOptions.getDefaultInstance (). GetService (); 

אם אנחנו לא רוצים להשתמש במשתנה הסביבה, עלינו ליצור a אישורים למשל ולהעביר אותו ל אחסון עם שם הפרויקט:

אישורי אישורים = GoogleCredentials .fromStream (FileInputStream חדש ("נתיב / לקובץ")); אחסון אחסון = StorageOptions.newBuilder (). SetCredentials (אישורי כניסה). SetProjectId ("הדרכה בענן-ענן"). Build (). GetService (); 

3.2. ליצור דְלִי

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

אין הגבלה על מספר האובייקטים בדלי. GCP מגביל את מספר הפעולות בדליים וב- מעודד מעצבי יישומים להדגיש פעולות על חפצים ולא על דליים.

יצירת דלי דורשת BucketInfo:

דלי דלי = storage.create (BucketInfo.of ("baeldung-bucket")); 

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

3.3. בחינה א דְלִי עם gsutil

מכיוון שיש לנו דלי עכשיו, אנחנו יכולים לבדוק את זה איתו gsutil.

בואו נפתח שורת פקודה ונסתכל:

$ gsutil ls -L -b gs: // baeldung-1-bucket / gs: // baeldung-1-bucket /: מחלקת אחסון: STANDARD מגבלת מיקום: ארה"ב גרסה מופעלת: אין תצורת רישום: אין תצורת אתר: אין תצורת CORS : אין תצורת מחזור חיים: ללא מבקש תשלום מופעל: אין תוויות: אין זמן נוצר: א ', 11 בפברואר 2018 21:09:15 GMT זמן עדכון: א', 11 בפברואר 2018 21:09:15 GMT מטגן: 1 ACL: [{" ישות ":" project-owners-385323156907 "," projectTeam ": {" projectNumber ":" 385323156907 "," team ":" בעלים "}," role ":" OWNER "}, ...] ACL ברירת מחדל: [ {"entity": "project-owners-385323156907", "projectTeam": {"projectNumber": "385323156907", "team": "owners"}, "role": "OWNER"}, ...]

gsutil נראה הרבה כמו פקודות מעטפת, וכל מי שמכיר את שורת הפקודה של יוניקס צריך להרגיש מאוד בנוח כאן. שימו לב שעברנו בדרך לדלי שלנו ככתובת אתר: gs: // baeldung-1-bucket /, יחד עם כמה אפשרויות אחרות.

ה ls אפשרות מייצרת רישום או חפצים אוֹ דליים, וה אפשרות ציינה שאנחנו רוצים רישום מפורט - אז קיבלנו פרטים על דְלִי כולל זמני היצירה ובקרות הגישה.

בואו נוסיף כמה נתונים לדלי שלנו!

4. קריאה, כתיבה ועדכון נתונים

ב- Google Cloud Storage, אובייקטים מאוחסנים ב- כתמים; כֶּתֶם שמות יכולים להכיל כל תו של Unicode, מוגבל ל -1024 תווים.

4.1. כתיבת נתונים

בואו נשמור a חוּט לדלי שלנו:

ערך מחרוזת = "שלום, עולם!"; בתים [] בתים = value.getBytes (UTF_8); כתם כתם = bucket.create ("כתם הראשון שלי", בתים); 

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

4.2. קריאת נתונים עם gsutil

עכשיו כשיש לנו דלי עם חפץ, בואו נסתכל על gsutil.

נתחיל ברשימת התוכן של הדלי שלנו:

$ gsutil ls gs: // baeldung-1-bucket / gs: // baeldung-1-bucket / my-first-blob

אנחנו עברנו gsutil ה ls אפשרות שוב אך הושמט ו -L, אז ביקשנו רשימה קצרה של חפצים. אנו מקבלים רשימה של URI עבור כל אובייקט, שהוא אחד במקרה שלנו.

בואו נבדוק את האובייקט:

$ gsutil cat gs: // baeldung-1-bucket / my-first-blob Hello World!

חתול לשרשר את תוכן האובייקט לפלט רגיל. אנו רואים את חוּט כתבנו ל כֶּתֶם.

4.3. קריאת נתונים

כתמים מוקצים א BlobId עם הבריאה.

הדרך הקלה ביותר לאחזר בלוב היא באמצעות BlobId:

Blob blob = storage.get (blobId); ערך מחרוזת = מחרוזת חדשה (blob.getContent ()); 

אנו מעבירים את הזהות ל אִחסוּן ולקבל את כֶּתֶם בתמורה, ו getContent () מחזיר את הבתים.

אם אין לנו את BlobIdנוכל לחפש את הדלי לפי שם:

כתמי עמודים = bucket.list (); עבור (Blob blob: blobs.getValues ​​()) {if (name.equals (blob.getName ())) {להחזיר מחרוזת חדשה (blob.getContent ()); }}

4.4. עדכון נתונים

אנו יכולים לעדכן א כֶּתֶם על ידי אחזור זה ואז גישה אליו WriteableByteChannel:

String newString = "להתראות עכשיו!"; Blob blob = storage.get (blobId); ערוץ WritableByteChannel = blob.writer (); channel.write (ByteBuffer.wrap (newString.getBytes (UTF_8))); channel.close ();

בואו נבדוק את האובייקט המעודכן:

$ gsutil cat gs: // baeldung-1-bucket / my-first-blob Bye now!

4.5. שמור אובייקט לקובץ ואז מחק

בואו נשמור את האובייקט המעודכן לקובץ:

$ gsutil copy gs: // baeldung-1-bucket / my-first-blob my-first-blob העתקת gs: // baeldung-1-bucket / my-first-blob ... / [1 קבצים] [9.0 B / 9.0 ב] הפעולה הושלמה על פני 1 אובייקטים / 9.0 ב 'גרובר-מיל: ~ egoebelbecker $ cat my-first-blob Bye now!

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

gsutil יכול להעתיק כל אובייקט מ- Google Cloud Storage למערכת הקבצים המקומית, בהנחה שיש מספיק מקום לאחסן אותו.

נסיים בניקוי:

$ gsutil rm gs: // baeldung-1-bucket / my-first-blob הסרת gs: // baeldung-1-bucket / my-first-blob ... / [1 אובייקטים] הפעולה הסתיימה מעל 1 אובייקטים. $ gsutil ls gs: // baeldung-1-bucket / $

רמ (דל גם עובד) מוחק את האובייקט שצוין

5. מסקנה

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

דנו גם כיצד להשתמש בדליים ולכתוב ולשנות נתונים ביעילות.

דוגמאות קוד, כמו תמיד, ניתן למצוא באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found