Boto3:Python 开发者操作 AWS 的官方 SDK

Boto3 是亚马逊 Web 服务(AWS)为 Python 提供的官方软件开发工具包。它让 Python 开发者能够通过代码操作 AWS 的各种服务,从对象存储 S3 到弹性计算 EC2,覆盖了 AWS 绝大部分产品线。

项目由亚马逊 Web 服务团队维护和发布,在 GitHub 上获得了超过 9800 颗星,是 Python 生态中连接 AWS 基础设施的标准选择。对于需要自动化管理云资源的团队来说,Boto3 几乎是必不可少的一环。

从一条河流说起

Boto(读作 boh-toh)这个名字来源于亚马逊河流域的一种淡水海豚。最初版本的 Boto 库作者 Mitch Garnaat 选择了这个名字,以此向这条河流致敬。这个命名传统延续到了今天的 Boto3。

两种编程模型

Boto3 提供了两套 API:客户端(Client)和资源(Resource)。客户端对应底层 AWS 服务 API,每个操作都与 HTTP 请求一一映射。资源则是更高层的抽象,提供了面向对象的使用方式。

以 S3 为例,使用客户端创建存储桶:

ini 复制代码
import boto3
s3_client = boto3.client('s3')
s3_client.create_bucket(Bucket='my-bucket')

使用资源接口则更直观:

ini 复制代码
s3_resource = boto3.resource('s3')
bucket = s3_resource.create_bucket(Bucket='my-bucket')

资源接口的优势在于,返回的是 Python 对象,可以直接调用方法和访问属性,代码更简洁。客户端接口则胜在功能完整,AWS 新服务和新功能通常先在客户端接口中支持。

快速上手

安装 Boto3 通过 pip 即可完成:

ruby 复制代码
$ python -m pip install boto3

使用前需要配置 AWS 凭证。在 ~/.aws/credentials 文件中设置访问密钥:

ini 复制代码
[default]
aws_access_key_id = YOUR_KEY
aws_secret_access_key = YOUR_SECRET

同时在 ~/.aws/config 中配置默认区域:

ini 复制代码
[default]
region = us-east-1

完成配置后,在 Python 中导入并使用:

python 复制代码
>>> import boto3
>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
        print(bucket.name)

这段代码会列出当前账号下所有 S3 存储桶的名称,是大多数开发者接触 Boto3 时写的第一段程序。

版本与支持

Boto3 于 2015 年 6 月 22 日正式发布,目前处于完整支持阶段。2026 年 4 月 29 日,Boto3 结束了对于 Python 3.9 的支持,这符合 Python 软件基金会在 2025 年 10 月 31 日终止对该运行时支持的安排。

对于 SDK 主要版本的维护和支持,AWS 提供了详细的版本支持矩阵和生命周期政策。开发者可以在官方文档中查阅具体信息,了解每个版本的支持周期和迁移建议。

开发与测试

Boto3 使用 tox 运行测试,支持所有活跃的 Python 版本:

shell 复制代码
$ tox
$ tox -- unit/test_session.py
$ pytest tests/unit

项目接受社区贡献,无论是 bug 报告、新功能建议还是文档改进。提交 issue 或 pull request 前,建议先阅读 CONTRIBUTING 文档。

获取帮助

使用过程中遇到问题,可以通过以下渠道寻求帮助:

  • 在 Stack Overflow 上提问并添加 boto3 标签
  • 通过 AWS Support 提交技术支持工单
  • 确认是 bug 的话,在 GitHub 上提交 issue

Boto3 作为 AWS 官方的 Python SDK,覆盖了超过 200 项 AWS 服务,文档完善,社区活跃。如果你需要在 Python 项目中与 AWS 服务交互,Boto3 是目前最成熟的选择。

相关推荐
颜酱20 分钟前
# 02 | 搭骨架:用 LangGraph 编排 12 步工作流(思路)
前端·人工智能·后端
颜酱21 分钟前
02 | 搭骨架:用 LangGraph 编排 12 步工作流
前端·人工智能·后端
嘉伟桑1 小时前
Python调用电价API返回JSON示例:分时电价、现货电价和字段解析
后端
武子康2 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端
我叫黑大帅2 小时前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试
AskHarries2 小时前
文件上传系统
后端
止语Lab3 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活3 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
程序员天天困3 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn3 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端