如何使用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
相关产品推荐
相关产品推荐

