使用Boto3读取AWS凭证时遭遇NameError错误求助
修复Boto3读取AWS凭证时的
NameError: name 'config' is not defined错误 嘿,这个错误原因很直白——你代码里直接调用了config.get(),但config这个变量根本没被定义和初始化,Python自然不知道它是什么!咱们来一步步解决这个问题,同时给你几个符合AWS最佳实践的凭证读取方案:
方案1:用configparser读取本地配置文件
如果你是打算从配置文件里读取凭证,得先初始化configparser对象并加载配置文件才行:
首先创建一个config.ini配置文件(和你的Python脚本同目录):
[aws] aws_access_key_id = 你的AWS访问密钥ID aws_secret_access_key = 你的AWS秘密访问密钥
然后修改你的Python代码:
import boto3 import configparser # 别忘了导入这个库 # 初始化configparser并加载配置文件 config = configparser.ConfigParser() config.read('config.ini') # 从[aws]区块读取凭证 aws_key = config.get('aws', 'aws_access_key_id') aws_sec = config.get('aws', 'aws_secret_access_key') client = boto3.client( 's3', aws_access_key_id=aws_key, aws_secret_access_key=aws_sec )
方案2:使用环境变量(推荐)
这种方式不需要在代码里硬编码或读取配置文件,Boto3会自动识别环境变量里的凭证:
Windows系统临时设置(命令行)
set AWS_ACCESS_KEY_ID=你的AWS访问密钥ID set AWS_SECRET_ACCESS_KEY=你的AWS秘密访问密钥
或者在Python代码里临时设置
import os import boto3 # 设置环境变量(仅当前脚本运行时生效) os.environ['AWS_ACCESS_KEY_ID'] = '你的AWS访问密钥ID' os.environ['AWS_SECRET_ACCESS_KEY'] = '你的AWS秘密访问密钥' # Boto3会自动读取环境变量,无需手动传入参数 client = boto3.client('s3')
方案3:使用AWS默认凭证链(生产环境首选)
这是AWS官方最推荐的方式,你只需要在本地配置凭证文件,Boto3会自动读取:
在Windows系统中,创建C:\Users\<你的用户名>\.aws\credentials文件,内容如下:
[default] aws_access_key_id = 你的AWS访问密钥ID aws_secret_access_key = 你的AWS秘密访问密钥
然后代码可以简化成这样:
import boto3 # Boto3会自动从默认凭证链读取凭证,无需额外配置 client = boto3.client('s3')
小提醒
尽量避免在代码里硬编码凭证,也不要把配置文件提交到版本控制系统里,这会带来安全风险。环境变量或默认凭证链的方式更安全可靠哦!
内容的提问来源于stack exchange,提问作者meitale
相关产品推荐
相关产品推荐

