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

如何让Boto3读取自定义名称的S3凭证文件而非默认.aws/credentials

解决方案

推荐方案:直接使用Boto3 Session内置参数指定自定义凭证文件

Boto3本身支持直接指定自定义的凭证文件路径,不需要手动解析配置,代码更简洁:

import boto3
import os

# 构造凭证文件绝对路径,避免相对路径导致的读取失败问题
cred_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'tester')

# 初始化Session时指定自定义凭证文件和对应profile
session = boto3.Session(
    # 替换为你tester文件中实际使用的profile名称,比如配置头是[default]就填'default'
    profile_name='default',
    aws_shared_credentials_file=cred_file_path
)

# 直接通过Session生成S3客户端,不需要手动传入三个凭证参数
s3_client = session.client('s3')

方案二:手动解析凭证文件获取三个参数

如果你需要单独获取ACCESS_KEY、SECRET_KEY、SESSION_TOKEN三个变量赋值,可以用Python标准库configparser解析符合ini格式的tester文件:

import boto3
import configparser
import os

cred_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'tester')
config = configparser.ConfigParser()
config.read(cred_file_path)

# 替换为实际profile名称
profile = 'default'
ACCESS_KEY = config.get(profile, 'aws_access_key_id')
SECRET_KEY = config.get(profile, 'aws_secret_access_key')
# 永久凭证无session token时,fallback会返回None,你也可以直接删去s3客户端中的aws_session_token参数
SESSION_TOKEN = config.get(profile, 'aws_session_token', fallback=None)

# 初始化S3客户端
s3_client = boto3.client(
    's3',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_session_token=SESSION_TOKEN,
)

注意事项

  • 如果你使用的是永久访问密钥,tester文件中没有aws_session_token字段,直接删除S3客户端初始化时的aws_session_token参数即可。
  • 请将tester文件加入项目的忽略列表(如.gitignore),避免凭证意外提交到代码仓库泄露。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:39:03