咨询获取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
相关产品推荐
相关产品推荐

