Mac下VS Code配置AWS Toolkit凭证后Jupyter运行Boto3代码报错
问题解决:Jupyter Notebook中Boto3无法识别AWS凭证
首先明确:AWS免费套餐不会触发「Unable to locate credentials」错误,该问题与套餐类型无关,核心是Jupyter运行环境未正确加载你的AWS配置。
以下是具体解决步骤:
检查Jupyter环境的AWS配置加载状态
在Notebook中先运行这段代码,确认环境变量是否包含AWS配置信息:import os print("AWS_PROFILE:", os.environ.get('AWS_PROFILE')) print("AWS_ACCESS_KEY_ID:", os.environ.get('AWS_ACCESS_KEY_ID'))若输出为空,说明Jupyter未继承VS Code的AWS配置环境。
手动指定AWS配置或凭证
两种方式可让Boto3读取到你的配置:- 指定配置文件中的Profile名称(推荐):
import boto3 import pprint as pp # 替换为你在.aws/config中配置的profile名称,通常是default session = boto3.Session(profile_name='default') dynamodb_client = session.client('dynamodb') table_name = 'Test_Dynamo' pk = 'U-0001' stmt = f"SELECT * FROM {table_name} WHERE pk=? and begins_with(sk,'#U')" pmt =[{ "S": pk }] resp = dynamodb_client.execute_statement(Statement=stmt, Parameters=pmt) pp.pprint(resp['Items']) - 临时硬编码凭证(仅测试用,禁止生产环境使用):
import boto3 import pprint as pp dynamodb_client = boto3.client( 'dynamodb', region_name='你的区域(如us-east-1)', aws_access_key_id='你的访问密钥ID', aws_secret_access_key='你的秘密访问密钥' ) # 后续代码不变 table_name = 'Test_Dynamo' pk = 'U-0001' stmt = f"SELECT * FROM {table_name} WHERE pk=? and begins_with(sk,'#U')" pmt =[{ "S": pk }] resp = dynamodb_client.execute_statement(Statement=stmt, Parameters=pmt) pp.pprint(resp['Items'])
- 指定配置文件中的Profile名称(推荐):
同步VS Code的AWS配置到Jupyter
打开VS Code命令面板(Ctrl+Shift+P),执行AWS: Select Profile,确认选中你配置的profile后,重启Jupyter内核(点击Notebook右上角的「重启内核」按钮),再重新运行代码。检查凭证文件权限
Linux/macOS下,确保.aws/credentials和.aws/config文件权限为600(仅当前用户可读可写),执行命令:chmod 600 ~/.aws/credentials ~/.aws/configWindows下,右键这两个文件进入「属性-安全」,确保只有当前用户拥有读写权限,删除其他用户的权限。
内容的提问来源于stack exchange,提问作者SwiftMiner
相关产品推荐
相关产品推荐

