הכלי Google Cloud CLI מספק דרך נוחה לגשת ל-API בארכיטקטורת REST של מצב Datastore ולנהל את האינדקסים המורכבים. עם זאת, אתם יכולים לגשת ישירות ל-API בארכיטקטורת REST במצב Datastore כדי ליצור כלים משלכם לניהול האינדקסים המורכבים. לדוגמה, אפשר ליצור כלים לאוטומציה של הקצאת אינדקסים וניהול שלהם.
אימות והרשאה
כדי לגשת לשיטות של Firestore במצב Datastore API בארכיטקטורת REST שמופיעות בהמשך, צריך לאמת את הבקשה באמצעות אסימון גישה מסוג Google OAuth 2.0 עם אחת מההרשאות הבאות:
https://www.googleapis.com/auth/datastorehttps://www.googleapis.com/auth/cloud-platform
בדוגמאות הבאות של cURL ו-PowerShell נעשה שימוש בפקודה gcloud auth print-access-token כדי לאמת בקשות. למידע נוסף על קבלת אסימון גישה, אפשר לעיין במאמר בנושא שימוש ב-OAuth 2.0 כדי לגשת ל-Google APIs.
הרשאה
למשתמש, לקבוצה או לחשבון השירות המאומתים בבקשה צריכה להיות הרשאה לגשת לשיטות ה-API. כדי להרשות גישה לשיטות האינדוקס, צריך להקצות אחד מתפקידי ניהול הזהויות והרשאות הגישה (IAM) הבאים:
כדי לקבל גישת קריאה ועריכה מלאה לאינדקס, צריך להקצות אחד מהתפקידים הבאים:
roles/ownerroles/editorroles/datastore.ownerroles/datastore.indexAdmin
כדי לתת גישת קריאה לאינדקס בלבד (get ו-list), צריך להקצות אחד מהתפקידים הבאים:
roles/viewerroles/datastore.userroles/datastore.viewer
מידע נוסף על הקצאת התפקידים האלה זמין במאמר הענקה, שינוי וביטול גישה למשאבים.
לפני שמתחילים
בדוגמאות של curl ו-PowerShell שבהמשך נעשה שימוש ב-Google Cloud CLI (Google Cloud CLI) כדי לאמת בקשות. כדי להריץ את הדוגמאות האלה באופן מקומי, צריך להתקין את Google Cloud CLI ולהפעיל אותו.
אפשר גם לגשת אל gcloud וcurl מGoogle Cloud Console באמצעות Cloud Shell.
יצירת אינדקס מורכב
כדי ליצור אינדקס מורכב חדש, משתמשים בשיטה projects.indexes.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- kind: סוג הישות לאינדקס
- include-ancestors: האם לכלול את ישויות האב באינדקס כדי לתמוך בשאילתות לגבי ישויות אב. האפשרויות הן
NONEאוALL_ANCESTORS. - property-name: הנכס לאינדקס, צריך לציין שני נכסים או יותר
- index-direction: סדר המיון של כל מאפיין,
ASCENDINGאוDESCENDING
ה-method של ה-HTTP וכתובת ה-URL:
POST https://datastore.googleapis.com/v1/projects/project-id/indexes
גוף בקשת JSON:
{
"kind": "kind",
"ancestor": "include-ancestors",
"properties": [
{
"name": "property-name",
"direction": "index-direction"
},
{
"name": "property-name",
"direction": "index-direction"
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content
APIs Explorer
מעתיקים את גוף הבקשה ופותחים את דף העזר של השיטה. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. מדביקים את גוף הבקשה בכלי הזה, ממלאים את כל שדות החובה ולוחצים על Execute.
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/project-id/operations/S01vcFVpSmdBQ0lDDCoDIDgxZGVhZDM0ZDc4MS1jMjJhLWQ1ZTQtYmMyNS1iYjY2NWVlZCQadGx1YWZlZAcSMXJoLXJleGVkbmktbmltZGERClIS",
"metadata": {
"@type": "type.googleapis.com/google.datastore.admin.v1.IndexOperationMetadata",
"common": {
"startTime": "2019-12-05T22:27:19.238Z",
"operationType": "CREATE_INDEX",
"state": "INITIALIZING"
},
"indexId": "CICAgJiUpoMK"
}
}
קבלת סטטוס האינדקס
במצב Datastore, לכל אינדקס יש מזהה אינדקס ייחודי. אפשר להשתמש במזהה האינדקס הזה כדי לקבל את הסטטוס של אינדקס יחיד באמצעות ה-method projects.indexes.get:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- index-id: מזהה אינדקס מורכב
ה-method של ה-HTTP וכתובת ה-URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content
APIs Explorer
פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"projectId": "project-id",
"indexId": "index-id",
"kind": "Task",
"ancestor": "NONE",
"properties": [
{
"name": "done",
"direction": "ASCENDING"
},
{
"name": "priority",
"direction": "ASCENDING"
}
],
"state": "READY"
}
מצב האינדקס
כדי לראות את ההתקדמות והודעות השגיאה, אפשר לבדוק את מצב האינדקס. אי אפשר להשתמש באינדקס לשאילתות עד שהוא מגיע למצב READY. אלו הסטטוסים האפשריים של האינדקס:
-
CREATING: יצירת האינדקס נמצאת בתהליך. -
ALREADY_EXISTS: אי אפשר להשלים את הפעולה כי האינדקס הזה כבר קיים. -
ERROR: יצירת האינדקס נכשלה. צריך לתקן את הנתונים שגרמו לשגיאה, למחוק את האינדקס הזה ואז ליצור אותו מחדש. -
READY: יצירת האינדקס הושלמה. האינדקס מוכן לשימוש בשאילתות.
מחיקה של אינדקס מורכב
ה-method של ה-HTTP וכתובת ה-URL:
DELETE https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content
APIs Explorer
פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.
אמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.
הצגת רשימה של כל האינדקסים המורכבים
כדי לראות את כל האינדקסים המורכבים במסד נתונים במצב Datastore, משתמשים בשיטה projects.indexes.list.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
ה-method של ה-HTTP וכתובת ה-URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content
APIs Explorer
פותחים את דף העזר של ה-method. החלונית של API Explorer תיפתח בצד שמאל של הדף. אפשר להשתמש בכלי הזה כדי לשלוח בקשות. ממלאים את כל שדות החובה ולוחצים על Execute.
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"indexes": [
{
"projectId": "project-id",
"indexId": "CICAgOjXh4EK",
"kind": "Task",
"ancestor": "NONE",
"properties": [
{
"name": "done",
"direction": "ASCENDING"
},
{
"name": "priority",
"direction": "ASCENDING"
}
],
"state": "READY"
},
{
"projectId": "project-id",
"indexId": "CICAgNiroIEK",
"kind": "Task",
"ancestor": "NONE",
"properties": [
{
"name": "due-date",
"direction": "DESCENDING"
},
{
"name": "priority",
"direction": "ASCENDING"
}
],
"state": "CREATING"
}
]
}