繁体   English   中英

你如何使用 node js 创建一个谷歌云项目和服务帐户?

[英]how do you create a google cloud project and service account using node js?

您如何以编程方式提供谷歌云项目、启用 API 并使用 node js 创建服务帐户?

谢谢

克里斯

答案就在 REST API 中。

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

npm install googleapis --save

要创建项目,您可以使用资源管理器 API 方法“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' 方法来创建服务帐号。 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 或服务,请使用服务使用 API 'services.enable' 方法 在这种情况下,我将启用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”方法在一次调用中启用多个 API。 您可以在此处找到可以启用的 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 调用所需的任何其他参数。

据我所知,尚不支持使用 客户端库管理项目。

您需要依靠gcloud cli管理项目启用 api 来实现这一点。

如果您希望自动执行此操作,您仍然可以在使用gcloud cli时使用服务帐户执行此操作

如果你想为内部用户构建这个,你可以使用像 Jenkins 这样的 CI/CD 工具。

对于外部用户,您可以使用诸如 cloud run 之类的东西来实现这一点。 虽然我想不出你想要这样做的场景

部署管理器允许您供应所有这些资源,并且可以通过 API 触发。

GitHub 上甚至有一个官方示例,它执行以下操作:

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

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

请记住,您需要设置示例存储库的 README 文件中指定的要求,但这只需要做一次。 DM 服务帐号的权限可以在 Cloud Console 的管理资源部分中设置。

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

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

使用部署管理器的优点是可以在单个请求中创建所有资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM