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

使用IBM Cloud Secrets Manager Python库遇问题:库名不匹配及self参数错误

解决IBM Cloud Secrets Manager Python SDK调用错误

问题原因

你遇到的TypeError: SecretsManagerV2.get_secret() missing 1 required positional argument: 'self'是因为直接通过类调用实例方法,而不是用你创建的服务实例调用。另外,示例里的secretsManager是旧版SDK的类名,当前正确的类是SecretsManagerV2,这部分你没有问题。

正确代码示例

from ibm_cloud_sdk_core.authenticators.iam_authenticator import IAMAuthenticator
from ibm_secrets_manager_sdk.secrets_manager_v2 import SecretsManagerV2
from icecream import ic

# 替换为你的实际配置信息
MY_API_KEY = '你的IAM API密钥'
SECRET_ID = '目标密钥的ID'
SERVICE_URL = '你的Secrets Manager实例URL'

# 初始化认证器与服务实例
authenticator = IAMAuthenticator(apikey=MY_API_KEY)
secrets_manager_service = SecretsManagerV2(authenticator=authenticator)
secrets_manager_service.set_service_url(SERVICE_URL)

# 调用实例方法获取密钥
try:
    response = secrets_manager_service.get_secret(id=SECRET_ID)
    # 根据密钥类型提取内容,比如通用密钥可通过response.result['payload']获取明文
    ic(response.result)
except Exception as e:
    ic(f"获取密钥失败: {str(e)}")

关键修正说明

  • 方法调用方式:必须使用创建好的实例secrets_manager_service调用get_secret,而不是SecretsManagerV2类本身。实例方法需要依赖实例的上下文(即self参数),直接用类调用会缺少这个必要参数。
  • 明确导入类:避免用from ... import *的模糊导入,直接导入SecretsManagerV2可以减少命名冲突风险。
  • 可选:指定密钥组:如果你的密钥属于特定密钥组,可在get_secret中添加secret_group_id参数,例如:
    response = secrets_manager_service.get_secret(id=SECRET_ID, secret_group_id='你的密钥组ID')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:13:17