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/datastore
https://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/owner
roles/editor
roles/datastore.owner
roles/datastore.indexAdmin
Para acesso de leitura do índice apenas (obter e listar), conceda uma destas funções:
roles/viewer
roles/datastore.user
roles/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,
NONE
ouALL_ANCESTORS
- property-name: a propriedade a indexar. Tem de especificar duas ou mais propriedades
- index-direction: a ordem de ordenação de cada propriedade,
ASCENDING
ouDESCENDING
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" } ] }