Есть ли способ получить внешний IP-адрес виртуальной машины с узла с помощью любого npm или облачного API Google? - PullRequest
0 голосов
/ 04 марта 2019

Я хочу получить IP-адрес моего инстанса виртуальной машины Google с помощью узла.Есть ли какой-нибудь пакет NPM или Google Cloud предоставляет какой-либо API?Я не хочу копировать и вставлять вручную.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Другая возможность - использовать сервис метаданных.Подробности см. В следующей документации:

https://cloud.google.com/compute/docs/storing-retrieving-metadata

На самом высоком уровне GCP хранит метаданные о каждом экземпляре виртуальной машины, который включает ваш внешний IP-адрес.Посредством вызова REST к специальной конечной точке вы можете самостоятельно запросить все свои метаданные.Это возвращается как документ JSON, который затем может быть легко проанализирован.

Например, выполните следующую команду в приглашении оболочки внутри вашей виртуальной машины:

wget --output-document=- --header="Metadata-Flavor: Google" \
  --quiet http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip

Надеемся, вы увидите, чтоделая этот запрос REST, мы в значительной степени независимы от языка, и, следовательно, если вы можете сделать запрос REST с вашего любимого языка, вы можете получить нужные данные (и многое другое).Если вы не используете эту технику для своих текущих нужд, убедитесь в этом и учитывайте ее для будущих предметов, где вам нужны другие данные.

0 голосов
/ 04 марта 2019

Вы можете использовать клиентскую библиотеку Node.js для Google Compute Engine .

Существует несколько способов получения внешнего IP-адреса экземпляра вычислений, например, вы можете запустить этот код:

const Compute = require('@google-cloud/compute');
const compute = new Compute({
  projectId: 'your-project-id',
  keyFilename: '/your/path/to/file'
});
const zone = compute.zone('instanceZone');
const vm = zone.vm('instanceName');

vm.getMetadata(function(err, metadata, apiResponse) {});

//-
// If the callback is omitted, we'll return a Promise.
//-
vm.getMetadata().then(function(data) {
  // Representation of this VM as the API sees it.
  const metadata = data[0];
  console.log(metadata.networkInterfaces[0].accessConfigs[0].natIP)
});

Также вы можете использовать Google Cloud Platformинтерфейс командной строки .

gcloud compute instances describe instanceName --zone=instanceZone | grep natIP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...