AWS S3の基本のキ ~基本的な機能をサクッと紹介~
はじめに
S3(Amazon Simple Storage Service)とは、高い耐久性を保持し、安価な料金で利用可能なインターネットストレージサービスです。
EC2インスタンス作成時にEBS(Elastic Block Store)というローカルストレージを割り当てる事ができますが、無料枠でEC2インスタンを作成する際、t2.microインスタンスを選択したときのデフォルトのEBSボリュームは8GBとなっていました。
学習用途でEC2を使う場合、8GBもあれば十分だと思いますが、アプリケーションのログ等で容量を使ってしまい、足りなくなることもあり得るでしょう。このような場合、ログはEBSではなく、S3のバケットに保存するようにすると良いでしょう。
S3はEC2にマウントして使うことができます。このような連携もAWSならではと言えます。
その他、S3について知っておきたい情報は山程ありますが、本稿では、S3の基本的な使い方と利用法を紹介します。
S3の特徴
バケットとオブジェクト
S3において、データを保存するフォルダのようなものをバケットと呼び、保存するデータをオブジェクトと呼びます。
バケット名は全世界でユニークでなくてはならない為、既に作成しているバケットや、ほかのユーザが作ったバケットと同じ名前にする事はできません。
高い耐久性
S3の耐久性は99.999999999%とされています。
これは、ある1つのオブジェクトを保管すると、リージョンを構成する複数のデータセンタでオブジェクトを自動的に複製して保持する機能が働いているためです。万が一、1つのデータセンターで大規模な障害が発生し、オブジェクトを消失してしまっても、他のデータセンターに複製があるので、いくらでも復活できるのです。
セキュリティ
ACL、IAMといったサービスでアクセス権を細かく制御できるので、運用するシステムのセキュリティ要求にあわせて設定できます。
また、オブジェクトの暗号化機能も備えているため、セキュリティに対する技術者のスキルが不足していても、安全にオブジェクトを管理する事ができるでしょう。
安価な料金設定
S3の料金について、AWS公式サイトを確認すると、以下のように記載されています。(一部抜粋)
最初の 50TB/月:0.025USD/GB
次の 450TB/月:0.024USD/GB
500TB/月以上:0.023USD/GB
対して、EBSのボリュームに対する料金が以下のように記載されていました。(一部抜粋)
汎用 SSD(gp2) ボリューム:1ヶ月にプロビジョニングされたストレージ 1GBあたり0.12USD
上記の事から、S3の料金がEBSと比べて非常に安価に抑えられる事が分かります。
バケットの作成
マネジメントコンソールから、 サービス > S3と検索し、バケットを作成ボタンをクリックします。
バケット名は全世界でユニークでなければならないので、管理しやすい名前にします。スペースや大文字を用いる事はできません。
あとはリージョンを選択するだけで、バケットを作成ボタンをクリックします。
作成されたバケット名をクリックして確認すると、概要タブではファイルのアップロード、フォルダの作成、ダウンロードといった一般的なオンラインストレージの機能が用意されております。
また、プロパティタグをクリックすると、バージョニング、サーバーアクセスのログ記録、静的Webホスティング、オブジェクトレベルのログ記録、デフォルト暗号化といった機能が利用できる事が確認できます。
EC2インスタンスへのマウント
S3をEC2の外部ストレージのように扱う。
S3はEC2にマウントする事ができます。
極めて安価、かつ容量無制限で利用できるストレージをEC2で扱う事ができるので、非常に便利です。
マウントするには goofys というGo言語で作成されたソフトウェアを用いると簡単にマウントする事ができました。
実際にEC2インスタンスにS3に対するアクセスを許可するロールを付与し、マウントを試したところ、EBSとは別の1PB(ペタバイト)の容量が認識されているのを確認しました。
また、マネジメントコンソールから保存したテキストファイルも、EC2インスタンスから viコマンドで確認することが出来ました。
静的Webホスティング
HTMLやCSSで作成されたWebページをS3バケットに配置し、ホスティングの設定をすることで、Webページを公開する事ができます。
Webホスティングの機能を使うには、Route53というサービスでドメインを取得し、そのドメインとS3のバケット名を同じにする必要があります。
最後に
S3の機能をほんの一部ですが、紹介させて頂きました。
ほかのAWSサービスとも様々な連携できるので、S3をうまく利用する事で開発費用を抑えた上で、様々な機能を実装する手助けとなるはずです。
最後まで、ご覧頂きありがとうございました。