はじめに
このページはAWS Solution Architect Professional(SAP)の資格を取得するため、重要ポイントを絞って記載していきます。分かりづらいところ、間違っているところがあれば是非ご指摘ください。
今回の説明対象
S3(Simple Storage Service)
サービスの内容
機能説明
主な利用方法
S3はAWSの非常に安価で大容量を保管できるオブジェクトストレージサービス。簡単に言えばファイル(オブジェクト)を保管する場所のこと。EC2のディスクとしては使えないことに注意。注意点にも書いたがS3は機能が非常に多くあるため、様々な問題で問われやすい。まずは以下の標準的な機能を抑えておこう。
- データ耐久率(データが破損して無くならない)は99.999999999%
- データ容量は気にせず保存できる。移行元のデータ保存やデータレイク(とにかくデータを集める場所)として有能
- 安い(1GBあたり0.025ドル)
類似サービス
S3はストレージサービスとしてよく引き合いに出されるため、EBS、EFSなどのEC2インスタンスにて利用するブロックストレージと比較対象としてよく問題にて出てくる。
基本的に以下の違いで抑えておこう。
項目 | S3 | EBS | EFS |
---|---|---|---|
利用用途 | オブジェクト単位でデータを集める場所 | EC2のディスク | 共有ファイルサーバ |
外部からのアクセス方法 | 署名付URLもしくはWebサーバ機能を用いれば直接アクセス可能 | EC2経由 | EC2経由 |
アクセス速度 | 普通 | 高速 | 普通~遅い |
耐久性 | 非常に高い | 高い | 高い |
対障害 | リージョンサービスで複数個所にコピーされる。高い | AZサービスで低い | S3同様、複数個所にコピーされる。高い |
EC2との接続 | 直接接続はできず別手段必要 | 接続できる | NFSにて接続できる、ちなみにWindowsはNG |
価格 | 安い | 普通 | 比較的高い |
移行などの問題であれば、8~9割がたS3を使うことになると思ってよい
注意点
S3は試験内でもやっかいな存在だと思う。S3自体よく使われているサービスでなじみもある人が多い一方で派生サービスやオプションが非常に多く、そして問題のバリエーションも多種多様だからである。
以下、派生サービスやオプション等について簡単にまとめた。
オプション
名前 | 機能説明 |
---|---|
ライフサイクル | 再頻出オプションのひとつ。保存したファイルを〇日後に削除したり、後述する安価なストレージサービス・Glacierに自動移行して費用を抑えたりする |
Intelligent-Tiering | S3内にあるデータを監視して、利用されていないデータをGlacierなどに移動する。ライフサイクルと似ているが、こちらはアクセス頻度に応じて移動する・しないを決める |
低頻度アクセス(IA) | S3の耐久性を若干落としつつも通常のS3より安く保管ができるオプション。よくGlacierと比較されるが、Glacierはデータを取得するには時間がかかる一方で低頻度アクセスはすぐにデータを取り出せる |
Webサーバ機能 | 画像ファイルや静的HTMLファイルなどをS3にて公開するWebサーバ機能。ファイルのダウンロード等としても使われる。ようは「FTPやSCPのような専用アプリがなくてもブラウザでファイルにアクセスができる」機能と考える。EC2を使わないためコストを抑えられる一方でPHPなどを使った動的サイトは機能しない。Cloud Frontと併用するのが定石 |
署名付URL | S3のWebサーバとして常時データを公開するのではなく、一時的にURLを生成してアクセスを行わせたい場合に利用する機能。レポーティングのダウンロード等で使われることが多い |
マルチパートアップロード | 大容量のオブジェクトをいくつかに分割してアップロードする方法。特徴として転送中に失敗しても再開ができる。重要な点としては転送中に失敗になったオブジェクトが放置されるとそのままデータも残ってしまう点。その場合はAWS CLIで不完全なファイルを探して手動削除するか、ライフサイクルの設定で自動的に削除する機能があるので利用する。これも再頻出の機能である |
Transfer Acceleration | 海外等からの遠い場所からS3へデータ転送を行う際、AWSネットワークのエッジロケーションを経由して品質の高い転送を行うこと。「アメリカから日本のS3にアップロードしたい」といった時に使われることが多い。逆に日本リージョンの中でこのオプションを使う理由はあまりない。 |
S3 select | オプションの中では異色のサービスで、S3内のCSVファイル等からSQLを使ってデータを抽出できる。ただし簡単なことしかできないので注意。時々Athenaあたりと比較される |
イベント通知 | S3で重要な機能の一つ。S3にオブジェクトがアップロードや削除等されたときに別のAWSサービスに通知する機能。通知先は主にSNS、SQS、Lambda。クライアントからアップロードされたらSNSやLambdaで処理を実行するといった問題はよく出てくるので抑えておくこと |
暗号化 | S3の暗号化もよく問われる。暗号化の観点として「データ転送時の外部通信」と「転送後の保存されたデータ」の暗号化がある。前者はSSL/TLS通信を利用する。後者はさらに2種類わかれて「物理的にディスクが盗まれた際の透過的暗号化」と「一般的なZIP等でよく行われるファイルごとの暗号化」がある。基本的に試験で問われるのは前者で、S3が勝手に鍵を生成し暗号化してくれるS3-SSEとユーザ自らが鍵を運用して暗号化するS3-KMSがある。S3-KMSの場合はCloudTrailなどでログを追いかけることができる |
クロスリージョンレプリケーション | S3はリージョン内で複数のAZにファイルを自動保管するサービス。もし他リージョンにもバックアップを取りたい場合はこの機能を利用する |
関連サービス
名前 | 機能説明 |
---|---|
S3 Glacier | S3ラインナップではあるのだが、別サービスとしての取り扱いが多いためこちらに記載した。S3より非常に安く保存できる派生サービスで耐久性も変わらない。S3との大きな違いとしてGlacierからデータを取り出そうとすると非常に時間がかかる。コストを抑えたいという要件があればGlacierを選ぶ。さらに数年単位でファイルをさらに安く安全に保管したいという要件があればDeep ArchiveというGlacierのオプションもある |
VPCエンドポイント | S3にアクセスする場合、VPCからであればVPCエンドポイントを利用する。詳細はこちらを参照 https://qiita.com/takahiro_yazu/items/b2e4c490d3eb2256e12d |
Storage Gateway | オンプレミスのストレージ環境とS3を連携させて、バックアップを取るサービス。いくつか種類があり、いずれもS3にファイルをコピーしてくる |
Snowファミリー | 物理デバイスを用いてオンプレミスからAWSへデータを移行するサービスがSnowballなどのSnowファミリーである。Snowballなどでデータを移行した場合、S3に保存される |
Athena | S3のオブジェクトよりSQLを用いて直接データを抽出するサービス。S3 selectと似ているがより高度なことができると考えればよい。サーバレスで実行できることが特徴でEMRやRedshiftのようなクラスタを構成することもないので手軽にできるのが特徴 |
これ以外にもCognitoやSTS、SNSなど多岐に渡るS3との連携問題が出る。まずは上記内容をしっかりと覚えることが重要である
コスト
利用容量とアクセス数、転送量課金が発生するが、細かいところは聞かれない
テストのポイント、その他
多くのオプション・派生サービスがあるなかで、特に盲点となりがちなのがWebサーバ機能である。HTMLファイルや画像ファイルをS3に置いてブラウザから直接アクセスできる機能で、SAAでも問われることは多い。加えて最近はクライアント側プログラム(JavaScriptなど)をHTMLに記載して動かすモバイルアプリなどもあり、この場合もS3を利用する。動的に変更させたい部分はAPI Gateway+LambdaといったAPIと併用したつくりを行うパターンが多く、普段プログラミングをしていないSI、運用系SEはちょっと理解に時間がかかるかもしれない。以下サイトを参考にしていただきたい。