是否有使用NodeJS更新防火墙规则的API,我们将不胜感激。
要求:我有一个大约1700个CDN可信IP列表,可以访问端口80上GCP中的特定VM。
据我了解,每个防火墙规则最多可以有256个源IP。我可以创建和更新其中的8个,并使用相同的名称
进行标记问题:我们可以使用NodeJS API做到吗?
This API不返回防火墙规则。
等效于cli命令如下
gcloud compute firewall-rules describe alltraffic
gcloud compute firewall-rules update alltraffic --source-ranges="14.201.176.140/32","14.201.176.144/32"
gcloud compute firewall-rules create ramtest1 --allow="tcp:80" --description="ramtest1" --source-ranges="205.251.192.0/19","52.95.174.0/24" --target-tags="tcp-111"
https://cloud.google.com/sdk/gcloud/reference/compute/firewall-rules/
在nodejs api中看不到更新命令 https://cloud.google.com/nodejs/docs/reference/compute/0.10.x/Firewall#create https://cloud.google.com/nodejs/docs/reference/compute/0.10.x/Compute#createFirewall
exports.run_process = async (req, res) => {
const Compute = require('@google-cloud/compute');
const compute = new Compute();
const network = compute.network('default');
const firewalls = (await network.getFirewalls())[0];
for(const firewall of firewalls) {
// console.log('firewall == '+JSON.stringify(firewall));
console.log('firewall = '+firewall.metadata.name);
if(firewall.metadata.name === 'alltraffic') {
console.log(' xxxxxxxxxxxxxxxxxxxx changing all traffic xxxxxxxxxxxxxx ');
}
}
return res.status(200).send('ok');
};
上面的代码列出了防火墙规则,NFI为什么将其称为防火墙,而在控制台中称为防火墙规则,却是如此令人困惑
答案 0 :(得分:0)
您应该使用setMetadata
函数来更新防火墙规则。例如,请使用以下nodejs片段,该片段读取并更新防火墙规则的描述:
async function doit() {
const Compute = require('@google-cloud/compute');
const compute = new Compute();
const f = compute.firewall('default-allow-10000');
f.get().then(data => {
const firewall = data[0];
console.log('initial description: ' + firewall.metadata.description);
const metadata = {
description: 'new description for this rule'
};
return firewall.setMetadata(metadata);
}).then(data => {
const firewall = data[0];
console.log('description set');
return compute.firewall('default-allow-10000').get();
}).then(data => {
const firewall = data[0];
console.log('current description: ' + firewall.metadata.description);
});
}
doit();
在我的示例中,输出为:
initial description: old description description set current description: new description for this rule
要查看元数据对象上存在的内容,应查看REST API中的the definition of the Firewall resource。