ניהול והעברה של פרויקטים ב-Google Cloud

כדי להשתמש ב-Merchant API, אתם צריכים לקשר את פרויקט הענן שלכם ב-Google Cloud לחשבון הראשי שלכם ב-Merchant Center באמצעות רישום מפתחים. במהלך מחזור החיים של השילוב, יכול להיות שתצטרכו לשנות את מזהה הפרויקט ב-Google Cloud שמשויך לחשבון Merchant Center, לנהל כמה פרויקטים בסביבות שונות או להעביר פרויקטים כשאתם עוברים מ-Content API for Shopping.

במדריך הזה נסביר איך:

  • שינוי או החלפה של מזהה הפרויקט ב-Google Cloud בשילוב קיים של Merchant API ללא השבתה.
  • לבטל את הרישום של פרויקט בענן ב-Google Cloud בחשבון Merchant Center אחד ולרשום אותו בחשבון Merchant Center אחר.
  • אם אתם עוברים מ-Content API for Shopping ל-Merchant API, בחרו את האסטרטגיה המתאימה למעבר בין פרויקטים בענן ב-Google Cloud והפעילו אותה.

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

לפני שאתם מנהלים או מעבירים פרויקטים בענן ב-Google Cloud, ודאו שאתם עומדים בדרישות המוקדמות לרישום מפתחים. פרטים נוספים זמינים בקטע "דרישות מוקדמות" במדריך הרשמה כמפתח.

כללים ומגבלות חשובים

כשמתכננים שינויים בפרויקטים בענן ב-Google Cloud, חשוב לזכור את הכללים הבאים:

  • רישום פרויקט מסוג 'אחד לרבים': לחשבון Merchant Center ראשי אחד יכולים להיות כמה פרויקטים ב-Google Cloud שרשומים בו בו-זמנית. עם זאת, כל פרויקט ב-Google Cloud יכול להיות רשום רק לחשבון Merchant Center ראשי אחד בכל זמן נתון. אם תנסו לרשום פרויקט שכבר מקושר לחשבון Merchant Center אחר, תוחזר שגיאה מסוג ALREADY_EXISTS ‏ (409 Conflict) עם הסיבה DUPLICATE_PROJECT_REGISTRATION.
  • פרטיות בנוגע לבעלות על פרויקט: מטעמי אבטחה ופרטיות, התמיכה של Google שופינג ו-Merchant API לא יכולה לחשוף את כתובות האימייל של הבעלים או האדמינים של פרויקט ב-Google Cloud. אם איבדתם את הגישה לפרויקט, פנו לצוות התמיכה של Google Cloud.
  • הארכות של תקופת ההשבתה של Content API for Shopping הן ספציפיות לפרויקט: אם קיבלתם אישור לגישה מורחבת ל-Content API for Shopping, ההארכה הזו חלה רק על מזהה הפרויקט הספציפי ב-Google Cloud שצוין בבקשה שלכם. התוספים לא מועברים באופן אוטומטי לפרויקטים חדשים ב-Google Cloud.

שינוי מזהה הפרויקט בענן ב-Google Cloud של חשבון Merchant API

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

שלב 1: יוצרים ומגדירים פרויקט חדש ב-Google Cloud

  1. יוצרים פרויקט חדש במסוף Google Cloud. הוראות מפורטות זמינות במאמר בנושא יצירת פרויקט בענן ב-Google Cloud.
  2. מפעילים את Merchant API (merchantapi.googleapis.com) בפרויקט החדש. אפשר לעיין בקטע הפעלת Merchant API במאמר יצירת פרויקט בענן ב-Google Cloud.
  3. יוצרים פרטי כניסה לאימות (חשבון שירות או מזהה לקוח OAuth 2.0) בפרויקט החדש ב-Google Cloud.
  4. מוסיפים את כתובת האימייל לאימות (למשל, כתובת האימייל של חשבון השירות החדש) כמשתמש עם התפקיד ADMIN בחשבון Merchant Center הראשי.

שלב 2: רישום הפרויקט החדש ב-Google Cloud

