מסדי נתונים במצב Datastore מוקצים עכשיו כשהם לא מקושרים ל-App Engine כברירת מחדל.
אם מסד הנתונים שלכם מקושר ל-App Engine, אתם יכולים לבטל את הקישור שלו.
Active App Engine
אפליקציית App Engine פעילה היא אפליקציה שקיימת באותו פרויקט ושלא הושבתה. לא נדרש שימוש באפליקציה. האפליקציה המקושרת ומסד הנתונים צריכים להיות באותו אזור.
אם משביתים את אפליקציית App Engine, משביתים גם את הגישה למסד הנתונים במצב Datastore שמקושר לאפליקציה הזו.
צפייה בסטטוס הקישור של App Engine
אפשר לבדוק את מצב הניתוק של App Engine באמצעות API בארכיטקטורת REST:
curl --header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)"
בתשובה, בודקים את הערך של appEngineIntegrationMode. אם הערך הוא DISABLED, מסד הנתונים לא מקושר לאפליקציית App Engine.
ביטול הקישור של מסד הנתונים ל-App Engine
כדי להסיר את הדרישה הפעילה של App Engine, אפשר לבטל את הקישור של מסד הנתונים במצב Datastore לאפליקציית App Engine. כשמבטלים את הקישור של מסד הנתונים, אפשר להשבית את App Engine בלי להשפיע על הגישה למסד הנתונים.ביטול הקישור הוא פעולה סופית.
אם מבטלים את הקישור של מסד הנתונים, אי אפשר להשתמש בתכונה השבתת פעולות כתיבה בדף Datastore Admin. אם כרגע ההרשאות לכתיבה מושבתות, ביטול הקישור של מסד הנתונים יפעיל את ההרשאות לכתיבה.
לפני שמבטלים את הקישור של מסד הנתונים ל-App Engine, חשוב להפעיל את Firestore API ולעדכן את הרשאות ה-IAM.
כדי לבטל את הקישור של מסד הנתונים, עוברים אל הדף Datastore Admin ולוחצים על Unlink database from app. יכול להיות שיחלפו עד חמש דקות עד שפעולת ביטול הקישור תיכנס לתוקף.
העברת משאבי Terraform App Engine
אם ניהלתם בעבר מסדי נתונים במצב Datastore באמצעות משאב Terraform google_app_engine_application, אתם יכולים להשתמש במשאב Terraform google_firestore_database במקום זאת.
הוראות כלליות לניהול מסדי נתונים במצב Datastore באמצעות Terraform מפורטות במאמר אוטומציה של יצירת מסדי נתונים.
יצירת משאב google_firestore_database
בקובץ התצורה של Terraform, יוצרים משאב google_firestore_database חדש:
datastore.tf
resource "google_firestore_database" "database" {
project = "project"
name = "(default)"
location_id = "location"
type = "DATASTORE_MODE"
app_engine_integration_mode = "DISABLED"
// Optional, but recommended for safety
delete_protection_state = "DELETE_PROTECTION_ENABLED"
}
כאן מפורטת רשימת המיקומים הזמינים של Datastore. בוחרים את המיקום שמתאים למיקום של מסד הנתונים הקיים.
ייבוא מסד נתונים קיים במצב Datastore
קודם צריך לוודא ש-Firestore API מופעל.
לאחר מכן, מייבאים את מסד הנתונים הקיים במצב Datastore למצב של Terraform:
terraform import google_firestore_database.database "(default)"
לאחר מכן, מריצים את הפקודה:
terraform plan
בודקים את הפלט כדי לוודא שהייבוא הושלם בהצלחה. אם הפלט מראה שיש שינויים בשדות, צריך לוודא שהשינויים האלה מכוונים. אם הפלט כולל שורה שדומה ל:
google_firestore_database.database must be replaced
אחר כך בודקים את קובץ התצורה של Terraform כדי לראות אם היו טעויות, במיוחד בשדות project, location או name, ואז מריצים שוב את הפקודה terraform plan. כל השדות שדורשים מ-Terraform להחליף את מסד הנתונים יסומנו בסימן # forces replacement בפלט של התוכנית.
כשמרוצים מהפלט של תוכנית Terraform, מריצים את הפקודה:
terraform apply
הסרת המשאב google_app_engine_application
אם יש לכם משאב google_app_engine_application קיים בקובץ ההגדרות של Terraform, עכשיו צריך להסיר אותו מהקובץ.
לאחר מכן, מריצים שוב את הפקודה:
terraform plan
הפלט אמור להיראות כך:
Terraform will perform the following actions: # google_app_engine_application.app will be destroyed # (because google_app_engine_application.app is not in configuration)
אחרי שאתם מרוצים מהתוצאה של התוכנית, מריצים
terraform apply
נכון לעכשיו, Terraform לא תומך במחיקה של משאבי App Engine. למרות ש-Terraform יציג את המשאב כמשאב שנמחק, הוא לא ימחק בפועל את אפליקציית App Engine. עם זאת, אפליקציית App Engine לא תנוהל יותר על ידי Terraform.
דרישה ל-Firestore API
בעבר, כל מסדי הנתונים של Firestore במצב Datastore היו מקושרים לאפליקציית App Engine. עכשיו, מסדי נתונים במצב Datastore מוקצים כשהם לא מקושרים ל-App Engine כברירת מחדל. בנוסף, כל מסדי הנתונים, גם הקיימים וגם אלה שנוצרו לאחרונה, צריכים לעמוד בדרישות הבאות:
- כדי לנהל את מסד הנתונים שלכם מ Google Cloud המסוף ומ-ה-CLI של gcloud, צריך להפעיל את Firestore API בפרויקט. הפעולה הזו נדרשת גם במסדי נתונים של Firestore במצב Native וגם במסדי נתונים של Firestore במצב Datastore.
כשמבצעים את הפעולות האדמיניסטרטיביות הבאות ממסוף Google Cloud או מ-CLI של gcloud, נדרשות הרשאות ה-IAM הבאות:
- יצירת מסד נתונים:
datastore.databases.create - הצגת מטא-נתונים של מסד נתונים:
datastore.databases.getMetadata - עריכת מטא-נתונים של מסד נתונים:
datastore.databases.update
- יצירת מסד נתונים:
אם לא הפעלתם את Firestore API, תופיע שגיאה בדפים Datastore במסוף Google Cloud , כולל ההודעה הבאה:
כדי לנהל את מסד הנתונים, צריך את Firestore API.
השגיאה הזו כוללת גם לחצן להפעלת Firestore API. לוחצים על הלחצן כדי להפעיל את ה-API.
כדאי גם לאמת את הרשאות ה-IAM כדי לוודא שהגישה שלכם למסד הנתונים לא מושפעת.
מוודאים שלחשבונות שיש להם גישה למסד הנתונים דרך Google Cloud המסוף יש את ההרשאות הנדרשות שמפורטות למעלה.
תפקידים שמוגדרים מראש כמו Datastore User ו-Datastore Viewer כוללים את ההרשאות הנדרשות. אם יצרתם תפקידי IAM בהתאמה אישית, יכול להיות שתצטרכו לעדכן אותם כך שיכללו את ההרשאות שצוינו למעלה.
אם הגדרתם בעבר תפקיד בהתאמה אישית ל-Datastore, יכול להיות שחסרה לו ההרשאה datastore.databases.getMetadata. כדי להמשיך לגשת ל-datastore.databases.getMetadata, צריך לעדכן את התפקידים בהתאמה אישית באמצעות datastore.databases.getMetadata או להשתמש בתפקיד מוגדר מראש.
הפעלת ה-API באמצעות Terraform
אם רוצים, אפשר גם להפעיל את Firestore API באמצעות Terraform:
resource "google_project_service" "firestore" {
project = "project"
service = "firestore.googleapis.com"
}
אם יש לכם משאב google_firestore_database, אתם יכולים להוסיף תלות במשאב google_project_service כדי לוודא שה-API מופעל לפני ש-Terraform מנסה ליצור את מסד הנתונים:
resource "google_firestore_database" "database" {
// ...
depends_on = [google_project_service.firestore]
}