有没有一种方法可以通过Google Cloud(Python)Client Libraries导出gcloud dns记录集?

inkz8wg9  于 2023-05-02  发布在  Python
关注(0)|答案(1)|浏览(86)

我在服务器上有一个(bash)脚本,它作为一个cron作业运行,并将我们所有的托管区域从谷歌云中的DNS项目导出到GCS。

for dnszone in $(gcloud dns managed-zones list --project={} --format="value(NAME)")
  do
    domain=$(gcloud dns managed-zones describe $dnszone --project={} --format="value(dnsName)")
    filename="${domain}"
    gcloud dns record-sets export $filename --zone=$dnszone --project={}
  done

...

gsutil -m rsync -r -d ./ gs://bucket/$today/ 2> /dev/null

我想将所有cron作业从服务器移动到云调度器作业(具有绑定到云调度的发布/订阅触发器的云函数)。
我可以使用客户端库手动构造BIND格式的导出文件,但理想情况下,我会在客户端库中设置一个类似于Google Cloud SDK的导出功能。
我最近两天一直在阅读google的文档,没有解决客户端库命令自动格式化输出的问题。ChatGPT建议我使用resourcerecordset对象的不存在的export_to_file()方法,这没有帮助。
我错过什么了吗?这可能吗?

jdgnovmf

jdgnovmf1#

Python SDK支持list_zones
列出与此客户端关联的项目的分区。
等效的API调用是ManagedZones: list
枚举已创建但尚未删除的ManagedZones。
如果成功,此方法将返回具有以下结构的响应正文:

{
  "kind": "dns#managedZonesListResponse",
  "header": {
    "operationId": string
  },
  "managedZones": [
    managedZones Resource
  ],
  "nextPageToken": string
}

关于managedZones Resource
区域是一个管理责任下的DNS命名空间的子树。ManagedZone是表示由云DNS服务托管的DNS区域的资源。

{
  "kind": "dns#managedZone",
  "name": string,
  "dnsName": string,
  "description": string,
  "id": unsigned long,
  "nameServers": [
    string
  ],
  "creationTime": string,
  "dnssecConfig": {
    "kind": "dns#managedZoneDnsSecConfig",
    "state": string,
    "defaultKeySpecs": [
      {
        "kind": "dns#dnsKeySpec",
        "keyType": string,
        "algorithm": string,
        "keyLength": unsigned integer
      }
    ],
    "nonExistence": string
  },
  "nameServerSet": string,
  "visibility": string,
  "privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": string
      }
    ],
    "gkeClusters": [
      {
        "kind": "dns#managedZonePrivateVisibilityConfigGKECluster",
        "gkeClusterName": string
      }
    ]
  },
  "forwardingConfig": {
    "kind": "dns#managedZoneForwardingConfig",
    "targetNameServers": [
      {
        "kind": "dns#managedZoneForwardingConfigNameServerTarget",
        "ipv4Address": string,
        "forwardingPath": string
      }
    ]
  },
  "labels": {
    (key): string
  },
  "peeringConfig": {
    "kind": "dns#managedZonePeeringConfig",
    "targetNetwork": {
      "kind": "dns#managedZonePeeringConfigTargetNetwork",
      "networkUrl": string,
      "deactivateTime": string
    }
  },
  "reverseLookupConfig": {
    "kind": "dns#managedZoneReverseLookupConfig"
  },
  "serviceDirectoryConfig": {
    "kind": "dns#managedZoneServiceDirectoryConfig",
    "namespace": {
      "kind": "dns#managedZoneServiceDirectoryConfigNamespace",
      "namespaceUrl": string,
      "deletionTime": string
    }
  },
  "cloudLoggingConfig": {
    "kind": "dns#managedZoneCloudLoggingConfig",
    "enableLogging": boolean
  }
}

因此,应该可以检索此值并将其保存为JSON文件。

相关问题