如何使用阿里云 Billing API 实现资源包余量报警

本文涉及的产品
无影云电脑企业版,4核8GB 120小时 1个月
资源编排,不限时长
无影云电脑个人版,1个月黄金款+200核时
简介: 使用Billing API获取资源包余量信息,自主实现资源包余量报警

场景

在使用阿里云的一些API调用类的服务时,如果用按量付费往往价格会较高,为了节省成本用户往往会选择购买对应的 API 资源包,比如:NLP的模型调用资源包、函数调用资源包、共享流量资源包等等。


image.png

资源包的使用情况在 个人中心>资源实例管理>资源包 中我们可以查看,默认的阿里云会对用户购买的资源包余量进行阈值报警,报警信息将通过邮件和手机短信的方式发送到用户的客户端。这种方式已经很齐全了,但是在当今手机各种短信非常多的情况下,用户可能会漏掉一些短信的查看。因此我的想法是能不能把这种报警单独发到某个企业微信群,这样的话在工作时查看企业微信的实时性比查看手机短信的要高,就可以及时进行资源包补充。

方案

由于阿里云的API接口中并没有直接查余额的接口,只有资源包用量查询,因此我的方法就是通过查询资源包前一天的使用情况来算出当前余量,再进行阈值判断来发报警。

未命名文件.jpg

此处用到的接口为:QueryDPUtilizationDetail,大家可以通过阿里云官方的调试接口进行调试

此处以NLP调用为例,主要代码如下:

<?useAlibabaCloud\SDK\BssOpenApi\V20171214\BssOpenApi;
use\Exception;
useAlibabaCloud\Tea\Exception\TeaError;
useAlibabaCloud\Tea\Utils\Utils;
useDarabonba\OpenApi\Models\Config;
useAlibabaCloud\SDK\BssOpenApi\V20171214\Models\QueryDPUtilizationDetailRequest;
useAlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
classCheckResourceBag{
/*** 获取NLP调用的剩余数量*/privatefunctiongetNlpRestCount($warningNlpCount){
$accessKeyId="your key";
$accessKeySecret="your secret";
$client=$this->createClient($accessKeyId,$accessKeySecret);
$startTime=date("Y-m-d 00:00:00",strtotime("-1 day"));
$queryDPUtilizationDetailRequest=newQueryDPUtilizationDetailRequest([
"startTime"=>$startTime,
"endTime"=>date('Y-m-d H:i:s'),
"includeShare"=>"true",
"prodCode"=>"nlp"        ]);
$runtime=newRuntimeOptions([]);
try {
// 复制代码运行请自行打印 API 的返回值$resultList=$client->queryDPUtilizationDetailWithOptions($queryDPUtilizationDetailRequest, $runtime);
$maxCount=0;//原始数量$totalDeduct=0;//总扣除数量foreach ($resultList->body->data->detailList->detailListas$curItem) {
if ($curItem->deductedCommodityCode!="nlp_automl_post") {
continue;
                }
if ($curItem->deductFactorTotal>$maxCount) {
$maxCount=$curItem->deductFactorTotal;
                }
$totalDeduct+=$curItem->deductQuantity;
            }
$restCount=$maxCount-$totalDeduct;
if ($restCount<$warningNlpCount) {
$messageBody="NLP自学习平台模型调用资源包剩余 $restCount条, 数量已不足 $warningNlpCount条,请尽快购买资源包。";
#发送企业微信代码,此处省略,可参考企业微信的API#用户也可以发送其他类型的消息,比如:钉钉。sendQiyeWeixinMsg($messageBody);
            }
        }
catch (\Exception$error) {
echo$error->getMessage();
        }
    }
}

需要注意的是,上面的API获取资源包消费数据时,默认取20条,最大值为300,你可以根据自己的情况进行代码微调。


最后再为这段代码设置一个定时任务即可,可以每天一次,也可以每小时一次,可根据自身业务进行设置。

相关文章
|
2月前
|
API
阿里云短信服务文档与实际API不符
阿里云短信服务文档与实际API不符
|
6天前
|
存储 人工智能 API
(Elasticsearch)使用阿里云 infererence API 及 semantic text 进行向量搜索
本文展示了如何使用阿里云 infererence API 及 semantic text 进行向量搜索。
|
13天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
2月前
|
存储 人工智能 自然语言处理
Elasticsearch Inference API增加对阿里云AI的支持
本文将介绍如何在 Elasticsearch 中设置和使用阿里云的文本生成、重排序、稀疏向量和稠密向量服务,提升搜索相关性。
90 14
Elasticsearch Inference API增加对阿里云AI的支持
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
弹性计算 负载均衡 监控
阿里云slb的slb-api介绍
【10月更文挑战第17天】
100 1
|
2月前
|
API
阿里云短信平台API错误码提示错误天级流控显示小时级错误码
阿里云短信平台API错误码提示错误天级流控显示小时级错误码
|
9天前
|
人工智能 自然语言处理 API
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
谷歌推出的Multimodal Live API是一个支持多模态交互、低延迟实时互动的AI接口,能够处理文本、音频和视频输入,提供自然流畅的对话体验,适用于多种应用场景。
54 3
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
|
4天前
|
前端开发 API 数据库
Next 编写接口api
Next 编写接口api
|
10天前
|
XML JSON 缓存
阿里巴巴商品详情数据接口(alibaba.item_get) 丨阿里巴巴 API 实时接口指南
阿里巴巴商品详情数据接口(alibaba.item_get)允许商家通过API获取商品的详细信息,包括标题、描述、价格、销量、评价等。主要参数为商品ID(num_iid),支持多种返回数据格式,如json、xml等,便于开发者根据需求选择。使用前需注册并获得App Key与App Secret,注意遵守使用规范。
下一篇
DataWorks