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

如何获取Oracle Cloud Infrastructure所有compartments的实例总数?

如何统计Oracle Cloud Infrastructure(OCI)所有Compartments的实例总数

可以通过OCI CLI结合Shell脚本实现批量遍历所有Compartments(包括嵌套子Compartment)并汇总实例总数,具体步骤如下:

1. 准备工作

确保你已经配置好OCI CLI的身份验证(本地配置文件或环境变量),并且安装了jq工具(用于解析JSON输出)。

2. 获取所有Compartment ID

首先获取根Compartment的ID,再递归拉取所有层级的Compartment ID:

# 获取根Compartment ID
ROOT_COMPARTMENT_ID=$(oci iam compartment list --query 'data[?name == `root`].id' | jq -r '.[]')

# 递归获取所有Compartment ID(包括子Compartment)
COMPARTMENT_IDS=$(oci iam compartment list --compartment-id $ROOT_COMPARTMENT_ID --all --query 'data[*].id' | jq -r '.[]')

3. 遍历统计并汇总实例数

编写Shell脚本遍历每个Compartment,统计实例数并累加总数:

TOTAL_INSTANCES=0

for ID in $COMPARTMENT_IDS; do
    # 用你习惯的list-vnics命令统计实例数(每个实例至少对应一个VNIC)
    INSTANCE_COUNT=$(oci compute instance list-vnics --compartment-id $ID --query 'length(data)' | jq -r '.')
    # 也可以直接用instance list命令更精准:
    # INSTANCE_COUNT=$(oci compute instance list --compartment-id $ID --query 'length(data)' | jq -r '.')
    
    echo "Compartment $ID: $INSTANCE_COUNT 个实例"
    TOTAL_INSTANCES=$((TOTAL_INSTANCES + INSTANCE_COUNT))
done

echo "所有Compartment的实例总数: $TOTAL_INSTANCES"

注意事项

  • 权限要求:执行脚本的OCI用户需要具备读取Compartment和读取实例的权限,否则会返回权限错误或空结果。
  • 速率限制:如果你的租户有大量Compartment,建议在循环中加入sleep 1避免触发OCI API的速率限制。
  • 无重复统计:每个实例仅归属于一个Compartment,因此该脚本不会出现重复计数的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:17:14