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

AWS Secrets Manager Python代码报UnboundLocalError错误求助

问题排查与解决方案

报错核心原因

  • 异常分支覆盖不全:当前代码仅对ClientError下5种特定错误码做了抛出处理,若触发其他错误码的ClientError,程序不会抛出异常,会直接跳过try...else块,此时secret变量从未被定义,执行return语句时就会触发变量未绑定报错。
  • 代码缩进错误:get_secret函数下的所有逻辑代码均未正确缩进,不属于函数内部作用域,函数执行时无法找到secret变量的定义。
  • 附加问题:代码直接使用了未定义的region_name、secret_name变量,运行时也会触发名称错误。

修复方案

保留原有错误分类处理逻辑的前提下,补充异常兜底抛出规则,修正缩进,将动态参数改为函数入参,修复后代码如下:

import boto3
import base64
from botocore.exceptions import ClientError
import json

def get_secret(secret_name, region_name):
    # 创建Secrets Manager客户端
    session = boto3.session.Session()
    client = session.client(
        service_name='secretsmanager',
        region_name=region_name
    )

    try:
        get_secret_value_response = client.get_secret_value(
            SecretId=secret_name
        )
    except ClientError as e:
        if e.response['Error']['Code'] == 'DecryptionFailureException':
            # Secrets Manager无法使用提供的KMS密钥解密受保护的密钥文本
            raise e
        elif e.response['Error']['Code'] == 'InternalServiceErrorException':
            # 服务端发生错误
            raise e
        elif e.response['Error']['Code'] == 'InvalidParameterException':
            # 参数值非法
            raise e
        elif e.response['Error']['Code'] == 'InvalidRequestException':
            # 参数值不符合资源当前状态要求
            raise e
        elif e.response['Error']['Code'] == 'ResourceNotFoundException':
            # 未找到请求的资源
            raise e
        # 兜底其他所有异常情况,避免漏处理
        else:
            raise e
    else:
        # 使用关联的KMS CMK解密密钥
        if 'SecretString' in get_secret_value_response:
            secret = get_secret_value_response['SecretString']
        else:
            secret = base64.b64decode(get_secret_value_response['SecretBinary'])

    return json.loads(secret)

调用示例

# 传入实际的密钥名称和对应区域即可调用
secret = get_secret("your-secret-id", "ap-southeast-1")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:15:09