boto3とbotoの違いや、そもそもの"boto"の由来など、AWS SDK for Pythonの歴史を調べてまとめます。
はじめに
AWS SDK for Pythonとしてboto3をいつも使っています。
ただ、私がAWSを触り始めたときには既に"boto3"になっていたので、"3"というからには無印botoやboto2もあるんだよね..?というモヤっとした疑問を抱えていました。 以前からAWSを知る人にとっては自明かもしれませんか、自分はまだ明確な答えを知りません。
そこで今回はboto3の歴史的背景を調べ、
- boto3とbotoの違い
- boto2はどこに行ったのか
- そもそも"boto"の由来は?
をまとめます。
AWS SDK for Pythonの歴史、ぜんぜん知らなかったので発作的に調べてまとめた
— BioErrorLog (@bioerrorlog) November 23, 2022
boto3とbotoの違い | AWS SDK for Pythonの歴史を調べる - BioErrorLog Tech Blog https://t.co/l7nCKGl4yf
AWS SDK for Pythonの歴史
boto3とbotoの違い
少し調べると、boto3とは別にbotoがライブラリとして存在していたことが分かります。
このbotoとboto3の違いを調べてみると、stackoverflowにbotoの作者自身が回答を寄せていました:
python - What is the difference between the AWS boto and boto3 - Stack Overflow
ざっくり意訳抜粋すると、
- botoは2006年から使われていたAWS公式のAWS Python SDK
- しかしその設計から、AWSサービスが増えるにしたがってメンテが困難になった
- そこで設計を刷新したboto3が開発された
- botocoreをベースとする設計
- AWSとの低レベルなインターフェースは自動生成される
- これによりクライアント層の設計を綺麗に保てるようになった
ということのようです。
なるほど私が知らなかっただけで、botoは2006年から(boto3がGAする)2015年まで10年近くも活躍していたんですね。
時間の経過とともに設計刷新の必要性が出たのも納得できます。
各GitHub starsの推移からも、この背景が透けて見えてきます:
- botoは元々人気のあったライブラリ
- 2015頃からboto3/botocoreが登場
- 以後boto3の人気は直線状に上昇/botoは役目を終える
boto2はどこに行ったのか
botoとboto3登場の歴史は納得しました。
が、"boto2はどこに行ったのか"という疑問が残ります。
これは"boto2"という言葉がどの文脈で使われているのか、を過去の情報から調べることで推し量ろうと思います。
いろいろ調べて得た結論はこちらです:
「boto2 はbotoのversion2のことを指すらしい」
ドキュメント類の記述からいくつか例示します:
botoのドキュメントには、"これはbotoの古いバージョン(boto2)のドキュメントだから、boto3を見ることをお勧めします"という記述があります:
You are viewing the documentation for an older version of boto (boto2).
boto: A Python interface to Amazon Web Services — boto v2.49.0
boto3のドキュメントにも、"boto2からの移行"という文脈でbotoのversion2のことを"boto2"と呼んでいる様子が見られます:
The rest of this document will describe specific common usage scenarios of Boto 2 code and how to accomplish the same tasks with Boto3.
Migrating from Boto 2.x - Boto3 1.35.16 documentation
以上、歴史的推移をまとめると、
- 2006年よりbotoが利用されてきた
- botoのversion2のことをboto2と呼んでいた
- 2015年、設計刷新したboto3がリリースされた
ということになりそうです。 スッキリしました。
"boto"の由来
ちなみに"boto"という言葉の由来については、boto3のREADMEに記載があります:
Boto (pronounced boh-toh) was named after the fresh water dolphin native to the Amazon river.
GitHub - boto/boto3: AWS SDK for Python
アマゾンカワイルカ/Amazon river dolphin/Inia geoffrensis/通称boto、が由来のようです。
また下記Issueでは、botoの作者自身がその由来をコメントされています:
It was named after the fresh water dolphin native to the Amazon river. I wanted something short, unusual, and with at least some kind of connection to Amazon. Boto seemed to fit the bill 8^)
Why is the project named boto? · Issue #1023 · boto/boto3 · GitHub
(意訳)
アマゾン川に生息する川イルカから名前を付けました。
短くて、特徴的で、何かしらAmazonに関係する名を付けたかったので、Botoはぴったりの名前でした。
おわりに
以上、boto3とbotoの違いから、AWS SDK for Pythonの歴史を調べてまとめました。
ふと思い立って発作的に始めた調べものでしたが、なかなか面白いことが知れて満足です。
同じように不思議に思ったどなたかの参考になれば幸いです。
[関連記事]
参考
python - What is the difference between the AWS boto and boto3 - Stack Overflow
What is the difference between the AWS boto and boto3? - Quora
boto: A Python interface to Amazon Web Services — boto v2.49.0
Migrating from Boto 2.x - Boto3 1.35.16 documentation
GitHub - boto/boto3: AWS SDK for Python
GitHub - boto/botocore: The low-level, core functionality of boto3 and the AWS CLI.
Why is the project named boto? · Issue #1023 · boto/boto3 · GitHub