如何通过OCI Python SDK解绑并重新分配VNIC的公网IP地址
使用OCI Python SDK解绑VNIC公网IPv4并重新分配临时公网IP
前提准备
- 安装OCI Python SDK:
pip install oci - 配置OCI认证:确保本地存在有效的OCI配置文件(默认路径
~/.oci/config),或通过环境变量设置认证信息。
完整代码实现
import oci from oci.exceptions import OCIError def refresh_vnic_public_ip(vnic_id, config): # 初始化虚拟网络客户端 core_client = oci.core.VirtualNetworkClient(config) try: # 1. 获取VNIC当前关联的公网IP信息 vnic = core_client.get_vnic(vnic_id).data public_ip_id = vnic.public_ip_id if public_ip_id: # 解绑现有公网IP detach_details = oci.core.models.DetachPublicIpDetails(vnic_id=vnic_id) core_client.detach_public_ip(public_ip_id=public_ip_id, detach_public_ip_details=detach_details) print(f"已成功解绑公网IP: {public_ip_id}") else: print("该VNIC未关联任何公网IP,跳过解绑步骤") # 2. 分配新的临时(EPHEMERAL)公网IP assign_details = oci.core.models.AssignPublicIpDetails( vnic_id=vnic_id, public_ip_type="EPHEMERAL" ) new_public_ip = core_client.assign_public_ip(assign_public_ip_details=assign_details).data print(f"已成功分配新临时公网IP: {new_public_ip.ip_address}") return new_public_ip except OCIError as e: print(f"操作失败: {e.message}") raise # 主执行逻辑 if __name__ == "__main__": # 加载OCI配置(默认读取~/.oci/config) config = oci.config.from_file() # 替换为你的VNIC OCID target_vnic_id = "ocid1.vnic.oc1.xxxxx..." refresh_vnic_public_ip(target_vnic_id, config)
关键说明
- 解绑公网IP:只有当VNIC已关联公网IP时才需要执行此步骤,代码中会先判断
public_ip_id是否存在。 - 临时公网IP类型:指定
public_ip_type="EPHEMERAL",这种IP会在VNIC销毁时自动释放。 - 异常处理:捕获
OCIError可以处理权限不足、资源不存在等常见错误。
内容的提问来源于stack exchange,提问作者itsmii
相关产品推荐
相关产品推荐

