您如何以编程方式配置Google云端项目,启用API并使用节点js创建服务帐户?
谢谢
克里斯
答案 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管理项目。
您需要依靠Num
来manage projects,enabling apis才能实现。
如果您希望自动执行此操作,则在使用gcloud cli
时仍可以执行using a service account。
如果您想为内部用户构建此文件,则可以使用Jenkins之类的CI / CD工具。
对于外部用户,您可以使用诸如云运行之类的方法来实现。尽管我无法想到您要执行此操作的场景
答案 2 :(得分:0)
Deployment Manager允许您提供所有这些资源,并且可以通过API触发。
在GitHub上甚至有一个official example会执行以下操作:
请记住要替换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的优点是可以在单个请求中创建所有资源。