Nesta página, você aprende a usar a biblioteca google-apis-javascript-client (em inglês) com o Compute Engine. No exercício, você usará a biblioteca de cliente JavaScript para autorizar solicitações e criar, listar ou excluir recursos do Compute Engine de fora de uma instância de VM.
Para ter acesso a uma lista completa de 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 concluir este tutorial, você precisa ter algum conhecimento de HTML e JavaScript.
Antes de começar
- Se não estiver familiarizado com o Compute Engine, siga um dos tutoriais do Guia de início rápido.
- Para executar os exemplos de JavaScript neste tutorial, configure um servidor da Web. Se você estiver usando um laptop ou computador, instale neles um servidor da Web, como o Apache ou o Nginx. Se quiser configurar um servidor da Web em uma instância do Compute Engine, consulte Como executar um servidor da Web Apache básico.
Primeiros passos
Neste exemplo, descrevemos como usar a autorização OAuth 2.0 em um aplicativo da Web e como gerenciar instâncias usando a biblioteca google-api-javascript-client. Ao concluir este exercício, você terá aprendido o seguinte:
- Autorizar seu aplicativo a fazer solicitações à API Compute Engine
- Inserir instâncias
- Listar instâncias
- Listar outros recursos, como imagens, tipos de máquina, zonas, redes, firewalls e operações
- Excluir instâncias
Para um exemplo de código avançado, visite a página GoogleCloudPlatform do GitHub.
Como carregar a biblioteca de cliente
Para usar a biblioteca de cliente JavaScript em seu aplicativo, primeiro você precisa carregá-la. Ela está localizada em:
https://apis.google.com/js/client.js
Crie um arquivo HTML básico que carregue a biblioteca do cliente:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> </head> <body> </body> </html>
Como autorizar solicitações
Este exemplo usa um método de autorização de chave de API e ID do cliente simples. Para começar, todos os aplicativos são gerenciados pelo Console do Google Cloud. Se você já tem um aplicativo registrado, use o ID e a chave secreta do cliente desse aplicativo. Se você não tem um aplicativo registrado ou quer registrar um novo, faça o seguinte:
- No Console do Cloud, acesse a página "Credenciais".
- Clique em Criar credenciais e selecione ID do cliente do Oauth.
- Se este for seu primeiro aplicativo, você será solicitado a criar uma tela de consentimento, que será exibida quando seus aplicativos solicitarem acesso aos dados de seus usuários. Clique em Configurar tela de consentimento e preencha o formulário com informações sobre o aplicativo. Salve as alterações.
- Na página "Criar ID do cliente", selecione Aplicativo da Web e clique em Criar.
- Dê um nome para a chave e, na caixa Origens JavaScript autorizadas, digite o URI de origem do aplicativo. Por exemplo, se você hospeda o aplicativo em
myexampleapplication.com
, o URI de origem éhttp://myexampleapplication.com
. Se você estiver testando o aplicativo no computador ou laptop, usehttp://localhost
. - Para criar a chave, clique em Criar.
- Salve o ID e a chave secreta do cliente para usá-los no seu aplicativo.
Para autorizar o aplicativo, use o método gapi.auth.authorize()
e forneça o seguinte:
- ID do cliente
- chave secreta do cliente, na variável
API_KEY
- uma função de retorno de chamada
O método também fornece um campo immediate
. Se você definir immediate
como true
, a autorização será executada em segundo plano, e nenhum prompt será exibido ao usuário.
Adicione o código a seguir à página HTML:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> var PROJECT_ID = 'YOUR_PROJECT_ID'; var CLIENT_ID = 'YOUR_CLIENT_ID'; var API_KEY = 'YOUR_API_KEY'; var SCOPES = 'https://www.googleapis.com/auth/compute'; /** * Authorize Google Compute Engine API. */ function authorization() { gapi.client.setApiKey(API_KEY); gapi.auth.authorize({ client_id: CLIENT_ID, scope: SCOPES, immediate: false }, function(authResult) { if (authResult && !authResult.error) { window.alert('Auth was successful!'); } else { window.alert('Auth was not successful'); } } ); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> </body> </html>
Abra sua página em um navegador. Depois que a página carregar, você receberá uma solicitação para autorizar o aplicativo. Depois de autorizá-lo, um alerta será exibido informando que esse processo foi realizado com sucesso.
Como inicializar a API Compute Engine no aplicativo
Agora, chame gapi.client.load()
(em inglês) para inicializar a API. Esse método aceita o nome e o número de versão da API como parâmetros. Na página HTML, adicione uma função de inicialização e invoque-a assim que o aplicativo for autorizado:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> var PROJECT_ID = 'YOUR_PROJECT_ID'; var CLIENT_ID = 'YOUR_CLIENT_ID'; var API_KEY = 'YOUR_API_KEY'; var SCOPES = 'https://www.googleapis.com/auth/compute'; var API_VERSION = 'v1'; /** * Load the Google Compute Engine API. */ function initializeApi() { gapi.client.load('compute', API_VERSION); } /** * Authorize Google Compute Engine API. */ function authorization() { gapi.client.setApiKey(API_KEY); gapi.auth.authorize({ client_id: CLIENT_ID, scope: SCOPES, immediate: false }, function(authResult) { if (authResult && !authResult.error) { initializeApi(); } else { window.alert('Auth was not successful'); } } ); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> </body> </html>
Pronto! Agora você já pode enviar solicitações à API.
Como listar instâncias
Para explorar operações básicas, comece criando solicitações para listar recursos específicos. Adicione o seguinte à sua página:
</head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> </body> </html>
Agora, defina a função listInstances()
. Para listar instâncias, use o método gapi.client.compute.instances.list()
:
/** * Google Compute Engine API request to retrieve the list of instances in * your Google Compute Engine project. */ function listInstances() { var request = gapi.client.compute.instances.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE }); request.execute(function(resp) { // Code to handle response }); }
Além de project
e zone
, é possível adicionar campos relacionados ao tamanho máximo do resultado, filtrar instâncias e realizar outras configurações. Para uma lista de todos os campos possíveis desse método, consulte o APIs Explorer ou revise a documentação da API.
Adicione a nova função listInstances()
à página da Web desta forma:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> var PROJECT_ID = 'YOUR_PROJECT_ID'; var CLIENT_ID = 'YOUR_CLIENT_ID'; var API_KEY = 'YOUR_API_KEY'; var SCOPES = 'https://www.googleapis.com/auth/compute'; var API_VERSION = 'v1'; var DEFAULT_PROJECT = PROJECT_ID; var DEFAULT_ZONE = 'ZONE_NAME'; // For example, us-central1-a /** * Load the Google Compute Engine API. */ function initializeApi() { gapi.client.load('compute', API_VERSION); } /** * Authorize Google Compute Engine API. */ function authorization() { gapi.client.setApiKey(API_KEY); gapi.auth.authorize({ client_id: CLIENT_ID, scope: SCOPES, immediate: false }, function(authResult) { if (authResult && !authResult.error) { initializeApi(); } else { window.alert('Auth was not successful'); } } ); } /** * Google Compute Engine API request to retrieve the list of instances in * your Google Compute Engine project. */ function listInstances() { var request = gapi.client.compute.instances.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE }); executeRequest(request, 'listInstances'); } /** * Executes your Google Compute Engine request object and, subsequently, * prints the response. * @param {gapi.client.request} request A Google Compute Engine request * object issued from the Google APIs JavaScript client library. * @param {string} apiRequestName The name of the example API request. */ function executeRequest(request, apiRequestName) { request.execute(function(resp) { newWindow = window.open(apiRequestName, '', 'width=600, height=600, scrollbars=yes'); newWindow.document.write('<h1>' + apiRequestName + '</h1> <br />' + '<pre>' + JSON.stringify(resp.result, null, ' ') + '</pre>'); if (resp.error) { newWindow.document.write('<h1>Error:</h1>'); newWindow.document.write('<pre>' + JSON.stringify(resp.error, null, ' ') + '</pre>'); } }); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> </body> </html>
Atualize a página e clique no novo botão Listar instâncias, que retorna uma lista de instâncias pertencentes ao projeto especificado.
Como filtrar resultados da lista
Um elemento útil para listar recursos é o campo filter
, que filtra os resultados com base em uma expressão. Por exemplo, para excluir instâncias encerradas, use a expressão de filtro a seguir:
/** * Google Compute Engine API request to retrieve a filtered list * of instances in your Google Compute Engine project. */ function listInstancesWithFilter() { var request = gapi.client.compute.instances.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'filter': 'status ne TERMINATED' }); var apiRequestName = 'listInstancesWithFilter'; executeRequest(request, apiRequestName); }
Como listar outros recursos
Para listar outros recursos, use os métodos abaixo:
Tipo | Método |
---|---|
Listar zonas | gapi.client.compute.zones.list() |
Listar tipos de máquinas | gapi.client.compute.machinetypes.list() |
Listar operações globais | gapi.client.compute.globalOperations.list() |
Listar operações por zona | gapi.client.compute.zoneOperations.list() |
Listar imagens | gapi.client.compute.images.list() |
Listar firewalls | gapi.client.compute.firewalls.list() |
Como listar operações
É possível listar os seguintes tipos de operações:
- As operações por zona são realizadas em recursos em uma zona específica. Por exemplo, as operações por zona incluem operações realizadas em discos e instâncias.
- As operações globais são realizadas em recursos globais, como imagens e tipos de máquina. .
Para mais informações sobre recursos globais e por zona, consulte a visão geral de regiões e zonas.
Como listar operações por zona
Para ver uma lista de operações por zona, use o método gapi.client.compute.zoneOperations.list()
:
/** * Google Compute Engine API request to retrieve the list of operations * (inserts, deletes, etc.) for your Google Compute Engine project. */ function listZoneOperations() { var request = gapi.client.compute.zoneOperations.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE }); executeRequest(request, 'listZoneOperations'); }
Na sua página da Web, adicione as linhas a seguir:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> [...snip...] /** * Google Compute Engine API request to retrieve the list of operations * (inserts, deletes, etc.) for your Google Compute Engine project. */ function listZoneOperations() { var request = gapi.client.compute.zoneOperations.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE }); executeRequest(request, 'listZoneOperations'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listZoneOperations()">List Zone Operations</button> </body> </html>
Como listar operações globais
Para ver uma lista de operações globais, use o método gapi.client.compute.globalOperations.list()
:
/** * Google Compute Engine API request to retrieve the list of global * operations (inserts, deletes, etc.) for your Google Compute Engine * project. */ function listGlobalOperations() { var request = gapi.client.compute.globalOperations.list({ 'project': DEFAULT_PROJECT }); executeRequest(request, 'listGlobalOperations'); }
Na sua página, adicione as linhas a seguir:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> [...snip...] /** * Google Compute Engine API request to retrieve the list of global * operations (inserts, deletes, etc.) for your Google Compute Engine * project. */ function listGlobalOperations() { var request = gapi.client.compute.globalOperations.list({ 'project': DEFAULT_PROJECT }); executeRequest(request, 'listGlobalOperations'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listZoneOperations()">List Zone Operations</button> <button onclick="listGlobalOperations()">List Global Operations</button> </body> </html>
Como adicionar um disco
Antes de criar uma instância, é necessário fornecer um disco permanente de raiz inicializável para a instância. Para isso, use o método gapi.client.compute.disks.insert()
e especifique o nome, tamanho, zona e imagem de origem na solicitação:
/** * Google Compute Engine API request to insert a disk into your cluster. */ function insertDisk() { var request = gapi.client.compute.disks.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'sourceImage': DEFAULT_IMAGE_URL, 'resource': { 'name': DEFAULT_DISK_NAME } }); executeRequest(request, 'insertDisk'); }
Na sua página da Web, adicione as linhas a seguir:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> [...snip...] var DEFAULT_NAME = 'test-node'; var GOOGLE_PROJECT = 'debian-cloud'; // project hosting a shared image var DEFAULT_DISK_NAME = DEFAULT_NAME; var DEFAULT_IMAGE_FAMILY = 'debian-9'; var BASE_URL = 'https://www.googleapis.com/compute/' + API_VERSION; var PROJECT_URL = BASE_URL + '/projects/' + DEFAULT_PROJECT; var GOOGLE_PROJECT_URL = BASE_URL + '/projects/' + GOOGLE_PROJECT; var DEFAULT_DISK_URL = PROJECT_URL + '/zones/' + DEFAULT_ZONE + '/disks/' + DEFAULT_DISK_NAME; var DEFAULT_IMAGE_URL = GOOGLE_PROJECT_URL + '/global/images/family/' + DEFAULT_IMAGE_FAMILY; [...snip...] /** * Google Compute Engine API request to insert a disk into your cluster. */ function insertDisk() { var request = gapi.client.compute.disks.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'sourceImage': DEFAULT_IMAGE_URL, 'resource': { 'name': DEFAULT_DISK_NAME } }); executeRequest(request, 'insertDisk'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listZoneOperations()">List Zone Operations</button> <button onclick="listGlobalOperations()">List Global Operations</button> <button onclick="insertDisk()">Add a Disk</button> </body> </html>
Atualize sua página no navegador e clique no botão Adicionar disco para criar seu novo disco.
Adicionar uma instância
Para adicionar uma instância, use o método gapi.client.compute.instances.insert()
e especifique uma imagem, zona, tipo de máquina e objeto de interface de rede na solicitação:
/** * Google Compute Engine API request to insert your instance */ function insertInstance() { resource = { 'image': DEFAULT_IMAGE_URL, 'name': DEFAULT_IMAGE_NAME, 'machineType': DEFAULT_MACHINE_URL, 'disks': [{ 'source': DEFAULT_DISK_URL, 'type': 'PERSISTENT', 'boot': true }], 'networkInterfaces': [{ 'network': DEFAULT_NETWORK }] }; var request = gapi.client.compute.instances.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'resource': resource }); request.execute(function(resp) { // Code to handle response }); }Cada página de recursos descreve zonas, imagens e tipos de máquina disponíveis que podem ser usados. Ao indicar recursos específicos, forneça o URL completo do recurso. Por exemplo, para especificar uma imagem, forneça o URL completo para a imagem, como no exemplo a seguir:
https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/<image-name>
Os URLs para outros recursos incluem:
Recurso | URL |
---|---|
Tipos de máquinas | https://www.googleapis.com/compute/v1/projects/<project-id>/global/machineTypes/<machine-name> |
Zonas | https://www.googleapis.com/compute/v1/projects/<project-id>/zones/<zone-name> |
Rede | https://www.googleapis.com/compute/v1/projects/<project-id>/global/networks/<network-name> |
Na página da Web, adicione as seguintes linhas:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> [...snip...] var DEFAULT_IMAGE_NAME = DEFAULT_NAME; var DEFAULT_MACHINE_TYPE = 'e2-standard-2'; var DEFAULT_MACHINE_URL = PROJECT_URL + '/zones/' + DEFAULT_ZONE + '/machineTypes/' + DEFAULT_MACHINE_TYPE; var DEFAULT_NETWORK = PROJECT_URL + '/global/networks/default'; [...snip...] /** * Google Compute Engine API request to insert your instance */ function insertInstance() { resource = { 'image': DEFAULT_IMAGE_URL, 'name': DEFAULT_IMAGE_NAME, 'machineType': DEFAULT_MACHINE_URL, 'disks': [{ 'source': DEFAULT_DISK_URL, 'type': 'PERSISTENT', 'boot': true }], 'networkInterfaces': [{ 'network': DEFAULT_NETWORK }] }; var request = gapi.client.compute.instances.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'resource': resource }); executeRequest(request, 'insertInstance'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listZoneOperations()">List Zone Operations</button> <button onclick="listGlobalOperations()">List Global Operations</button> <button onclick="insertDisk()">Add a Disk</button> <button onclick="insertInstance()">Add an Instance</button> </body> </html>
Atualize a página no navegador e clique no botão Inserir instância para criar a nova instância. Clique no botão Listar instâncias para ver como a nova instância aparece na lista.
Como adicionar uma instância com metadados
Quando você cria uma instância, também pode passar metadados personalizados. É possível definir qualquer tipo de metadados personalizados, mas a área em que melhor atuam é a execução de scripts de inicialização. Para criar uma instância com metadados personalizados, adicione o campo metadata
ao código, conforme mostrado abaixo:
/** * Google Compute Engine API request to insert your instance with metadata */ function insertInstanceWithMetadata() { resource = { 'image': DEFAULT_IMAGE_URL, 'name': 'node-with-metadata', 'machineType': DEFAULT_MACHINE_URL, 'disks': [{ 'source': DEFAULT_DISK_URL, 'type': 'PERSISTENT', 'boot': true }], 'networkInterfaces': [{ 'network': DEFAULT_NETWORK }], 'metadata': { 'items': [{ 'value': 'apt -y install apache2', 'key': 'startup-script' }] } }; var request = gapi.client.compute.instances.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'resource': resource }); executeRequest(request, 'insertInstance'); }
Os metadados dessa instância definem um script de inicialização que instala o apache2.
Como ver informações sobre uma instância
Para ver informações sobre uma instância, use o método gapi.client.compute.instances.get()
e forneça os campos instance
e project
:
/** * Google Compute Engine API request to get your instance */ function getInstance() { var request = gapi.client.compute.instances.get({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'instance': DEFAULT_IMAGE_NAME }); request.execute(function(resp) { // Code to handle response }); }
Na sua página, adicione as linhas a seguir:
<!DOCTYPE html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> [...snip...] /** * Google Compute Engine API request to get your instance */ function getInstance() { var request = gapi.client.compute.instances.get({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'instance': DEFAULT_IMAGE_NAME }); executeRequest(request, 'getInstance'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listZoneOperations()">List Zone Operations</button> <button onclick="listGlobalOperations()">List Global Operations</button> <button onclick="insertDisk()">Insert a Disk</button> <button onclick="insertInstance()">Insert an Instance</button> <button onclick="getInstance()">Get an Instance</button> </body> </html>
Atualize a página e clique no botão Conseguir uma instância.
Excluir uma instância
Para excluir uma instância, use o método gapi.client.compute.instances.delete()
e forneça o nome da instância e o ID do projeto:
/** * Google Compute Engine API request to delete your instance */ function deleteInstance() { var request = gapi.client.compute.instances.delete({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'instance': DEFAULT_IMAGE_NAME }); request.execute(function(resp) { // Code to handle response }); }
Na sua página, adicione as linhas a seguir:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> [...snip...] /** * Google Compute Engine API request to delete your instance */ function deleteInstance() { var request = gapi.client.compute.instances.delete({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'instance': DEFAULT_IMAGE_NAME }); executeRequest(request, 'deleteInstance'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listZoneOperations()">List Zone Operations</button> <button onclick="listGlobalOperations()">List Global Operations</button> <button onclick="insertDisk()">Insert a Disk</button> <button onclick="insertInstance()">Insert an Instance</button> <button onclick="getInstance()">Get an Instance</button> <button onclick="deleteInstance()">Delete an Instance</button> </body> </html>
Atualize a página e clique no botão Excluir uma instância.
Exclusão de um disco
Para excluir um disco, use o método gapi.client.compute.disks.delete()
e forneça o nome do disco, o ID do projeto e a zona:
/** * Google Compute Engine API request to delete your disk */ function deleteDisk() { var request = gapi.client.compute.disks.delete({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'disk': DEFAULT_DISK_NAME }); executeRequest(request, 'deleteDisk'); }
Na sua página, adicione o código a seguir:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> [...snip...] /** * Google Compute Engine API request to delete your disk */ function deleteDisk() { var request = gapi.client.compute.disks.delete({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'disk': DEFAULT_DISK_NAME }); executeRequest(request, 'deleteDisk'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listZoneOperations()">List Zone Operations</button> <button onclick="listGlobalOperations()">List Global Operations</button> <button onclick="insertDisk()">Insert a Disk</button> <button onclick="insertInstance()">Insert an Instance</button> <button onclick="getInstance()">Get an Instance</button> <button onclick="deleteInstance()">Delete an Instance</button> <button onclick="deleteDisk()">Delete a disk</button> </body> </html>
Atualize a página e clique no botão Excluir um disco.
Exemplo completo
Veja a seguir o exemplo de código completo deste exercício:
<!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link rel="stylesheet" src="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="https://apis.google.com/js/client.js"></script> <script type="text/javascript"> var PROJECT_ID = 'YOUR_PROJECT_ID'; var CLIENT_ID = 'YOUR_CLIENT_ID'; var API_KEY = 'YOUR_API_KEY'; var SCOPES = 'https://www.googleapis.com/auth/compute'; var API_VERSION = 'v1'; var DEFAULT_PROJECT = PROJECT_ID; var DEFAULT_ZONE = 'ZONE_NAME'; // For example, us-central1-a var DEFAULT_NAME = 'test-node'; var GOOGLE_PROJECT = 'debian-cloud'; // project hosting a shared image var DEFAULT_DISK_NAME = DEFAULT_NAME; var DEFAULT_IMAGE_FAMILY = 'debian-9'; var BASE_URL = 'https://www.googleapis.com/compute/' + API_VERSION; var PROJECT_URL = BASE_URL + '/projects/' + DEFAULT_PROJECT; var GOOGLE_PROJECT_URL = BASE_URL + '/projects/' + GOOGLE_PROJECT; var DEFAULT_DISK_URL = PROJECT_URL + '/zones/' + DEFAULT_ZONE + '/disks/' + DEFAULT_DISK_NAME; var DEFAULT_IMAGE_URL = GOOGLE_PROJECT_URL + '/global/images/family/' + DEFAULT_IMAGE_FAMILY; var DEFAULT_IMAGE_NAME = DEFAULT_NAME; var DEFAULT_MACHINE_TYPE = 'e2-standard-2'; var DEFAULT_MACHINE_URL = PROJECT_URL + '/zones/' + DEFAULT_ZONE + '/machineTypes/' + DEFAULT_MACHINE_TYPE; var DEFAULT_NETWORK = PROJECT_URL + '/global/networks/default'; /** * Authorize Google Compute Engine API. */ function authorization() { gapi.client.setApiKey(API_KEY); gapi.auth.authorize({ client_id: CLIENT_ID, scope: SCOPES, immediate: false }, function(authResult) { if (authResult && !authResult.error) { initializeApi(); } else { window.alert('Auth was not successful'); } } ); } /** * Load the Google Compute Engine API. */ function initializeApi() { gapi.client.load('compute', API_VERSION); } /** * Executes your Google Compute Engine request object and, subsequently, * prints the response. * @param {gapi.client.request} request A Google Compute Engine request * object issued from the Google APIs JavaScript client library. * @param {string} apiRequestName The name of the example API request. */ function executeRequest(request, apiRequestName) { request.execute(function(resp) { newWindow = window.open(apiRequestName, '', 'width=600, height=600, scrollbars=yes'); newWindow.document.write('<h1>' + apiRequestName + '</h1> <br />' + '<pre>' + JSON.stringify(resp.result, null, ' ') + '</pre>'); if (resp.error) { newWindow.document.write('<h1>Error:</h1>'); newWindow.document.write('<pre>' + JSON.stringify(resp.error, null, ' ') + '</pre>'); } }); } /** * Google Compute Engine API request to delete your instance */ function deleteInstance() { var request = gapi.client.compute.instances.delete({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'instance': DEFAULT_IMAGE_NAME }); executeRequest(request, 'deleteInstance'); } /** * Google Compute Engine API request to delete your disk */ function deleteDisk() { var request = gapi.client.compute.disks.delete({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'disk': DEFAULT_DISK_NAME }); executeRequest(request, 'deleteDisk'); } /** * Google Compute Engine API request to get your instance */ function getInstance() { var request = gapi.client.compute.instances.get({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'instance': DEFAULT_IMAGE_NAME }); executeRequest(request, 'getInstance'); } /** * Google Compute Engine API request to insert a disk into your cluster. */ function insertDisk() { var request = gapi.client.compute.disks.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'sourceImage': DEFAULT_IMAGE_URL, 'resource': { 'name': DEFAULT_DISK_NAME } }); executeRequest(request, 'insertDisk'); } /** * Google Compute Engine API request to insert your instance with metadata */ function insertInstanceWithMetadata() { resource = { 'image': DEFAULT_IMAGE_URL, 'name': 'node-with-metadata', 'machineType': DEFAULT_MACHINE_URL, 'disks': [{ 'source': DEFAULT_DISK_URL, 'type': 'PERSISTENT', 'boot': true }], 'networkInterfaces': [{ 'network': DEFAULT_NETWORK }], 'metadata': { 'items': [{ 'value': 'apt -y install apache2', 'key': 'startup-script' }] } }; var request = gapi.client.compute.instances.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'resource': resource }); executeRequest(request, 'insertInstance'); } /** * Google Compute Engine API request to insert your instance */ function insertInstance() { resource = { 'image': DEFAULT_IMAGE_URL, 'name': DEFAULT_IMAGE_NAME, 'machineType': DEFAULT_MACHINE_URL, 'disks': [{ 'source': DEFAULT_DISK_URL, 'type': 'PERSISTENT', 'boot': true }], 'networkInterfaces': [{ 'network': DEFAULT_NETWORK }] }; var request = gapi.client.compute.instances.insert({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'resource': resource }); executeRequest(request, 'insertInstance'); } /** * Google Compute Engine API request to retrieve the list of global * operations (inserts, deletes, etc.) for your Google Compute Engine * project. */ function listGlobalOperations() { var request = gapi.client.compute.globalOperations.list({ 'project': DEFAULT_PROJECT }); executeRequest(request, 'listGlobalOperations'); } /** * Google Compute Engine API request to retrieve the list of operations * (inserts, deletes, etc.) for your Google Compute Engine project. */ function listZoneOperations() { var request = gapi.client.compute.zoneOperations.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE }); executeRequest(request, 'listZoneOperations'); } /** * Google Compute Engine API request to retrieve a filtered list * of instances in your Google Compute Engine project. */ function listInstancesWithFilter() { var request = gapi.client.compute.instances.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE, 'filter': 'status ne TERMINATED' }); var apiRequestName = 'listInstancesWithFilter'; executeRequest(request, apiRequestName); } /** * Google Compute Engine API request to retrieve the list of instances in * your Google Compute Engine project. */ function listInstances() { var request = gapi.client.compute.instances.list({ 'project': DEFAULT_PROJECT, 'zone': DEFAULT_ZONE }); executeRequest(request, 'listInstances'); } /** * Driver for sample application. */ $(window).load(authorization); </script> </head> <body> <header> <h1>Google Compute Engine JavaScript Client Library Application</h1> </header> <button onclick="listInstances()">List Instances</button> <button onclick="listInstancesWithFilter()">List Instances with Filter</button> <button onclick="listZoneOperations()">List Zone Operations</button> <button onclick="listGlobalOperations()">List Global Operations</button> <button onclick="insertDisk()">Insert a Disk</button> <button onclick="insertInstance()">Insert an Instance</button> <button onclick="insertInstanceWithMetadata()">Insert Instance with Metadata</button> <button onclick="getInstance()">Get an Instance</button> <button onclick="deleteInstance()">Delete an Instance</button> <button onclick="deleteDisk()">Delete a disk</button> </body> </html>
Próximas etapas
Depois de concluir este exercício, você pode fazer o seguinte:
- Faça o download de uma amostra avançada e veja outros exemplos na página googlecloudplatform do GitHub. A amostra avançada (em inglês) inclui alguns métodos de expedição mais complexos e é mais simples do que o exemplo mostrado nesta página.
- Se você quiser usar a biblioteca do cliente Python, consulte Como usar a biblioteca do cliente Python.
- Para informações sobre como executar outras tarefas com a API, leia a referência da API.
- Comece a criar seus aplicativos.