注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
解决使用 OCI CLI 网络命令时出现“无法显示信息:无法获取 API 会话”错误
简介
在 Oracle Cloud Infrastructure (OCI) 计算实例上使用 Oracle Cloud Infrastructure 命令行界面 (Command Line Interface,OCI CLI) 网络命令时,遇到 Cannot show information:Failed to get API session 错误可能会令人沮丧,尤其是在管理关键网络配置时。
在本教程中,我们将引导您了解此问题的常见原因,并提供逐步说明来解决此问题。
此错误何时发生?
sudo oci-network-config show
和 sudo oci-network-config configure
命令是 OCI 网络实用程序的一部分。这些命令用于管理和排除与 OCI 交互的环境中的网络配置故障。
-
sudo oci-network-config show
-
用途:
sudo oci-network-config show
命令用于显示 OCI 计算实例上的当前网络配置。 -
主要用例:
- 排除网络问题。
- 验证当前的虚拟网络接口卡 (Virtual Network Interface Card,VNIC) 配置,例如专用 IP、公共 IP、子网信息和 VLAN。
- 确保实例在多云或混合设置中具有正确的 IP 和路由配置。
-
-
sudo oci-network-config configure
-
用途:
sudo oci-network-config configure
命令用于重新配置实例的网络设置,通常用于进行更改或恢复网络连接。 -
主要用例:
- 连接或分离辅助 VNIC。
- 在现有 VNIC 上配置新 IP 地址。
- 更新 OCI 资源(例如子网或 VLAN)后,动态修改网络设置。
- 确保实例符合更新的 OCI 网络安全规则或路由更改。
-
例如:运行 sudo oci-network-config show
命令,我们会收到以下错误:无法显示信息:无法获取 API 会话。
- 运行
sudo oci-network-config show
命令以从实例检索所有网络配置。 - 请注意以下错误:无法显示信息:无法获取 API 会话。有关实例 VNIC 的信息不会在操作系统级别提供,也不会在 OCI 级别提供。
这是不可能的,因为我们运行 oci-network-config show
命令时会收到相同的错误,该命令是无法显示信息:无法获取 API 会话。
为什么会出现此错误?
-
VCN 不是实例拥有的对象,这意味着在未进行适当验证的情况下,实例无法直接访问 VCN 信息。
-
要使实例能够从 API 提取 VCN 详细信息,必须创建包含该实例的动态组并分配授予必要权限的策略。
要使 OCI 计算实例能够通过 API 提取 VCN 详细信息,请执行以下步骤:
-
创建动态组:此动态组包括需要访问 API 的实例。您可以使用基于实例 OCID 或区间等属性的规则定义组。
-
为权限分配策略:您需要创建 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 策略,以授予动态组读取或管理与 VCN 相关的资源的权限。例如:
allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
-
使用实例、主体进行身份验证:动态组中的实例使用其身份直接进行身份验证,允许安全访问 API,而不必在应用程序中嵌入身份证明。这种方法简化了安全管理,同时保持了强大的访问控制。
目标
- 解决在 OCI 计算实例上使用 OCI CLI 网络命令时发生的无法显示信息:无法获取 API 会话错误。
先决条件
- 在 OCI 中运行的 Oracle Linux 实例。
解决错误
-
转到 OCI 控制台。
- 单击汉堡包菜单(≡),导航到计算、实例,然后选择要为其运行以下命令
sudo oci-network-config show
和sudo oci-network-config configure
的计算实例。 - 单击显示以显示实例 OCID 值。
- 单击复制以复制实例 OCID 值。
- 单击汉堡包菜单(≡),导航到身份、域、默认域,然后单击动态组。
- 单击创建动态组。
- 为动态组输入名称。在本示例中,我们将使用
sriov-test-04
。 - 单击规则构建器。
- 在匹配实例中选择实例 OCID 。
- 在值中输入实例 OCID 的值。
- 单击添加规则。
- 请注意,新规则将添加到组中。
- 单击创建。
- 单击汉堡包菜单(≡),导航到计算、实例,然后选择要为其运行以下命令
-
现在,我们已拥有实例所属的组,因此需要在包含该实例的区间内创建一个策略。此策略将允许组中的实例对 VCN 对象(例如子网)执行操作。
- 单击汉堡菜单(≡),导航到身份并单击区间。
- 单击根区间。在此示例中为
oraseemeaocids4
。
- 请注意,我们现在在子区间中。
- 单击下一个子区间。在此示例中,它为
NETWORK
。
- 请注意,现在位于下一个子区间中。
- 单击下一个子区间。在此示例中为
Iwan
。
- 确保选择了正确的区间。
- 单击策略。
- 单击创建策略。
-
在创建策略中,输入以下信息。
- 输入策略的名称。在本示例中,我们将使用
allow-sriov-test-04-to-vcn
。 - 输入策略的说明。在本示例中,我们将使用
allow-sriov-test-04-to-vcn
。 - 选择显示手动编辑器。
- 输入以下策略:
allow dynamic-group sriov-test-04 to manage all-resources in compartment Iwan
。 - 单击创建。
- 输入策略的名称。在本示例中,我们将使用
-
请注意,新创建的策略中的新策略语句。
-
现在,我们允许实例通过 OCI CLI 对 VCN 执行 API 调用。
- 运行
sudo oci-network-config show
命令以从 OCI 级别的实例检索所有网络配置。 - 请注意,错误现已消失,并提供 OCI 级网络输出。
- 请注意,操作系统级网络输出也是在 OCI 级网络输出之后提供的。
- 运行
确认
- 作者 — Iwan Hoogendoorn(OCI 网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Resolve the 'Cannot show information: Failed to get API session' Error when using the OCI CLI Network Commands
G25543-01
January 2025
Copyright ©2025, Oracle and/or its affiliates.