A CLI do Google Cloud oferece uma forma conveniente de aceder à API REST do modo Datastore e gerir os seus índices compostos. No entanto, pode aceder diretamente à API REST do modo Datastore para criar as suas próprias ferramentas de gestão dos seus índices compostos. Por exemplo, pode criar ferramentas para automatizar o aprovisionamento e a gestão de índices.
Autenticação e autorização
Para aceder aos métodos da API REST do Firestore no modo Datastore abaixo, tem de autenticar o seu pedido fornecendo um token de acesso do Google OAuth 2.0 com um dos seguintes âmbitos:
https://www.googleapis.com/auth/datastorehttps://www.googleapis.com/auth/cloud-platform
Os exemplos de cURL e PowerShell abaixo usam o comando gcloud auth print-access-token para autenticar pedidos. Para mais
informações sobre como obter uma chave de acesso, consulte o artigo
Utilizar o OAuth 2.0 para aceder às APIs Google.
Autorização
O utilizador, o grupo ou a conta de serviço autenticados no pedido têm de ter autorização para aceder aos métodos da API. Para autorizar o acesso aos métodos de indexação, atribua uma das seguintes funções de gestão de identidade e de acesso (IAM):
Para ter acesso total de leitura e edição ao índice, conceda uma destas funções:
roles/ownerroles/editorroles/datastore.ownerroles/datastore.indexAdmin
Para acesso de leitura do índice apenas (obter e listar), conceda uma destas funções:
roles/viewerroles/datastore.userroles/datastore.viewer
Para mais informações sobre a atribuição destas funções, consulte o artigo sobre como conceder, alterar e revogar o acesso a recursos.
Antes de começar
Os exemplos de curl e PowerShell abaixo usam a CLI do Google Cloud (CLI do Google Cloud) para autenticar pedidos. Para executar estes exemplos localmente,
instale e inicialize a CLI Google Cloud.
Em alternativa, pode aceder ao gcloud e ao curl a partir da
Google Cloud consola através do Cloud Shell.
Criar um índice composto
Para criar um novo índice composto, use o método projects.indexes.create.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do seu projeto
- kind: o tipo de entidade a indexar
- include-ancestors: se deve ou não incluir antecessores de entidades no índice
para suportar consultas de antecessores,
NONEouALL_ANCESTORS - property-name: a propriedade a indexar. Tem de especificar duas ou mais propriedades
- index-direction: a ordem de ordenação de cada propriedade,
ASCENDINGouDESCENDING
Método HTTP e URL:
POST https://datastore.googleapis.com/v1/projects/project-id/indexes
Corpo JSON do pedido:
{
"kind": "kind",
"ancestor": "include-ancestors",
"properties": [
{
"name": "property-name",
"direction": "index-direction"
},
{
"name": "property-name",
"direction": "index-direction"
}
]
}
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome request.json,
e execute o seguinte comando:
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
Guarde o corpo do pedido num ficheiro com o nome request.json,
e execute o seguinte comando:
$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
Explorador de APIs
Copie o corpo do pedido e abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Cole o corpo do pedido nesta ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
{
"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"
}
}
A receber o estado do índice
O modo Datastore atribui a cada índice um ID de índice exclusivo. Pode usar este ID do índice para obter o estado de um único índice com o método projects.indexes.get:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do seu projeto
- index-id: um ID de índice composto
Método HTTP e URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Execute o seguinte comando:
$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
Explorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
{
"projectId": "project-id",
"indexId": "index-id",
"kind": "Task",
"ancestor": "NONE",
"properties": [
{
"name": "done",
"direction": "ASCENDING"
},
{
"name": "priority",
"direction": "ASCENDING"
}
],
"state": "READY"
}
Estado do índice
Veja o estado do índice para obter informações sobre o progresso e mensagens de erro. Não pode usar um índice para consultas até que este atinja o estado READY. Os estados possíveis do índice incluem:
CREATING: criação do índice em curso.ALREADY_EXISTS: não é possível concluir a operação porque este índice já existe.ERROR: falha na criação do índice. Corrija os dados que causaram o erro, elimine este índice e, em seguida, crie o índice novamente.READY: criação do índice concluída. O índice está pronto a ser usado para consultas.
Eliminar um índice composto
Método HTTP e URL:
DELETE https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Execute o seguinte comando:
$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
Explorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber um código de estado de êxito (2xx) e uma resposta vazia.
Apresentar todos os índices compostos
Para listar todos os índices compostos de uma base de dados do modo Datastore, use o método projects.indexes.list.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do seu projeto
Método HTTP e URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes
Para enviar o seu pedido, escolha uma destas opções:
curl
Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
Execute o seguinte comando:
$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
Explorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
{
"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"
}
]
}