Nesta página, explicamos como criar uma instância com rótulos, como adicionar, atualizar e remover rótulos e como usá-los nas pesquisas.
Os rótulos são uma maneira leve de agrupar instâncias relacionadas ou associadas entre si. Por exemplo, você pode marcar suas instâncias de acordo com a maneira como as está usando, seja como teste ou produção, ou você pode adicionar seu próprio código de cobrança a uma instância. Você pode usar os marcadores para procurar instâncias ou rastrear cobranças de instâncias.
Sempre adicione rótulos como pares de chave-valor:
{
"userLabels": {
"track": "production",
"location": "western-division"
"billing-code": "34802",...
}
A modificação de rótulos não afeta o desempenho da instância do Cloud SQL.
Para mais informações, consulte O que são rótulos? e Requisitos para rótulos.
Restrições
- Você pode atribuir até 64 rótulos a cada instância.
As chaves e os valores dos rótulos precisam estar em conformidade com as seguintes restrições:
- Chaves e valores não podem ter mais de 63 caracteres.
- Chaves e valores podem conter apenas letras minúsculas, caracteres numéricos, sublinhados e travessões. Caracteres internacionais são permitidos.
- As chaves de rótulos precisam começar com letra minúscula.
- As chaves do rótulo não podem estar vazias.
Criar instâncias com rótulos
Ao criar uma nova instância usando a CLI gcloud ou a API, é possível rotular as instâncias.
gcloud
Ao criar sua instância, inclua a sinalização "--labels", seguida de uma lista separada por vírgulas de pares de chave-valor de marcadores. É necessário usar a versão Beta do comando de criação para incluir rótulos.
Exemplo:
gcloud beta sql instances create ... --labels track=production,billing-code=34802
Terraform
Ao criar uma instância com um rótulo, use um recurso do Terraform:
Aplique as alterações
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tf
recém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
Excluir as alterações
Para excluir as mudanças, faça o seguinte:
- Para desativar a proteção contra exclusão, no arquivo de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Para aplicar a configuração atualizada do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
-
Remova os recursos aplicados anteriormente com a configuração do Terraform executando o seguinte comando e inserindo
yes
no prompt:terraform destroy
curl
Na API, durante a solicitação "POST" para adicionar uma nova instância, adicione a propriedade "userLabels" no corpo da solicitação para aplicar rótulos a essa nova instância. Por exemplo, o corpo da solicitação de criação de uma instância tem os seguintes rótulos:
"settings": {"tier":"db-custom-2-7680", "userLabels": {"track": "production", "location": "western-division", "billing-code": "34802"},
Adicionar ou atualizar rótulos em uma instância atual
Console
Acesse a página Instâncias do Cloud SQL, no console do Google Cloud.
Marque as caixas de seleção referentes aos recursos que receberão marcadores.
Clique em Mostrar painel de informações, no canto superior direito, para expandir a coluna de marcadores.
Atualize ou adicione os novos marcadores conforme necessário.
Salve as alterações.
gcloud
Use o subcomando patch
(versão Beta) para atualizar ou adicionar rótulos em uma instância atual:
gcloud beta sql instances patch [INSTANCE_NAME] --update-labels [KEY1]=[VALUE1]...
Exemplo:
gcloud beta sql instances patch my-instance --update-labels track=production,billing-code=34802
Na ferramenta, quando a chave de marcador fornecida já existe, a chave existente é atualizada com o novo valor. Quando uma nova chave é fornecida, ela é adicionada à lista de marcadores. Somente os marcadores que você especifica são afetados. Os marcadores existentes não incluídos no comando permanecem inalterados.
REST v1
Para adicionar ou atualizar marcadores, use o método PATCH
:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- label-name-1: um nome de rótulo
- value-1: o valor de label-name-1
- label-name-2: um nome de rótulo
- value-2: o valor do label-name-2
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings" : { "userLabels" : { "label-name-1" : "value-1", "label-name-2" : "value-2" } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Na ferramenta, quando a chave de rótulo fornecida já existe, a chave é atualizada com o novo valor. Quando uma nova chave é fornecida, ela é adicionada à lista de marcadores. Somente os marcadores que você especifica são afetados. Os marcadores existentes não incluídos na solicitação permanecem inalterados.
rest v1beta4
Para adicionar ou atualizar marcadores, use o método PATCH
:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- label-name-1: um nome de rótulo
- value-1: o valor de label-name-1
- label-name-2: um nome de rótulo
- value-2: o valor do label-name-2
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings" : { "userLabels" : { "label-name-1" : "value-1", "label-name-2" : "value-2" } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Na ferramenta, quando a chave de rótulo fornecida já existe, a chave é atualizada com o novo valor. Quando uma nova chave é fornecida, ela é adicionada à lista de marcadores. Somente os marcadores que você especifica são afetados. Os marcadores existentes não incluídos na solicitação permanecem inalterados.
Remover um rótulo
Console
Acesse a página Instâncias do Cloud SQL, no console do Google Cloud.
Selecione as caixas de seleção ao lado dos recursos que têm marcadores que você quer remover.
Clique em Mostrar painel de informações para expandir a coluna de rótulos.
Clique no
X
ao lado dos rótulos que você quer remover.Salve as alterações.
gcloud
Usando a CLI gcloud, execute o subcomando patch
(versão beta) com a sinalização --remove-labels
:
gcloud beta sql instances patch [INSTANCE_NAME] --remove-labels [LABEL1],[LABEL2]
Se você fornecer um nome de rótulo que não existe, nenhum erro será retornado.
REST v1
Para remover um rótulo usando a API, defina o valor dele como null
:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- label-name: o nome do rótulo
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings" : { "userLabels" : { "label-name" : null, } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
rest v1beta4
Para remover um rótulo usando a API, defina o valor dele como null
:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- instance-id: o ID da instância
- label-name: o nome do rótulo
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
Corpo JSON da solicitação:
{ "settings" : { "userLabels" : { "label-name" : null, } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Filtrar pesquisas de instâncias usando rótulos
Você pode filtrar os resultados da lista de instâncias por marcadores usando a gcloud CLI ou a API.
gcloud
Na gcloud
, crie uma solicitação list
e use a sinalização --filter
.
Para filtrar rótulos, use a sintaxe labels.[KEY]:[VALUE]
. Por exemplo, se você quiser filtrar um rótulo billing-code
com um valor de 34802
, execute este comando:
gcloud beta sql instances list --filter='labels.billing-code:34802'
Se você quiser filtrar a existência de um rótulo, independentemente do valor:
gcloud beta sql instances list --filter='labels:billing-code'
Para conseguir a documentação completa sobre a sintaxe do filtro na gcloud CLI,
consulte a documentação do gcloud topic filters
.
curl
Na API, faça uma solicitação de lista com um parâmetro de consulta filter
codificado por URL:
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
-X GET \
https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/list?filter=userLabels.[KEY1_NAME]:[KEY1_VALUE]%20userLabels.[KEY2_NAME]:[KEY2_VALUE]
Exemplo:
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
-X GET \
https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/list?filter=userLabels.track:production%20userLabels.billing-code:34802
Quando dois valores de rótulo estão incluídos com um espaço (codificado) entre eles, ambos precisam ser verdadeiros para que uma instância seja devolvida (uma operação AND
).
Também é possível fornecer explicitamente operadores AND
, OR
e NOT
. Exemplo:
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
-X GET \
https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/list?filter=userLabels.track:production%20OR%20userLabels.billing-code:34802
A seguir
- Saiba mais sobre como exportar dados de cobrança para o BigQuery.
- Saiba mais sobre como filtrar usando a ferramenta gcloud.