Neste documento, você verá como usar as bibliotecas de cliente do Cloud para Python no Compute Engine. Veja como autorizar solicitações e como criar, listar e excluir instâncias. Este exercício discute como usar a biblioteca google-api-python-client para acessar os recursos do Compute Engine. Execute este exemplo pela máquina local ou em uma instância de VM, desde que você tenha autorizado a amostra corretamente.
Para ver uma lista completa das bibliotecas de cliente disponíveis, inclusive outras bibliotecas do Google e de código aberto de terceiros, consulte a página "Bibliotecas de cliente".
Para ver o exemplo de código completo com todas as importações necessárias, acesse a página GoogleCloudPlatform/python-docs-samples (em inglês) do GitHub.
Objetivos
- Definir autorizações do OAuth 2.0 usando a biblioteca oauth2client.
- Criar uma instância usando a biblioteca google-python-client.
- Listar instâncias usando a biblioteca google-python-client.
- Excluir uma instância usando a biblioteca google-python-client.
Custos
Neste tutorial, usamos componentes faturáveis do Google Cloud, incluindo o Compute Engine.
Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.Antes de começar
-
Faça login na sua conta do Google.
Se você ainda não tiver uma, inscreva-se.
-
No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.
- Instale o SDK do Cloud.
- Depois que o SDK estiver instalado, execute
gcloud auth application-default login
. - Instale a biblioteca google-api-python-client. Normalmente, é possível executar:
$ pip install --upgrade google-api-python-client
Para ver mais informações sobre como instalar essa biblioteca, consulte as instruções de instalação. Também é necessário ter o Python 2.7 ou 3.3+ para executar as bibliotecas de cliente do Cloud para Python.
- Ative a API Cloud Storage.
- Crie um bucket do Cloud Storage e anote o nome do bucket para uso posterior.
Como autorizar solicitações
Neste exemplo, usamos a autorização do OAuth 2.0. Há várias maneiras de autorizar solicitações usando o OAuth 2.0, mas, neste exemplo, usaremos o Application Default Credentials.
Isso permite reutilizar as credenciais da ferramenta gcloud
se você estiver executando a amostra em uma estação de trabalho local ou reutilizar credenciais de uma conta de serviço se estiver executando a amostra no Compute Engine ou no App Engine. É necessário instalar e autorizar a ferramenta gcloud
, conforme as instruções na seção Antes de começar.
As credenciais do Application Default Credentials são fornecidas nas bibliotecas de cliente da API Google automaticamente. Você só precisa compilar e inicializar a API:
compute = googleapiclient.discovery.build('compute', 'v1')
Por exemplo, o seguinte snippet é o método principal desta amostra, que compila e inicializa a API e faz algumas chamadas para criar, listar e excluir uma instância:
Como listar instâncias
Com as bibliotecas de cliente do Cloud para Python, é possível listar instâncias através do método compute.instances().list
. É necessário fornecer o ID do projeto e a zona em que você quer listar instâncias. Exemplo:
Como adicionar uma instância
Para adicionar uma instância, use o método instances().insert
e especifique as propriedades da nova instância. Essas propriedades são especificadas no corpo da solicitação. Para detalhes sobre cada uma delas, consulte a referência da API sobre instances.insert
.
Quando você cria uma instância, os valores para as seguintes propriedades precisam ser fornecidos na solicitação:
- Nome da instância
- Disco permanente raiz
- Tipo de máquina
- Zona
- Interfaces de rede
Este exemplo inicia uma instância com as seguintes propriedades em uma zona de sua escolha:
- Tipo de máquina: e2-standard-2
- Disco permanente raiz: um novo disco permanente baseado na imagem do Debian 8 mais recente
A conta de serviço padrão do Compute Engine com os seguintes escopos:
https://www.googleapis.com/auth/devstorage.read_write
, para que a instância possa ler e gravar arquivos no Cloud Storagehttps://www.googleapis.com/auth/logging.write
, para que os registros de instâncias possam ser enviados para o Cloud Logging
Metadados: para especificar comandos que devem ser executados na inicialização da instância.
As seções a seguir descrevem os parâmetros de criação de instâncias.
Discos permanentes raiz
Todas as instâncias precisam ser inicializadas a partir de um disco permanente raiz. Esse disco contém todos os arquivos necessários para iniciar uma instância. Ao criar um disco permanente raiz, você precisa selecionar uma imagem pública ou uma imagem personalizada para aplicar ao disco. No exemplo acima, foi criado um novo disco permanente raiz com base no Debian 8 junto com a instância. Entretanto, também crie um disco com antecedência e anexe-o à instância.
Metadados de instância
Ao criar sua instância, talvez você queira incluir metadados de instância, como um script de inicialização, variáveis de configuração e chaves SSH. No exemplo acima, você usou o campo metadata
no corpo da solicitação para especificar um script de inicialização para a instância, além de algumas variáveis de configuração como pares de chave-valor. O script de inicialização, listado abaixo, mostra como ler essas variáveis e usá-las para aplicar texto a uma imagem e fazer o upload no Cloud Storage.
Excluir uma instância
Para excluir uma instância, chame o método instances().delete
e forneça o nome, a zona e o ID do projeto da instância a ser excluída. Como você definiu o parâmetro autoDelete
para o disco de inicialização, ele também é excluído com a instância. Essa configuração está desativada por padrão, porém, é útil quando seu caso de uso faz chamadas para excluir discos e instâncias simultaneamente.
Executar o exemplo
Execute a amostra completa fazendo o download do código e executando-o na linha de comando. Certifique-se de fazer o download do arquivo create_instance.py
e do arquivo startup-script.sh
. Para executar a amostra:
python create_instance.py --name [INSTANCE_NAME] --zone [ZONE] [PROJECT_ID] [CLOUD_STORAGE_BUCKET]
em que:
[INSTANCE_NAME]
é o nome da instância a ser criada;[ZONE]
é a zona pretendida para esta solicitação.[PROJECT_ID]
é o ID do nosso projeto.[CLOUD_STORAGE_BUCKET]
é o nome do bucket configurado inicialmente, mas sem o prefixogs://
.
Exemplo:
python python-example.py --name example-instance --zone us-central1-a example-project my-gcs-bucket
Aguardar a conclusão de operações
As solicitações feitas à API Compute Engine que modificam recursos, como instâncias, retornam uma resposta confirmando a solicitação. Essa confirmação viabiliza a verificação do status da operação solicitada. Como as operações podem levar alguns minutos para serem concluídas, geralmente é mais fácil esperar a operação ser concluída antes de continuar. Este método auxiliar aguarda até que a operação seja concluída antes de retornar:
Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Excluir o bucket do Cloud Storage
Para excluir um bucket do Cloud Storage:
- No Console do Cloud, acesse a página Navegador do Cloud Storage.
- Clique na caixa de seleção do bucket que você quer excluir.
- Para excluir o bucket, clique em Excluir delete.
A seguir
- Faça o download e veja a amostra de código completa. A amostra completa contém um pequeno exemplo de como usar todos esses métodos juntos. Sinta-se à vontade para fazer o download desse exemplo, alterá-lo e executá-lo para atender às suas necessidades.
- Leia a referência da API para aprender a executar outras tarefas com ela.