AWSではビジネスに役立つ便利な機能が豊富に提供されていますが、なかでもぜひ覚えておきたいのが「S3」です。
Amazon S3とは、データの管理や分析に不可欠なストレージ機能を提供するサービスですが、単なるストレージとしてだけでなく、その多機能さからAWSの代表的なサービスとして多くの企業で幅広い用途に利用されています。
本記事では、S3について知りたい、S3の利用を検討している、という人に向けて
・S3とはどんなサービスか
・S3の特徴
・S3の活用例
・S3の利用方法
・S3の費用
などを中心に解説します。
AWSとは?
AWSとは、Amazon社が提供するクラウドサービスです。
AWSでは、クラウド上でストレージやネットワーキング、データベース、アプリケーション開発、データ分析など、さまざまなサービスを提供しているため、業界や分野を限定せず、世界各国のさまざまな企業で利用されています。
耐障害性やセキュリティレベルも高いなど、さまざまなメリットがあることから、AWSを主軸において事業を推進する企業も少なくありません。
また、使用した分だけ料金が発生する従量課金制であり、コスト面でも取り入れやすいといった特徴もあります。
Amazon S3とは?
「Amazon Simple Storage Service」の略称で、頭文字が3つともSであることから「S3」と呼ばれています。
S3は、AWSクラウド上にファイルを保存するためのストレージサービスです。Googleドライブのようなオンラインストレージと似ていますが、S3はオブジェクトストレージという特殊な形式での保存方法を採用しています。
オブジェクトストレージではデータを検索しやすく、OSに依存しにくいため、柔軟にデータを管理できるといった特徴があります。
S3とほかのストレージサービスとの違いは?
AWSで使用されることの多いストレージサービスには、S3以外にもEBS(Elastic Block Strage)やEFS (Elastic File System)などがあります。これらとの違いについてみてみましょう。
S3は静的Webページのホスティングに使われることからわかるように、独立で利用できるオンラインストレージサービスです。
その一方で、EBSはEC2インスタンスとマウント(一緒に動作する)することを前提としており、単独で利用するものではありません。
また、EFSに関しては、EBSと同様にEC2インスタンスにマウントできますが、複数のEC2インスタンスやFargateコンテナから共有できることから、S3とEBSの間に位置するようなサービスです。※EC2外からも利用可能
これ以外にも、データの保存形式やコスト面でも違いがあります。
データ保存形式 | 料金 [東京リージョン(1GB・月)] | |
S3 | オブジェクトストレージ | 0.025USD (S3標準) 0.005USD (Glacier Instant) |
EBS | ブロックストレージ | 0.12USD(gp2 SSD) 0.018USD(sc1 HDD) |
EFS | ファイルストレージ | 0.36USD (標準) 0.0272USD(低頻度) |
料金比較からも、S3がコストを抑えた運用ができるストレージサービスであることが分かります。
オブジェクトストレージの特性は?
ファイルストレージがファイルの格納場所に依存しているのに対し、オブジェクトストレージは、それぞれにメタデータが付与されているため、格納場所に依存せずにデータを管理できます。管理や配信がしやすいため、コンテンツ配信にも適しています。電子商取引が増え、データ量が増大したことでオブジェクトストレージの需要も伸びています。
ただ、オブジェクトストレージは、オブジェクト単位でしか出し入れができないため、ファイルの修正はその場でできず、都度の出し入れが必要になります。このことから、オブジェクトストレージは、アーカイブなどの、更新頻度の低い容量の大きなデータの格納に適しているといえます。
S3の構造は?
S3では、データの管理をバケットとオブジェクトの階層構造で管理します。
このバケット・オブジェクトは仮想サーバ内に存在するものですが、この仮想システムを動かす物理サーバは、リージョンとAZ(アベイラビリティゾーン)で指定できます。
リージョン
1つのリージョンは、複数のデータセンターで構成されています。
全世界で数十か所にリージョンがあり、日本にも2つのリージョンがあります。日本でよく使用されるリージョンは以下のとおりです。
リージョン名 / 英名 | 地域 | 特徴 |
アジアパシフィック (東京) / ap-northeast-1 | 東京都 | 国内で最もメジャー |
アジアパシフィック (大阪) / ap-northeast-3 | 大阪府 | 西日本からの通信遅延が少ない 一部の機能が限定されている |
アジアパシフィック (シンガポール) / ap-southeast-1 | シンガポール | アジア初のリージョン |
米国東部 (バージニア北部) / us-east-1 | 米国 バージニア州 | 低価格でサービスが豊富 日本からの通信遅延が大きい |
アベイラビリティゾーン(AZ)
データセンターのことです。複数のアベイラビリティゾーンで構成(マルチAZ)とすることで、リージョンを跨ぐのと同様に可用性の向上やデータの消失対策につながります。
S3では、基本的に3つ以上のレプリケーションを実施するマルチAZ構成となっています。※1ゾーンIAのみシングルAZ構成
バケット
バケットとは、オブジェクトを格納する最上位の入れ物のことで、オブジェクト一意の名前である必要があります。
バケット単位で、バージョン管理やセキュリティ設定を行います。
バケットでは、「プレフィックス」という仮想フォルダを階層構造状に作成でき、最下層にオブジェクトが配置されます。
オブジェクト
ファイル1つ1つがオブジェクトです。
ファイル本体(値)にそのファイルを説明するメタデータを付与したものを合わせて一つのオブジェクトとして、S3内で保管します。
オブジェクトの構成要素(エレメント)
キー | フォルダ名を含めたオブジェクトのパス ○○.jpg フォルダ名/○○.csv など |
値 | データそのもの |
バージョンID | バージョン管理用ID |
メタデータ | オブジェクトの属性値(名前と値をセットにしたもの) |
サブリソース | そのオブジェクトに関する追加情報 |
アクセスコントロール情報 | ACLやバケットポリシーなどのアクセス制御に関する情報 |
詳細はこちらからご確認ください。
オブジェクトにアクセスするパス
オブジェクトは次のような階層構造で表されます。
バケット名/フォルダ名(プレフィックス)/オブジェクト名
キー
フォルダ名とオブジェクト名を合わせたものが「キー」であり、バケット内でそのオブジェクトを一意に特定します。
フォルダ名/オブジェクト名
S3 URI
CLIなどでオブジェクトにアクセスする場合に使用します。
s3://バケット名/フォルダ名/オブジェクト名
オブジェクトURL
HTTPリクエスト(REST API)でオブジェクトにアクセスする場合に使用します。
フォルダ名/オブジェクト名
Amazon リソースネーム (ARN)
IAMポリシーなどの、AWS内のほかのリソースから指定する際に使用します。
arn:aws:s3:::バケット名/フォルダ名/オブジェクト名
S3の特徴は?
従量課金制
S3は、使用量に応じて料金をが算出する従量課金制になっています。保存されているデータ量やリクエスト数、データの転送量などによってコストが変動します。
容量無制限
S3には格納可能なデータの総量とオブジェクト数に制限がなく、Webサイトやアプリケーション、バックアップなど、幅広い用途で容量を気にせずデータを保存できます。
コスト効率が高い
S3には、ストレージクラスが複数用意されており、後述のライフサイクルポリシーを設定することでデータの使用頻度に応じてクラスを移行することもできるため、コストを効率化できます。
高耐久性
クラウドサービスにおいて、安全かつ継続的に使えることが重要です。S3は、データを自動的に複数の3つのデータセンターに複製して保存します。
これにより、99.999999999%(イレブンナイン)という高いデータ耐久性を実現しています。障害やエラー、脅威からデータを守れます。
柔軟なスケーラビリティ
S3では、ストレージリソースを柔軟にスケールアップ・ダウンさせることができます。
そのため、使用容量を予測してリソースを決めたり余分なリソースを確保しておく必要がなく、変動する需要に対して自動で対応してくれます。
S3では、SLA(サービス水準に関する合意)において稼働率を保証しており、既定の水準を下回った場合は返金対応が行われます。
セキュリティレベルが高い
クラウドサービスはデータが守られているのが必須事項です。機密データを流出させないよう、S3には次に示すセキュリティ機能が備わっています。
ポリシーによるアクセス制御 | 認証されたユーザやアプリケーションのみがバケットにアクセスできる IAMポリシー ユーザに対するアクセス制御 バケットポリシー バケット・フォルダ・オブジェクトごとのアクセス権の設定 ACL(アクセスコントロールリスト) バケットACL・オブジェクトACLによる詳細なアクセス制御 |
ACLによるアクセス制御 | ユーザに対するバケットやオブジェクトへのアクセス制限 |
データの暗号化 | 格納されたオブジェクトを自動で暗号化する |
ブロックパブリックアクセス | インターネットからのアクセスを禁止する |
署名付きURL | 制限のあるオブジェクトに一時的なURLを発行し、外部からのアクセスを制限付きで許可する |
アクセスログの記録 | オブジェクトに対するアクティビティログを記録する |
S3のアクセスアナライザー | 外部からのアクセスされる危険性の高いバケットを検知する |
CORS | オリジン以外のドメインからデータを取得するのを許可する |
コンプライアンス | 各種コンプライアンス要件の設定 |
オブジェクトのロック | オブジェクトごとに保存設定することで削除できないようにする |
基本的に、データの所有者のみにアクセス許可がされているため、他人にアクセスされることはないですが、サーバ側・クライアント側両方の暗号化機能も備わっているので、それを有効にすることでよりセキュリティを強化できます。また、アクセス管理機能もあるので、データごとにアクセス制限を設けることもできます。このような特徴から、機密性の高いデータの管理もS3に適しており、BCP(事業継続計画)対策やDR(災害復旧)対策にもなります。また、各種コンプライアンス要件を設定できるため、幅広い業界で利用されています。
リージョンを自由に指定できる
AWSは、世界中にリージョンを配置しており、データの保管場所を自由に指定できます。日本国内にも2つのリージョンがあるほか、アジアや米国などのリージョンも利用可能です。DR対策にも有効ですし、海外展開の場合は現地に近いリージョンを選ぶと通信遅延の軽減にもつながります。
大容量ファイルの保存
S3はデータの形式に関係なく、1ファイルにつき最大5TBのデータを保存できます。ただ、オブジェクトのアップロード方法によってその上限は異なるため注意が必要です。
S3コンソールの場合:最大160GB
AWS CLI、AWS SDK、REST APIの場合:最大5GB
マルチパートアップロード※ APIを使用した場合:最大5TB
マルチパートアップロード とは、一つのオブジェクトを複数に分けてアップロードする方法です。オンプレミスからのデータ移行などで、容量の大きいデータを移行する場合などに有効です。AWS CLIやAWS SDKなどのAPIからS3にデータをアップロードする際、一定以上の大きさのファイルには「マルチパートアップロード」が自動で適用されます。容量の大きいファイルを一気に送信すると、ネットワーク回線がひっ迫し、ほかの業務に支障が出る可能性がありますが、マルチパートアップロードではデータを細かく分割して送信されるため、ネットワークに支障が出るのを避けられます。また、送信に失敗した場合でも、その箇所のデータを再びアップロードするのではじめからやり直す必要もありません。
バックアップとバージョン管理
S3は、後述の1ゾーンIAを除いてマルチAZ構成による冗長化によって、高可用性とデータの消失対策を実現しています。この特徴からデータのバックアップ用途で利用されることの多いS3ですが、次に示す機能を併用することでデータの保護や要領の最適化につながります。
クロスリージョンレプリケーション | リージョンを跨ぐバケットのレプリケーション(リアルタイムでのデータのコピー・同期)を行う |
バージョニング | オブジェクトをバージョン管理する |
ライフサイクルルール | 保存期間に応じてストレージクラスを自動移行する |
バージョニングによるデータ保護
同じファイル名で上書きしても旧バージョンも残るため、誤ってデータの上書きや削除をしてしまった場合でも簡単に復旧できます。この機能はデフォルトでは無効になっているため、バケットを作成する際にバージョニングを有効化する必要があります。
ライフサイクルルール
オブジェクトごとにライフサイクルを設定・管理する機能です。保存から一定期間が経過したオブジェクトの削除や異なるストレージクラスへの移行を操作・設定できるため、保存容量の最適化に役立ち、コストを効率化できます。
イベント通知
バケットに対してオブジェクトの作成・削除・ライフサイクルルールの移行といった、イベントが発生した際にLambda(サーバレス処理)やSNS(メールなど)、SQS(別アプリへのメッセージ送信)などの処理を自動で実行する機能が備わっています。
S3の主な用途は?
S3は、主にバックアップやアーカイブ、データレイクといった、データの保管場所として利用されます。しかし、単なるストレージとしてだけでな多様な用途に利用されます。
ファイルのバックアップ・共有
S3はファイル形式を問わずに格納できるオブジェクトストレージです。高耐久で高可用なためファイルのバックアップに最適です。また、アクセス制御もでき、特定のユーザのみでのファイル共有が可能であるため、組織内のファイル共有などにも利用されています。
アーカイブ
容量無制限で利用できるS3は、データアーカイブ先としてオンプレミスでは保存しきれないものを長期保存しておくのに便利です。
データレイク
S3は、ビッグデータ分析に用いるデータレイクとしても利用されます。
データレイクとは構造化・非構造化問わず、さまざまな形式のデータを保管する仕組みで、AWSにおいてはHadoop互換の分散ファイルシステムに対応できるS3がその役割を果たしています。
静的Webサイトのホスティング
バックエンド言語を使用していない静的なコンテンツであれば、S3のみでサーバを立てることなくWebサイトという形で公開できます。静的なファイルをS3に置くことで、HTTP/HTTPSからS3に保存したデータにアクセスできるため、サーバ不要というわけです。
バケットを静的Webサイトとして設定すると、そのバケットに対してAWSリージョン固有のS3エンドポイント(URL)が付与されます。そのため、S3エンドポイントを介すことで、S3バケットに保管されているオブジェクトに直接アクセスできます。
S3をホスティングに使うとストレージやリクエストなどの費用はかかりますが、Webサイトに用いられる画像などの容量の大きいものでも容量単価の安いS3では、EC2やFargateなどの一般的に利用されるホスティング用サーバに比べて維持費がかからないため、コストを抑えられます。また、サーバやネットワーク構築の手間を省けられるという点も大きなメリットです。
また、ブラウザからAPI経由でデータを直接取得するSPA構成にすることでサーバサイド処理を有効化することやCloudFrontと組み合わせることで配信を高速化させたりといったことも可能です。
このように、静的Webサイトだけでなく、動的コンテンツはEC2上のサーバに配置するなどすれば、低コストで高速な動的サイトも構築できます。
S3の種類は?
S3におけるデータの格納方法には次の種類(ストレージクラス)があります。上から下に向かって、可用性や通信遅延といった性能は下がりますが、その分価格も安くなります。
名称 | 耐久性 | 可用性 | 可用性SLA | 通信遅延 | 最低利用期間 | 概要 |
S3 標準 | 99.999999999% | 99.99% | 99.9% | ミリ秒 | ー | デフォルトで最高水準 |
S3 標準IA | 99.999999999% | 99.9% | 99% | ミリ秒 | 30日 | アクセス頻度の低いファイル向け |
S3 Intelligent-Tiering | 99.999999999% | 99.9% | 99% | ミリ秒 | 30日 | オブジェクトの使用頻度に合わせて階層を自動調整 |
S3 1ゾーンIA | 99.999999999% | 99.5% | 99% | ミリ秒 | 30日 | 標準IAのシングルAZ版 |
S3 Glacier Instant Retrieval | 99.999999999% | 99.9% | 99% | ミリ秒 | 90日 | アクセス頻度は低いが、すぐに取り出したいファイル向け |
S3 Glacier Flexible Retrieval | 99.999999999% | 99.99% | 99% | 分or時間単位 | 90日 | データの取り出しに時間かかる |
S3 Glacier Deep Archive | 99.999999999% | 99.5% | 99% | 分or時間単位 | 180日 | データの取り出しに時間かかる |
ストレージクラスはオブジェクト単位で設定可能です。使用頻度や用途によってストレージクラスを選ぶ必要があります。
S3 標準
最も高機能で高価格なストレージクラスです。複数のAZで冗長化をはじめとしたさまざまな工夫により、高い可用性を実現しています。
S3 標準IA
S3 標準よりは可用性が落ちますが、複数AZによる冗長化がされているなど、似た特徴を持ちます。
それ以外のS3標準との違いとしては、データ保存の料金が安いかわりに、30日最低料金とデータ取出料金が設定されていることです。
この特性から、アクセス頻度が比較的低く、長期保管が予想されるファイルの格納に向いています。
S3 Intelligent-Tiering
使用頻度に合わせて階層を自動で振り分けてくれるストレージクラスです。この自動調整によって、コストを最適化できます。クラス移行の基準は次に示すとおりです。
高頻度アクセス階層:S3標準に相当
低頻度アクセス階層:30日以上アクセスがない場合に移行。S3標準IAに相当
インスタントアクセス階層:90日以上アクセスがない場合に移行。S3 Glacier Instant Retrievalに相当
アーカイブアクセス階層:90-730日以上アクセスがない場合に移行。S3 Glacier Flexible Retrievalに相当(オプション※)
ディープアーカイブアクセス階層:180-730日以上アクセスがない場合に移行。Glacier Deep Archiveに相当 (オプション※)
※有効化にはバケット作成時に指定が必要
アーカイブ、ディープアーカイブアクセス階層に関しては、階層を戻すのに操作が必要です。
なお、これと似た機能に「ライフサイクルルール」があります。
S3 1ゾーンIA
S3 標準IAでは複数AZによる冗長化はありません。料金は安く抑えられますが、消失する困るファイルは置かないことをおすすめします。
アクセス頻度が低く、可用性やデータの消失対策がマストではないファイルの格納に向いています。
S3 Glacier Instant Retrieval
可用性の高さや複数AZでの冗長化に関してはS3標準IAと同等の機能を持ちますが、最低料金期間が90日と長いです。また、アクセスコストが高めに設定されています。
そのため、バックアップ用など、アクセス頻度が低く、長期での保存が前提ですが、いざというときにすぐ取り出す必要のあるファイルの格納に向いています。
S3 Glacier Flexible Retrieval
S3 Glacier Instant Retrievalとは違い、データの取り出しに数分〜数時間かかるため、すぐにアクセスする必要があるファイルには不向きです。その分値段は安く設定されているので、旧バージョンのバックアップの保管用などに向いています。
データの取り出しには、数分で取り出せるが料金が高めに設定されている「迅速取り出し」と、3〜5時間かかるが料金が安い「標準取り出し」、最大12時間かかるが料金が最安となる「大容量取り出し」の3種類があります。
S3 Glacier Deep Archive
最大12時間程度とS3 Glacier Flexible Retrievalよりもさらにデータの取り出しに時間のかかるクラスです。一方で料金は、全ストレージクラスのなかで最安であり、S3標準と比べると90%以上削減できます。こちらも、旧バージョンのバックアップの保管用などに向いています。
無料枠
無料利用枠もあり、一年間でS3 標準を5GBまで利用できます。本格的な利用をしようか迷っている人はこの無料枠をぜひ試してみましょう。
S3の利用料金
S3はほかのサービスよりは比較的低コストで利用できますが、それでもやはりデータ量が増えれば費用も上がります。
具体的には、次のリソース・操作にコストがかかります
・ストレージ
・リクエストとデータ取り出し
・データ転送(外向き通信のみ)※無料枠100GBを超えた場合
・管理と分析(ストレージクラス分析など)
・レプリケーション
・S3 Object Lambda
ストレージクラスによっても料金が変わるので以下に主要項目を記載します。
名称 | 東京リージョンでのストレージ料金 [USD/GB月] | データの取り出し [USD/GB] | GETリクエスト (1000リクエストあたり) [USD] | POSTリクエスト (1000リクエストあたり) [USD] |
S3 標準 | 0.023-0.025 | ー | 0.00037 | 0.0047 |
S3 標準IA | 0.0138 | 0.01 | 0.001 | 0.01 |
S3 Intelligent-Tiering | 0.002-0.025 ※階層により異なる | ー ※アーカイブアクセス迅速取出以外 | 0.00037 | 0.0047 |
S3 1ゾーンIA | 0.011 | 0.01 | 0.001 | 0.001 |
S3 Glacier Instant Retrieval | 0.005 | 0.03 | 0.001 | 0.02 |
S3 Glacier Flexible Retrieval | 0.0045 | 0.011-0.033 | 0.0037 | 0.03426 |
S3 Glacier Deep Archive | 0.002 | 0.005-0.022 | 0.0037 | 0.065 |
詳細はS3の料金ページでご確認ください。
コスト削減に使える分析機能
コストの削減には、適切なストレージクラスを選び、前述したIntelligent-Tieringやライフサイクルルールを活用し、適切な移行タイミングを設定することが重要です。その上で、まず現状のコストがどうなっているのか分析する必要があります重要です。
ストレージクラス分析
オブジェクトへのアクセス頻度を分析し、適切なライフサイクルルールの設定やストレージクラスの選定の際に役立ちます。
Storage Lens
Storage Lensは、格納されたデータに対する各種統計情報をダッシュボードで可視化するツールです。
S3の使用方法
S3の基本的な使い方を紹介します。
バケットの作成
まず、バケットを作成します。
- AWSマネジメントコンソール>ストレージ>S3を選択する
- 「バケットを作成する」をクリックする
- バケット名、リージョン、設定事項を入力する
- バケットのオプションを設定する
- バケットのアクセスを指定する
- 内容を確認する
上記の流れでバケットを作成できます。
データのアップロード
作成したバケットにファイルをアップロードします。
- 概要>アップロードを選択する
- アップロードするファイルを指定する
- アクセス許可やプロパティを設定する
- アップロードをクリックする
このように、簡単に利用できます。
まとめ
Amazon S3はデータの管理や分析に不可欠なストレージ機能を提供するクラウドサービスです。所有するデータをビジネスに活用したいと考える企業には、多機能でコストも抑えられるS3の導入をおすすめします。とりあえず、オンプレミスからクラウドにデータの管理方法を変えてみるというのもいいでしょう。AWSの代表的なサービスの1つで多くの企業で幅広い用途に利用されるS3は、今後も発展・進化し続けることが予測されるので、ぜひ導入を検討しましょう!
Amazon S3の勉強方法
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Amazon S3に限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。