מאמתים באמצעות פרטי הכניסה מהפרויקט החדש ב-Google Cloud ומבצעים קריאה לשיטה accounts.developerRegistration.registerGcp כדי לקשר את הפרויקט החדש לחשבון הראשי שלכם ב-Merchant Center. הוראות מפורטות זמינות בקטע ביצוע קריאת הרישום במאמר הרשמה כמפתח.

שלב 3: מאמתים את פרויקטי הענן הרשומים ב-Google Cloud

כדי לוודא שגם הפרויקטים הקיימים וגם הפרויקטים החדשים ב-Google Cloud מקושרים לחשבון Merchant Center, צריך להפעיל את ה-method‏ accounts.developerRegistration.getDeveloperRegistration:

GET https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration
Authorization: Bearer ACCESS_TOKEN

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ACCOUNT_ID: מספר חשבון Merchant Center
  • ‫ACCESS_TOKEN: אסימון ההרשאה לביצוע הקריאה ל-API

התשובה מחזירה את המשאב DeveloperRegistration עם מספרי הפרויקטים ב-Google Cloud של כל הפרויקטים המקושרים בשדה gcpIds:

{
  "name": "accounts/ACCOUNT_ID/developerRegistration",
  "gcpIds": [
    "123456789012",
    "987654321098"
  ]
}

כדי לבדוק לאיזה חשבון Merchant Center רשום הפרויקט ב-Google Cloud שממנו נשלחת הקריאה, אפשר להפעיל את ה-method‏ accounts.developerRegistration.getAccountForGcpRegistration:

GET https://merchantapi.googleapis.com/accounts/v1/accounts:getAccountForGcpRegistration
Authorization: Bearer ACCESS_TOKEN

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ACCESS_TOKEN: אסימון ההרשאה שנוצר באמצעות פרטי הכניסה מהפרויקט בענן ב-Google Cloud שרוצים לבדוק

שלב 4: מעבירים את התנועה ומבטלים את הרישום של הפרויקט הישן ב-Google Cloud

  1. מעדכנים את הגדרות האפליקציה כדי להשתמש בפרטי הכניסה מהפרויקט החדש ב-Google Cloud. מכיוון ששני הפרויקטים רשומים, עומסי העבודה שלכם עוברים בלי הפרעה.
  2. אחרי שכל התנועה תשתמש בפרויקט החדש, תוכלו להסיר את הקישור לפרויקט הישן. כדי לעשות את זה, צריך לבצע אימות באמצעות פרטי הכניסה של הפרויקט הישן ב-Google Cloud ולקרוא ל-method‏ accounts.developerRegistration.unregisterGcp:
POST https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp
Content-Type: application/json
Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ACCOUNT_ID: מספר חשבון Merchant Center
  • ‫OLD_PROJECT_ACCESS_TOKEN: טוקן ההרשאה מהפרויקט הישן ב-Google Cloud לביצוע הקריאה ל-API

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationName;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceClient;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceSettings;
import com.google.shopping.merchant.accounts.v1.UnregisterGcpRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to unregister the GCP project currently used to call the Merchant API
 * for a specific account.
 */
public class UnregisterGcpSample {

  public static void unregisterGcp(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the credentials retrieved above.
    DeveloperRegistrationServiceSettings developerRegistrationServiceSettings =
        DeveloperRegistrationServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates DeveloperRegistration name to identify the DeveloperRegistration.
    // The name has the format: accounts/{account}/developerRegistration
    String name =
        DeveloperRegistrationName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .build()
            .toString();

    // Calls the API and propagates any network failures/errors.
    try (DeveloperRegistrationServiceClient developerRegistrationServiceClient =
        DeveloperRegistrationServiceClient.create(developerRegistrationServiceSettings)) {

      // Creates a request to unregister the GCP project.
      UnregisterGcpRequest request = UnregisterGcpRequest.newBuilder().setName(name).build();

      System.out.println("Sending UnregisterGcp request for: " + name);
      developerRegistrationServiceClient.unregisterGcp(request);
      System.out.println("Unregister GCP successful.");
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    unregisterGcp(config);
  }
}

cURL

curl -X POST \
  "https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN"

הקצאה מחדש של פרויקט רשום ב-Google Cloud לחשבון אחר ב-Merchant Center

פרויקט ב-Google Cloud יכול להיות רשום רק לחשבון Merchant Center ראשי אחד בכל פעם. כדי להקצות מחדש פרויקט קיים מחשבון Merchant Center אחד (OLD_ACCOUNT_ID) לחשבון אחר (NEW_ACCOUNT_ID), צריך לפעול לפי השלבים הבאים. הנחיות לבחירת חשבון Merchant Center לרישום הפרויקט מפורטות בקטע שיקולים חשובים:

