BeeX Tech blog

BeeXではクラウドネイティブアプリ開発、企業の基幹クラウド基盤構築、システム移行、運用保守を行っています。

S3 Express One Zoneへの移行方法と概要

1.はじめに


こんにちは、BeeXの糸山です。
今年のre:Inventは現地参加ということでラスベガスに行ってきました!(2023/11/28~12/1)
まさか現地にいけるとは思っていなかったので本当に感謝しています...ありがとうございます!!!


去年はオンラインで参加しましたが、会場の空気感や発表された瞬間のざわつきは画面越しで見るものとは全く違いますね...
あの場で話を聞くだけでもかなりのモチベーションアップになったので、来年も行けるように頑張ります!!!!

今回紹介するの11/28のKeyNoteで発表された「S3 Express One Zone」についてです。
https://aws.amazon.com/jp/blogs/news/new-amazon-s3-express-one-zone-high-performance-storage-class/
今までのS3と何が違うのか、コストやSLA、使い方などをまとめました。


2.Amazon S3 Express One Zoneとは

要するに、「一つのアベイラビリティゾーン内でデータが保存されるS3」です。
ほかのS3は違うの?という疑問も出るかと思いますが、 One Zone-IAを除くバケットタイプではバケット作成時に指定したリージョン内の少なくとも3か所のAZでデータが保存される仕様になっています。

Q: データはどこに保存されますか https://aws.amazon.com/jp/s3/faqs/


Express One Zoneの登場に伴い、新しく「ディレクトリバケット」というバケットタイプが追加されました。

以下、「汎用バケット」との違いです。

Q: 汎用バケットとディレクトリバケットの違いは何ですか? https://aws.amazon.com/jp/s3/faqs/




