AWSにおけるWebストレージサービスである、Amazon S3のつまずきポイントが今回のテーマだ。S3はデータ耐久性が高いことで有名だ。実に、99.999999999%のデータ耐久性を達成するように設計されている。
S3はEC2など他のAWSサービスと同様に、Webコンソール(Management Console)やAPIなどで、「バケット※1」を作成したり、バケット内にオブジェクト(ファイル)※2を作成・削除したりできる。また、S3に関しては様々なサードパーティのクライアントがあるので、そちらを利用して簡単に操作することも可能となっている。
簡単に操作できるとはいえ、初心者にはいくつかのつまずきポイントがあることは事実なので、今回もそこにポイントをしぼって解説したいと思う。
つまずきポイント1:地域の選択ミスで遅延が起きる
S3を使用する場合、ユーザーは最初に自分のオブジェクトを保存するバケットを作成することになる。この最初ステップで誤ったリージョン※3を選択してしまうと、通信に遅延が発生してオブジェクトへのアクセスにストレスを感じてしまう。
当然のようだが、初心者はこのミスをやってしまいがちだ。リージョンはプルダウンメニューから選択する。そのデフォルト値は米国のため、つい変更せずにバケットを作成してしまうのだ。ユーザーが日本に存在しているにもかかわらず、S3バケットが米国に設置されていれば通信が遅くなってしまう。
バケットは作成後にリージョンを変更することができない。対策としては、バケットの作成時にリージョン選択を忘れないようにするしかない。
つまずきポイント2:設定ミスで誰でもアクセス可能に
S3のバケットはオブジェクト単位に公開・非公開の設定をしたり、バケットごとにポリシー(バケットポリシーと呼ぶ)を設定して公開・非公開を設定したりすることができる。
この設定はManagement Consoleのほか、サードパーティのツールなどから簡単に実施することができる。が、簡単にできるがゆえに、誤ってバケットを公開してしまうことがよくある。
対策としては、バケットポリシーを使って、バケット単位にアクセス可能なアカウントを制限することを徹底するのがよい。バケットポリシーはJSON形式で記載することになるが、AWSではそのためのジェネレーターが提供されているので、決して難しいものではない。