You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询获取GCP承诺使用折扣(CUD)及应用资源的API与Java客户端方法

关于获取GCP承诺使用折扣(CUD)详情及对应资源的API与Java Client方法

可用GCP API

  • 获取CUD详情:使用Cloud Billing API的commitments.list接口,传入目标账单账户ID,可返回所有承诺折扣的完整信息,包括SKU标识、有效期、已使用/剩余额度、折扣率等核心字段。
  • 查看已应用CUD的资源:
    • 可通过Cloud Billing API的skus.list接口,结合CUD对应的SKU ID筛选关联资源;
    • 也可使用对应服务的资源列表API(如Compute Engine的instances.list),通过filter参数指定commitmentId条件,直接筛选出已应用该折扣的资源;
    • Cloud Billing Reports API支持按折扣维度进行分析,可获取折扣与资源使用的关联明细。

GCP Java Client实现方法

依赖引入(以Maven为例)

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-billing</artifactId>
    <version>替换为最新版本</version>
</dependency>
<!-- 如果需要操作Compute Engine资源,需额外引入 -->
<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-compute</artifactId>
    <version>替换为最新版本</version>
</dependency>

获取CUD详情

import com.google.cloud.billing.v1.CloudBillingClient;
import com.google.cloud.billing.v1.Commitment;
import com.google.cloud.billing.v1.ListCommitmentsPagedResponse;
import java.io.IOException;

public class CudDetailsFetcher {
    public static void main(String[] args) {
        String billingAccountId = "your-billing-account-id";
        String parent = String.format("billingAccounts/%s", billingAccountId);
        
        try (CloudBillingClient billingClient = CloudBillingClient.create()) {
            ListCommitmentsPagedResponse response = billingClient.commitments().list(parent);
            for (Commitment commitment : response.iterateAll()) {
                System.out.printf("承诺ID: %s%n", commitment.getName());
                System.out.printf("关联SKU: %s%n", commitment.getSku().getSkuId());
                System.out.printf("剩余额度: %f%n", commitment.getRemainingCommitmentAmount().getUnits());
                System.out.println("---");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

查询已应用CUD的Compute Engine实例

import com.google.cloud.compute.v1.Instance;
import com.google.cloud.compute.v1.InstancesClient;
import com.google.cloud.compute.v1.ListInstancesRequest;
import java.io.IOException;

public class CudAttachedInstancesFetcher {
    public static void main(String[] args) {
        String projectId = "your-project-id";
        String zone = "your-zone";
        String commitmentId = "your-commitment-id";
        // 过滤条件:筛选使用指定承诺折扣的实例
        String filter = String.format("commitment.id = '%s'", commitmentId);
        
        try (InstancesClient instancesClient = InstancesClient.create()) {
            ListInstancesRequest request = ListInstancesRequest.newBuilder()
                    .setProject(projectId)
                    .setZone(zone)
                    .setFilter(filter)
                    .build();
            
            for (Instance instance : instancesClient.list(request).iterateAll()) {
                System.out.printf("实例名称: %s, ID: %s%n", instance.getName(), instance.getId());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

内容的提问来源于stack exchange,提问作者DAK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:26:21