如何使用Node JS创建Google Cloud项目和服务帐户?

时间:2019-12-17 16:19:02

标签: node.js google-cloud-platform

您如何以编程方式配置Google云端项目,启用API并使用节点js创建服务帐户?

谢谢

克里斯

3 个答案:

答案 0 :(得分:2)

答案在REST API中。

假设您使用的是Cloud Shell,请首先通过运行以下命令安装Node.JS客户端库:

npm install googleapis --save

要创建项目,可以使用Resource Manager API method ‘projects.create‘,如此处的Node.JS代码示例所示。将my-project-id替换为所需的项目ID,并将my-project-name替换为所需的项目名称:

const {google} = require('googleapis');
var cloudResourceManager = google.cloudresourcemanager('v1');

authorize(function(authClient) {
  var request = {
    resource: {
      "projectId": "my-project-id", // TODO
      "name": "my-project-name" // TODO
    },
    auth: authClient,
  };

  cloudResourceManager.projects.create(request, function(err, response) {
    if (err) {
      console.error(err);
      return;
    }
    console.log(JSON.stringify(response, null, 2));
  });
});

类似地,您可以使用Cloud IAM API ‘projects.serviceAccounts.create’ method创建服务帐户。将my-project-id替换为将与服务帐户关联的项目ID,并将my-service-account替换为所需的服务帐户ID:

const {google} = require('googleapis');
var iam = google.iam('v1');

authorize(function(authClient) {
  var request = {
    name: 'projects/my-project-id', // TODO
    resource: {
      "accountId": "my-service-account" // TODO
    },
    auth: authClient,
  };

  iam.projects.serviceAccounts.create(request, function(err, response) {
    if (err) {
      console.error(err);
      return;
    }
    console.log(JSON.stringify(response, null, 2));
  });
});

然后,要启用API或服务,请使用Service Usage API ‘services.enable’ method。在这种情况下,我将启用 Cloud Pub / Sub API 。将123替换为您的项目编号:

const {google} = require('googleapis');
var serviceUsage = google.serviceusage('v1');

authorize(function(authClient) {
  var request = {
    name: "projects/123/services/pubsub.googleapis.com", // TODO
    auth: authClient,
  };

  serviceUsage.services.enable(request, function(err, response) {
    if (err) {
      console.error(err);
      return;
    }
    console.log(JSON.stringify(response, null, 2));
  });
});

或者,您可以使用‘services.batchEnable‘ method在一个调用中启用多个API。您可以找到可以启用here的API的完整列表。

您可以使用以下方法定义每个呼叫:

function authorize(callback) {
  google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/cloud-platform']
  }).then(client => {
    callback(client);
  }).catch(err => {
    console.error('authentication failed: ', err);
  });
}

请注意,您应该使代码适应您的需求,简化代码,并修改或添加API调用所需的任何其他参数。

答案 1 :(得分:0)

据我所知,尚不支持使用Client Libraries管理项目。

您需要依靠Nummanage projectsenabling apis才能实现。

如果您希望自动执行此操作,则在使用gcloud cli时仍可以执行using a service account

如果您想为内部用户构建此文件,则可以使用Jenkins之类的CI / CD工具。

对于外部用户,您可以使用诸如云运行之类的方法来实现。尽管我无法想到您要执行此操作的场景

答案 2 :(得分:0)

Deployment Manager允许您提供所有这些资源,并且可以通过API触发。

在GitHub上甚至有一个official example会执行以下操作:

  1. 创建一个新项目。
  2. 在新项目上设置计费帐户。
  3. 设置新项目的IAM权限。
  4. 在新项目中打开一组api。
  5. 在新项目中创建服务帐户。

请记住要替换config.yaml文件中的值。要获取计费帐户ID,可以使用billingAccounts.list方法,而要获取组织ID,则可以使用gcloud organizations list命令。

请记住,您将需要设置示例存储库的README文件中指定的要求,但这仅需要执行一次。可以在Cloud Console的Manage Resources部分中设置DM服务帐户的权限。

更改了所需的配置后,可以使用gcloud deployment-manager deployments create命令测试部署,并通过添加--log-http标志来将请求正文发送到Deployments: insert API。请注意,您最感兴趣的是您的第一个请求,其他人将检查操作的进度。

最后,使用请求正文内容,您可以更改所需的值,并使用nodejs对该API进行调用。 post提供了有关如何使用google-api-nodejs-client创建部署的示例。

使用Deployment Manager的优点是可以在单个请求中创建所有资源。