  1. מאמתים באמצעות פרטי הכניסה מהפרויקט בענן ב-Google Cloud שיש לו גישה אל OLD_ACCOUNT_ID, וקוראים ל-unregisterGcp ב-accounts/OLD_ACCOUNT_ID/developerRegistration.
  2. מוודאים שלזהות המאמתת יש את התפקיד ADMIN ב-NEW_ACCOUNT_ID, ושל-NEW_ACCOUNT_ID יש אתר מאומת.
  3. מפעילים את registerGcp ב-accounts/NEW_ACCOUNT_ID/developerRegistration באמצעות פרטי הכניסה מאותו פרויקט ב-Google Cloud. אם ל-NEW_ACCOUNT_ID עדיין אין משתמש עם התפקיד API_DEVELOPER, צריך להעביר כתובת אימייל תקינה של משתמש בשדה הבקשה developerEmail. אי אפשר להשתמש בכתובות אימייל של חשבונות שירות שמסתיימות ב-.gserviceaccount.com בתור developerEmail.

מעבר בין פרויקטים בענן של Google כשעוברים מ-Content API for Shopping

כשעוברים מ-Content API for Shopping ל-Merchant API, יכול להיות שתיתקלו במגבלות גישה בפרויקט הקודם ב-Google Cloud. למשל, אם מפתחות ה-API המקוריים הוגדרו ישירות דרך תהליך העבודה הקודם של האימות ב-Merchant Center, או אם הבעלים המקורי של הפרויקט עזב את הארגון.

בהתאם להעדפה שלכם – אם אתם רוצים לשמור את הפרויקט הקיים או להשתמש בפרויקט חדש ל-Merchant API תוך שמירה על Content API for Shopping בפרויקט הישן – אתם יכולים לבחור באחת משתי האפשרויות הבאות.

בחירת אסטרטגיה לפרויקט ההעברה

תרחיש האם נדרשת הרשאת אדמין לפרויקט הישן? ממשקי ה-API שצריך להפעיל האם נדרש תוסף Content API for Shopping בפרויקט חדש?
אפשרות 1: להמשיך להשתמש בפרויקט הקיים כן (או שחזור באמצעות צוות התמיכה של Google Cloud) הפעלת Merchant API בפרויקט קיים (Content API for Shopping כבר מופעל) לא (התוסף הקיים במזהה הפרויקט הישן נשאר תקף)
אפשרות 2: להשאיר את הפרויקט הישן ל-Content API for Shopping ולהשתמש בפרויקט חדש ל-Merchant API לא מפעילים את Merchant API בפרויקט החדש (משאירים את Content API for Shopping מופעל בפרויקט הישן) לא (הפרויקט הישן שומר על התוסף שלו, והפרויקט החדש קורא רק ל-Merchant API)

אפשרות 1: שמירה על הפרויקט הקיים ב-Google Cloud

בוחרים באפשרות הזו אם רוצים להשתמש בפרויקט הקיים ב-Google Cloud גם בשביל Content API for Shopping וגם בשביל Merchant API.

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

