[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Successor to CentOS] AlmaLinux OS server construction/migration service

[Successor to CentOS] AlmaLinux OS server construction/migration service

[For WordPress only] Cloud server “Web Speed”

[For WordPress only] Cloud server “Web Speed”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Reservation system development] EDISONE customization development service

[Reservation system development] EDISONE customization development service

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[Global exclusive service] Beyond's MSP in North America and China

[Global exclusive service] Beyond's MSP in North America and China

[YouTube] Beyond official channel “Biyomaru Channel”

[YouTube] Beyond official channel “Biyomaru Channel”

AWSのS3の転送速度を早くする裏ワザをAWSの中の人に聞いてきた

インフラエンジニアの伊藤です。

Amazon S3
非常なスケーラブルなシステムで、99.99%の可用性を誇るシステムです。
(ちなみに堅牢性は99.9999999%になります)

静的サイトとしてS3を使用している人もいらっしゃるでしょうし、
ストレージとして使用している人もいるでしょう。

やっぱり気になるのは転送速度。

AWSの中の人がいってた「転送速度を速くするワザ」を今回紹介したいと思います!

S3ってディレクトリ-ファイルの構造じゃない

転送速度を速くするワザの前に・・・
S3は上記の堅牢性や可用性を担保するために、ファイルをアップロードしたタイミングで、
同じリージョンの3つのデータセンターに対してコピーを行っています。

で、S3にはバケットとオブジェクトというものがあり、「フォルダ=バケット」、「ファイル=オブジェクト」というイメージをしますが、実体はそうじゃないのです。

引用します。

mazon S3の基礎技術は、単純なKVS(Key-Value型データストア)でしかありません。例えば下記のようなフォルダ(と我々が認識している)構造があったとします。(本エントリーでは、bar.txtにはbar、baz.txtにはbazっていう文字が入っていると単純に考えることにします。)
(ルート)
└ foo/
└ bar.txt
ただこれは、我々がこのように認識しているだけであって、S3的には単純に下記のような情報を保持しているに過ぎません。S3においては基本的に、/に特別な意味は無いのです。
キー(フルパス名) バリュー(ファイルの内容)
foo/bar.txt bar

参考サイト:Amazon S3における「フォルダ」という幻想をぶち壊し、その実体を明らかにする | Developers.IO

Amazon S3 ではバケットとオブジェクトをサポートしていますが、Amazon S3 には階層がありません。ただし、オブジェクトキー名のプレフィックスと区切り記号によって、Amazon S3 コンソールや AWS SDK で階層を暗示し、フォルダの概念を導入できます。

参考サイト:オブジェクトキーとメタデータ - Amazon Simple Storage Service

バケットとオブジェクトを使うとフォルダとファイルっぽいですが、あくまで概念として作っているだけのようです。

キーバリュー型のデータなので、データを取得するときは単純に検索がかかっていきます。
また、同じようなバケット名にしてしまうと、同じデータセンターにデータが格納されてからデータコピーをしてしまい、
転送速度が遅くなりがちになるようです。

バケット名の先頭にハッシュ値をつけよう

バケット名に何文字か適当なハッシュ値をつけることで、同じデータセンターに書き込まれることがなくなります。

  • test01
  • test02
  • test03

ではなく、

  • abctest01
  • yjctest02
  • ckttest03

と言った感じですね。

ただ、どんなバケット名でもいいかというとそうではなくて、
命名規則にも制限があるので、注意しましょう。

  • バケット名は、3~63 文字以内にする必要があります。
  • バケット名は、1 つのラベルまたは一連の複数のラベルとして指定します。隣り合うラベルは単一のピリオドで区切ります。バケット名には、小文字の英文字、数字、およびハイフン(-)を含めることができます。各ラベルの先頭および末尾は、小文字の英文字または数字にする必要があります。
  • バケット名は、IP アドレスの形式(192.168.5.4 など)にはできません。
  • SSL と共に仮想ホスティング形式のバケットを使用した場合、SSL ワイルドカード証明書は、ピリオドを含まないバケットのみと一致します。この問題を回避するには、HTTP を使用するか、または独自の証明書検証ロジックを記述します。 バケット名にピリオド (「.」) は使用しないことをお勧めします。

引用元:バケットの制約と制限 - Amazon Simple Storage Service

これによって、各種データが同じリージョン内の違うデータセンターに書き込まれるので、
同じデータセンター内に書き込まれるより速くなることが期待できます。

先頭に何文字以上が必要やったけな…確か3文字以上とかだった気がします。

では、よきS3ライフを!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
2
読み込み中...
2 票, 平均: 1.00 / 12
24,462
X facebook はてなブックマーク pocket
[2024.6.30 CentOS support ended] CentOS server migration solution

[2024.6.30 CentOS support ended] CentOS server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

The person who wrote this article

About the author