是否可以在云功能中获取项目元数据?

时间:2018-10-22 11:14:59

标签: google-cloud-platform google-cloud-functions google-compute-engine

我想在compute engine云函数内的GCP中设置项目范围的元数据。这可能吗?

这是我的尝试:

metadata.js

const request = require('request-promise');

async function getMetaData(attr) {
  const url = `http://metadata.google.internal/computeMetadata/v1/project/attributes/${attr}`;
  const options = {
    headers: {
      'Metadata-Flavor': 'Google'
    }
  };
  return request(url, options)
    .then(response => {
      console.info(`Retrieve meta data successfully. meta data: ${response.body}`);
      return response.body;
    })
    .catch(err => {
      console.error('Retrieve meta data failed.', err);
    });
}

async function retrieveMetaData() {
  return {
    IT_EBOOKS_API: await getMetaData('IT_EBOOKS_API')
  };
}

module.exports = { getMetaData, retrieveMetaData };

云功能index.js

const { retrieveMetaData } = require('./metadata');

async function retrieveComputeMetadata(req, res) {
  const envVars = await retrieveMetaData();
  console.log('envVars: ', envVars);
  res.status(200).json(envVars);
}

exports.retrieveComputeMetadata = retrieveComputeMetadata;

当我测试云功能时,日志显示一个错误:

Retrieve meta data failed. { StatusCodeError: 404 - "404 page not found\n" at new StatusCodeError (/srv/node_modules/request-promise-core/lib/errors.js:32:15) at ....

似乎找不到url

1 个答案:

答案 0 :(得分:0)

您要打“ ..v1 / project / attributes /”的API不可用。由于Cloud Functions在GAE Standard上运行,因此详细说明了available here.哪些端点。