BioErrorLog Tech Blog

試行錯誤の記録

boto3とbotoの違い | AWS SDK for Pythonの歴史を調べる

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の歴史

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は役目を終える

boto, boto3, botocoreのGitHub star数推移

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.26.127 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はぴったりの名前でした。

Amazon river dolphin (boto) の写真 | 画像はWikipediaより

おわりに

以上、boto3とbotoの違いから、AWS SDK for Pythonの歴史を調べてまとめました。

ふと思い立って発作的に始めた調べものでしたが、なかなか面白いことが知れて満足です。

同じように不思議に思ったどなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

www.bioerrorlog.work

参考

python - What is the difference between the AWS boto and boto3 - Stack Overflow

Elastician

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.26.127 documentation

GitHub - boto/boto3: AWS SDK for Python

GitHub - boto/boto: For the latest version of boto, see https://github.com/boto/boto3 -- Python interface to Amazon Web Services

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

Amazon river dolphin - Wikipedia