如何使用基于令牌的访问获取虚拟机的 GCP 配额限制

2024-05-04

我想使用基于令牌的访问来获取 GCP VM 限制。 下面是我的Python代码。

from googleapiclient import discovery
from oauth2client import AccessTokenCredentials
import httplib2

token = 'xyz'
credentials = AccessTokenCredentails(access_token=token, user_agent='MyAgent')
http = credentials.authorize(httplib2.Http())
service = discovery.build('serviceusage', 'v1', http=http)
#...
# code to get the GCP Quota for VM.

在运行 terraform 来创建资源之前,我必须在创建虚拟机之前获取配额,以确保可用的实例数量。


要获取有关实际资源使用情况的值,您可以使用云监控API https://cloud.google.com/monitoring/docs/apis消费者配额 https://cloud.google.com/monitoring/api/resources#tag_consumer_quota资源。它不会是百分比,而是实际值。

例如:

您想知道有多少个虚拟机us-central1

有一个metric https://cloud.google.com/monitoring/api/resources#tag_consumer_quota为了那个原因:serviceruntime.googleapis.com/quota/allocation/usage。它提供了实际使用情况。

然后你可以创建 MQL https://cloud.google.com/monitoring/mql/query-editor查询以过滤您需要的所有内容:

fetch consumer_quota
| metric 'serviceruntime.googleapis.com/quota/allocation/usage'
| filter
    (resource.service == 'compute.googleapis.com')
    && (metric.quota_metric == 'compute.googleapis.com/instances')
| group_by 1d, [value_usage_aggregate: aggregate(value.usage)]
| every 1d

现在——当你使用curl通过API运行它 https://cloud.google.com/monitoring/mql/qn-from-api#ql-timeseries-query:

curl -d @query.json -H "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/json" -X POST \
https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/timeSeries:query

您将得到回复:

{
  "timeSeriesDescriptor": {
    "labelDescriptors": [
      {
        "key": "resource.project_id"
      },
      {
        "key": "resource.service"
      },
      {
        "key": "resource.location"
      },
      {
        "key": "metric.quota_metric"
      }
    ],
    "pointDescriptors": [
      {
        "key": "value_usage_aggregate",
        "valueType": "INT64",
        "metricKind": "GAUGE",
        "unit": "1"
      }
    ]
  },
  "timeSeriesData": [
    {
      "labelValues": [
        {
          "stringValue": "my-test-project"
        },
        {
          "stringValue": "compute.googleapis.com"
        },
        {
          "stringValue": "us-central1"
        },
        {
          "stringValue": "compute.googleapis.com/instances"
        }
      ],
      "pointData": [
        {
          "values": [
            {
              "int64Value": "11"
            }
          ],
          "timeInterval": {
            "startTime": "2022-03-30T08:38:44.064174Z",
            "endTime": "2022-03-30T08:38:44.064174Z"
          }
        }
      ]
    }
  ]
}

你感兴趣的线 "int64Value": "11"其中包含数字 11,在我的例子中,它是当前虚拟机的数量(它是运行和停止的总和)。

现在您需要做的“所有”就是将其合并到您的 python 脚本中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用基于令牌的访问获取虚拟机的 GCP 配额限制 的相关文章

  • python:查找围绕某个 GPS 位置的圆的 GPS 坐标的优雅方法

    我有一组以十进制表示的 GPS 坐标 并且我正在寻找一种方法来查找每个位置周围半径可变的圆中的坐标 这是一个例子 http green and energy com downloads test circle html我需要什么 这是一个圆
  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • pyspark 将 twitter json 流式传输到 DF

    我正在从事集成工作spark streaming with twitter using pythonAPI 我看到的大多数示例或代码片段和博客是他们从Twitter JSON文件进行最终处理 但根据我的用例 我需要所有字段twitter J
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • 如何断言 Unittest 上的可迭代对象不为空?

    向服务提交查询后 我会收到一本字典或一个列表 我想确保它不为空 我使用Python 2 7 我很惊讶没有任何assertEmpty方法为unittest TestCase类实例 现有的替代方案看起来并不正确 self assertTrue
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