汎用バケット ディレクトリバケット
格納可能オブジェクト Express One Zone を除くすべてのストレージクラスに保存されたオブジェクト S3 Express One Zone ストレージクラスに保存されたオブジェクトのみ
ライフサイクルポリシー 使用可能 不可
バケットポリシー 使用可能(変更可 使用可能(変更可
可用性 SLA ■Standard,Glacier Flexible Retrieval,Glacier Deep Archive : 99.9%

■Intelligent-Tiering,Standard-IA,One Zone-IA,Glacier

Instant Retrieval : 99%
99.9%
耐久性  99.999999999% (11 ナイン)  99.999999999% (11 ナイン)

【以下、引用】

バケットは Amazon S3 に保存されているオブジェクトのコンテナであり、バケットにはオブジェクトをいくつでも保存できます。汎用バケットは元の S3 バケットタイプであり、1 つの汎用バケットには、S3 Express One Zone を除くすべてのストレージクラスに保存されたオブジェクトを含めることができます。ほとんどのユースケースとアクセスパターンに推奨されます。S3 ディレクトリバケットでは、S3 Express One Zone ストレージクラスに保存されたオブジェクトのみを許可します。これにより、1 つのアベイラビリティーゾーン内でのデータ処理が高速になります。低レイテンシーのユースケースにおすすめです。


2.1使用可能なリージョン

以下は使用可能なリージョンです。
Express One Zoneの場合、バケット作成時にリージョンだけでなくアベイラビリティゾーンも指定します。
(記事後半でExpressOneZone用バケットの作成、汎用バケットからの移行を検証します)

  • 米国東部 (バージニア北部)
  • 米国西部 (オレゴン)
  • 欧州 (ストックホルム)
  • アジアパシフィック (東京) 


2.2ユースケース

各ストレージタイプのユースケースは以下の表のとおりです。参考
公式ドキュメントを読んだところ、毎秒数十万のリクエストサポートと記載があるため、SageMakerやAthena,EMR,Glueなどのサービスワークロードの高速化を目的として作られたようにも見えます

バケットタイプ ユースケース
S3 Standard アクセス頻度が高いデータ向けの汎用ストレージ
S3 Intelligent-Tiering アクセスパターンが不明または変化するデータの自動コスト削減
S3 Express One Zone 最もアクセス頻度が高いデータ向けの高性能ストレージ
S3 Standard-IA ミリ秒単位のアクセスを必要とするアクセス頻度の低いデータ
S3 One Zone-IA アクセス頻度の低いデータを再作成可能
S3 Glacier Instant Retrieval 年に数回アクセスがあり、瞬時に取り出される長期間のデータ
S3 Glacier Flexible Retrieval ほとんどアクセスされない低コストのバックアップデータとアーカイブデータ
S3 Glacier Deep Archive アクセス頻度が非常に低く、コストも非常に低いアーカイブデータ


2.3ディレクトリバケットの作成

試しにディレクトリバケットを作成してみます。
作成方法はバケットの作成画面でバケットタイプ「ディレクトリ-新規」を選択すればOKです。

その際に作成先のリージョンだけでなく、アベイラビリティゾーンも指定してください。



beex-test--apne1-az1--x-s3というバケット名で作成完了しました。
どうやら指定したアベイラビリティ:apne1-az4 --x-s3 のサフィックスが自動で付与されるようです。

  • バケット名の規則
    • {指定したバケット名}--{指定したリージョン}-{指定したAZ}--x-s3 

バケット名もそうですが、プロパティ画面で表示される項目にも違いがあるようです。
汎用バケットのプロパティで表示される項目と比較してみました




汎用バケット ディレクトリバケット
(ディレクトリ)バケットの概要  ×
バケットの概要
バケットのバージョニング
タグ
デフォルトの暗号化( サーバー側の暗号化設定)
Intelligent-Tiering Archive 設定
サーバーアクセスのログ記録
AWS CloudTrail データイベント  情報
イベント通知
Amazon EventBridge
Transfer Acceleration
オブジェクトロック
リクエスタ支払い
静的ウェブサイトホスティング

現在のはリリース直後ということもあり汎用バケットで使用可能なほとんどの機能が現時点では使えないようです。ディレクトリバケットの目的が高速アクセスするためであるならウェブサイトホスティングなどは用途が違うということで実装されないのも納得できますが、イベント通知やアクセスログ、CloudTrailなどはセキュリティ的観点でも必要になると思うので今後のアップデートで追加されると予想しています。
※ブロックパブリックアクセスや、サーバ暗号化設定については作成中の画面でも作成後のコンソールからも操作できませんでした。


3.汎用バケット↔ストレージバケットへの移行

既存のバケットにデータをアップロードする際にExpress One Zoneが使えるかと思っていましたが、新しく登場した「ディレクトリバケット」を作成する必要があります。
汎用バケットではExpress One Zoneを使用できないのでご注意ください


まず、ディレクトリバケットを用意します。
移行先のバケットが用意で来たら、バケット名を選択し、「インポート」を押下します



「S3の参照」から移行させたいデータを選択します


実行すると「バッチオペレーション」が作成されます。ステータスが「完了済み」になれば移行完了です


4.コストについて

Express One Zoneは1つのAZでしかデータが保存されないので通常のバケットより安くなるのでは?とイメージしていましたが、高速でアクセス可能な代わりに保存料金が7.2でした。参考

以下はS3 Standardとの比較です。




S3 Standard S3 Express One Zone

ストレージ料金

0.025USD/GB

0.18/GB

PUT, COPY, POST, LIST
(1,000 リクエストあたり)
0.0047USD 0.0024USD

GET, SELECT, and all other requests
(1,000 リクエストあたり)
0.00037USD 0.00019USD    

  • 保存料金についてはExpressOneZoneのほうが7.2倍ほど高い
  • リクエスト・データ取り出しはExpress One Zoneのほうが50%ほど安い


5.さいごに

新しく登場したS3 Express One Zoneについてまとめてみました。
コスト面やユースケースでも紹介したように、検証環境レベルの個人操作、データ保管であれば引き続きStandardを使ったほうが安く済む気がします。
処理速度がウリのバケットタイプのようですので、今後は分析系サービスを使った処理時間の測定をしてみても面白そうですね。

今回は以上になります。最後まで読んでいただきありがとうございました!