  • בעלים (roles/owner),
  • עריכה (roles/editor)
  • אדמין של Service Usage‏ (roles/serviceusage.serviceUsageAdmin)
  1. מפעילים את Merchant API: מפעילים את merchantapi.googleapis.com בספריית ה-API של Google Cloud או באמצעות הפקודה gcloud. הוראות מפורטות להגדרת אימות API מ-Merchant Center
  2. רושמים את הפרויקט ב-Google Cloud ב-Merchant Center: פועלים לפי השלבים במדריך בנושא הרשמה כמפתח כדי לאשר בקשות מהפרויקט הקיים שלכם ולהפעיל את השיטה registerGcp כדי לקשר את הפרויקט הקיים ב-Google Cloud לחשבון הראשי שלכם ב-Merchant Center. המפתחות הקיימים של חשבון השירות והתוסף המאושר של Content API for Shopping ימשיכו לפעול ללא שינויים.

אפשרות 2: שימוש בפרויקט הישן ב-Google Cloud בשביל Content API for Shopping ובפרויקט חדש בשביל Merchant API

אם האינטגרציה הקיימת של Content API for Shopping כבר פועלת עם פרטי כניסה תקינים ותוסף מאושר בפרויקט הישן ב-Google Cloud, ואתם רוצים ליצור את האינטגרציה החדשה של Merchant API בפרויקט נפרד וייעודי ב-Google Cloud, בחרו באפשרות הזו:

  1. להשאיר את השילוב של Content API for Shopping בפרויקט הישן: משאירים את תהליכי העבודה ופרטי הכניסה הקיימים של Content API for Shopping בפרויקט הישן ב-Google Cloud. אם הבקשה שלכם להארכת המועד האחרון למזהה הפרויקט הישן אושרה, השילוב הנוכחי של Content API for Shopping ימשיך לפעול עד המועד האחרון החדש.
  2. יצירת פרויקט חדש ב-Google Cloud לשימוש בלעדי ב-Merchant API: יוצרים פרויקט חדש ב-Google Cloud, מפעילים את merchantapi.googleapis.com ויוצרים פרטי כניסה (חשבון שירות או מזהה לקוח OAuth 2.0) לעומסי העבודה החדשים של Merchant API.
  3. רישום הפרויקט החדש: פועלים לפי השלבים שמפורטים בקטע הרשמה כמפתחים כדי לאשר בקשות מהפרויקט החדש, וקוראים ל-method‏ registerGcp עם כתובת אימייל חוקית ליצירת קשר עם המפתח. אי אפשר להשתמש בכתובות אימייל של חשבונות שירות (שמסתיימות ב-.gserviceaccount.com) בתור developerEmail.
  4. העברת עומסי עבודה באופן הדרגתי: העבירו בהדרגה את הקריאות ל-API מהפרויקט הישן של Content API for Shopping לפרויקט החדש של Merchant API, לפני תאריך ההוצאה משימוש המתוכנן של Content API for Shopping (או לפני שתוקף ההארכה שאושרה לכם יפוג), והוציאו משימוש את הפרויקט הישן אחרי שתסיימו את ההעברה.

מקרה מיוחד: איבדתם את הגישה לפרויקט הישן ב-Google Cloud לפני השלמת המיגרציה

‫Content API for Shopping הוצא משימוש, ולכן הוא לא מופיע יותר בספריית ה-API של Google Cloud ואי אפשר להפעיל אותו בפרויקטים חדשים ב-Google Cloud. לכן, אתם לא יכולים להעביר בעצמכם עומסי עבודה קיימים של Content API for Shopping לפרויקט חדש ב-Google Cloud.

אם אתם כבר לא יכולים לבצע קריאות ל-Content API for Shopping מהפרויקט הישן (לדוגמה, בגלל שפרטי הכניסה בוטלו או שאין לכם גישה לפרויקט):

  1. פונים אל התמיכה של Google Cloud כדי לשחזר את הגישה לפרויקט הקיים ב-Google Cloud (אפשרות 1), או
  2. פועלים לפי אפשרות 2 כדי ליצור ולרשום פרויקט בענן חדש ב-Google Cloud ולהעביר את תהליכי העבודה המושפעים ישירות אל Merchant API. אם נתקלתם בבעיה קריטית שמונעת את המעבר, פנו לתמיכה של Merchant API.

השלבים הבאים