如何将谷歌云虚拟机绑定子域名并通过Node.js客户端创建A记录
前置准备工作
- 目前Google Domains没有公开的DNS记录操作API,所以需要先将
abc.com的DNS托管转移到Google Cloud DNS:在Google Cloud控制台创建Cloud DNS公共托管区,域名为abc.com,创建完成后把控制台给出的4个NS记录值,到Google Domains的域名管理后台替换掉默认的DNS服务器 - 启用Google Cloud DNS API:在Google Cloud控制台的API和服务页面搜索「Cloud DNS API」,点击启用
- 生成身份验证密钥:在IAM与管理的服务账号页面,创建一个拥有
DNS Administrator权限的服务账号,导出JSON格式的密钥文件,保存到你的Node.js项目根目录,命名为service-account-key.json - 安装Node.js客户端库:在项目目录下执行命令
npm install @google-cloud/dns
Node.js 创建A记录代码
const { DNS } = require('@google-cloud/dns'); // 初始化DNS客户端,替换为你自己的谷歌云项目ID const dns = new DNS({ projectId: '你的谷歌云项目ID', keyFilename: './service-account-key.json' }); // 配置参数 const ZONE_NAME = '你的Cloud DNS托管区名称'; // 创建托管区时自定义的名称,比如abc-com-zone const DNS_NAME = 'first.abc.com.'; // 注意末尾必须加英文句号,这是DNS记录标准格式要求 const TARGET_IP = '244.168.0.221'; const TTL = 300; // 缓存时间,单位为秒,此处设置为5分钟 async function createARecord() { try { const zone = dns.zone(ZONE_NAME); // 构建A记录配置 const record = zone.record('a', { name: DNS_NAME, ttl: TTL, data: TARGET_IP }); // 提交记录新增请求 await zone.addRecords(record); console.log(`A记录 ${DNS_NAME} -> ${TARGET_IP} 创建成功`); } catch (error) { console.error('创建A记录失败:', error.message); } } createARecord();
注意事项
- 如果之前已经存在
first.abc.com的A记录,需要先删除旧记录再创建新记录,避免冲突报错 - 记录创建完成后全球DNS服务器同步需要数分钟到数十分钟不等,可通过
nslookup first.abc.com命令验证是否生效
内容的提问来源于stack exchange,提问作者SHARON XAVIER
相关产品推荐
相关产品推荐

