如何使用Node.js创建Google Cloud项目和服务账号?

3

如何使用Node.js编程方式自动创建谷歌云项目、启用API并创建服务账户?

谢谢

Chris

3个回答

7

答案在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或服务,请使用Service Usage 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 调用需要的参数。


3

部署管理器允许您提供所有这些资源,并可以通过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。此post提供了如何使用 google-api-nodejs-client 创建部署的示例。
使用 Deployment Manager 的优点是可以在单个请求中创建所有资源。

1
使用客户端库进行项目管理据我所知尚未得到支持。
您需要依赖gcloud cli管理项目启用API以实现此目的。
如果您希望自动化此过程,仍然可以使用gcloud cli并使用服务账号完成此操作
如果您要为内部用户构建此功能,则可以使用像Jenkins这样的CI/CD工具。
对于外部用户,您可以使用类似Cloud Run的东西来实现此操作。虽然我想不出您想要这样做的情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接