gcloud é a CLI oficial do GCP, parte do Cloud SDK. Permite interagir com praticamente todos os serviços da GCP direto do terminal: criar recursos, gerenciar projetos, autenticar, submeter jobs e muito mais.
O Cloud SDK inclui também o gsutil (operações no Cloud Storage) e o bq (operações no BigQuery), embora ambos estejam sendo gradualmente unificados no próprio gcloud.
Instalação
# Linux / macOS (via script)
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
# macOS (via Homebrew)
brew install --cask google-cloud-sdk
# Verificar versão instalada
gcloud versionNo Windows, o instalador está disponível em cloud.google.com/sdk.
Autenticação
# Login com conta pessoal (abre o navegador)
gcloud auth login
# Credenciais para bibliotecas e SDKs (Application Default Credentials)
gcloud auth application-default login
# Autenticar via Service Account (CI/CD, automações)
gcloud auth activate-service-account \
--key-file=/path/to/service-account.json
# Ver conta ativa
gcloud auth listA diferença entre os dois primeiros:
auth loginautentica o CLI para comandosgcloudauth application-default loginconfigura as credenciais que as bibliotecas Python/Java/Go usam automaticamente viaGOOGLE_APPLICATION_CREDENTIALS
Configurações (configs)
O gcloud usa configurações para salvar projeto, região e zona padrão. Útil para alternar entre ambientes:
# Ver configuração ativa
gcloud config list
# Definir projeto padrão
gcloud config set project meu-projeto-id
# Definir região e zona padrão
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a
# Criar uma configuração nomeada (ex: para ambiente de prod)
gcloud config configurations create prod
gcloud config set project meu-projeto-prod
gcloud config set account [email protected]
# Listar todas as configurações
gcloud config configurations list
# Ativar uma configuração
gcloud config configurations activate prodProjetos
# Listar projetos disponíveis
gcloud projects list
# Definir projeto ativo
gcloud config set project MEU_PROJECT_ID
# Criar projeto
gcloud projects create meu-novo-projeto --name="Meu Projeto"
# Descrever um projeto
gcloud projects describe meu-projeto-idHabilitar APIs
Serviços GCP precisam ter a API habilitada no projeto antes de serem usados:
# Habilitar APIs individualmente
gcloud services enable bigquery.googleapis.com
gcloud services enable storage.googleapis.com
gcloud services enable composer.googleapis.com
gcloud services enable dataflow.googleapis.com
gcloud services enable pubsub.googleapis.com
# Listar APIs habilitadas
gcloud services list --enabled
# Verificar se uma API específica está habilitada
gcloud services list --enabled --filter="name:bigquery.googleapis.com"IAM
# Listar bindings de IAM de um projeto
gcloud projects get-iam-policy meu-projeto
# Conceder role a um usuário
gcloud projects add-iam-policy-binding meu-projeto \
--member="user:[email protected]" \
--role="roles/bigquery.dataViewer"
# Conceder role a uma Service Account
gcloud projects add-iam-policy-binding meu-projeto \
--member="serviceAccount:[email protected]" \
--role="roles/storage.objectAdmin"
# Criar Service Account
gcloud iam service-accounts create minha-sa \
--display-name="SA do pipeline de dados"
# Gerar chave JSON para uma SA (usar apenas em dev/CI)
gcloud iam service-accounts keys create chave.json \
[email protected]Compute Engine
# Listar instâncias
gcloud compute instances list
# Criar instância
gcloud compute instances create minha-vm \
--zone=us-central1-a \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud
# SSH em uma instância
gcloud compute ssh minha-vm --zone=us-central1-a
# Copiar arquivo para a instância
gcloud compute scp arquivo.txt minha-vm:~/ --zone=us-central1-aCloud Storage (gsutil / gcloud storage)
# gcloud storage é o substituto moderno do gsutil
gcloud storage buckets create gs://meu-bucket --location=us-central1
gcloud storage cp arquivo.csv gs://meu-bucket/raw/
gcloud storage ls gs://meu-bucket/
gcloud storage rm gs://meu-bucket/raw/arquivo.csvVer também gcp-cloud-storage para operações mais completas com gsutil.
BigQuery (bq)
# Executar query
bq query --use_legacy_sql=false \
'SELECT COUNT(*) FROM `meu-projeto.dataset.tabela`'
# Listar datasets
bq ls --project_id=meu-projeto
# Descrever tabela
bq show meu-projeto:dataset.tabela
# Carregar arquivo para tabela
bq load --source_format=PARQUET \
meu-projeto:dataset.tabela \
gs://meu-bucket/dados/*.parquet
# Exportar tabela para GCS
bq extract \
--destination_format=PARQUET \
meu-projeto:dataset.tabela \
gs://meu-bucket/export/*.parquetFormatação de saída
O gcloud suporta diferentes formatos de saída, úteis para scripts e automações:
# Saída em JSON
gcloud projects list --format=json
# Saída em YAML
gcloud compute instances list --format=yaml
# Saída filtrada com apenas campos específicos
gcloud compute instances list \
--format="table(name, zone, status, machineType)"
# Filtrar por propriedade
gcloud compute instances list --filter="status=RUNNING"
gcloud projects list --filter="projectId:prod-*"Variáveis de ambiente úteis
| Variável | Efeito |
|---|---|
GOOGLE_CLOUD_PROJECT | Projeto padrão para SDKs e bibliotecas |
GOOGLE_APPLICATION_CREDENTIALS | Caminho para chave JSON de SA |
CLOUDSDK_CORE_PROJECT | Equivale a gcloud config set project |
CLOUDSDK_COMPUTE_REGION | Região padrão para recursos de compute |
Dicas gerais
Autocompletion: executar gcloud components install alpha beta e adicionar o script de completion ao .bashrc / .zshrc via gcloud completion.
--dry-run e --verbosity: usar --verbosity=debug para ver as chamadas de API que o gcloud faz por baixo, útil ao depurar integrações com Terraform ou scripts.
gcloud alpha e gcloud beta: comandos em preview disponíveis antes de chegar ao GA. Úteis, mas sujeitos a mudanças.
Ver também: gcp | gcp-cloud-storage | gcp-bigquery | gcp-boas-praticas | terraform-cloud-gcp