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

如何使用Application Credentials创建OpenStack Python API连接?

使用Application Credentials连接OpenStack的实现方法

问题描述

我当前使用以下代码(变量已简化)连接OpenStack项目:

conn = openstack.connect(
                load_yaml_config=False,
                load_envvars=False,
                auth_url=AL,
                project_name=PN,
                username=UN,
                password=PW,
                region_name=RN,
                user_domain_name=UDN,
                project_domain_name=PDN,
                app_name=42,
                app_version=42
            )

现在希望无需用户名和密码,仅通过Application Credentials实现连接,但找不到具体的代码实现方式,该如何操作?

实现方案

核心思路是先基于Application Credentials创建已认证的会话,再将该会话传入OpenStack连接构造方法,无需再提供用户名和密码。

1. 创建已认证会话

导入相关模块,用Application Credentials的application_credential_id和application_credential_secret构建认证对象,进而创建会话:

from openstack import session
from openstack.auth.identity.v3 import ApplicationCredential

# 构建Application Credentials认证实例
auth = ApplicationCredential(
    auth_url=AL,  # 你的OpenStack认证URL
    application_credential_id="你的应用凭证ID",
    application_credential_secret="你的应用凭证密钥",
    region_name=RN  # 目标区域名称
)

# 生成已认证的会话
auth_session = session.Session(auth=auth)

2. 通过会话创建OpenStack连接

将已认证会话传入连接构造方法,两种方式均可:

from openstack import connection

# 方式一:使用openstack.connect()快捷方法
conn = openstack.connect(
    session=auth_session,
    app_name=42,
    app_version=42
)

# 方式二:直接实例化Connection类
conn = connection.Connection(
    session=auth_session,
    region_name=RN,
    app_name=42,
    app_version=42
)

关键说明

  • 无需再传入username、password、user_domain_name、project_domain_name参数,Application Credentials已包含认证所需的权限与项目关联信息
  • 确保OpenStack环境已启用Application Credentials功能,且你手中的凭证ID和密钥有效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:15:40