2019-09-15AWSのS3とは何か知りたい方へトラハックAWSのストレージサービス「S3」は何ができるの?バケットってどうやって作ればいいの?この記事では、その疑問について回答します。この記事を読めば分かることS3が「お手軽で最強のストレージサービス」だと分かる4つの特徴S3バケットの作成方法S3バケットにファイル(Dockerイメージ)をアップロードする方法S3の特徴については以下の書籍の情報をシンプルにまとめています。S3バケットの作成、Dockerイメージのアップロードは、以下の記事のプログラム実装のために私が実施した実際の手順を引用しました。この記事では、以下について解説します。細かな権限設定による高セキュリティ3つの方法で設定する柔軟なアクセス制限S3バケット作成とファイルアップロードの方法S3バケット作成方法S3バケットへのファイルアップロード方法S3とは超お手軽に使える最強のストレージサービスS3は、AWSが提供するシンプルで信頼性の高いインターネットストレージサービスです。S3内に保存したコンテンツを「インターネット上に」配信する際に真の効果を発揮します。S3にはストレージの構築と運用のスキル&コストが不要ですWebサーバーやアプリケーションサーバーがコンテンツを保存・取得するための共有ストレージとしてS3を利用することには以下のメリットが存在します。RAID構成などの専門知識が無くても共有ストレージを構築可能$0.025/GBとコストが圧倒的に低い(2018/11/29時点|東京リージョン|標準ストレージの価格)ストレージ障害に強い保存可能なデータ総量は無制限これまで、堅牢な共有ストレージを構築・運用するには専門知識を持つエンジニアが不可欠でした。S3を使えば専門エンジニアがいなくとも信頼性の高いストレージ構築・運用が可能なので、従来のストレージに比べて上記のメリットが得られます。S3には主に2つの使い方があります。フロントエンドとして直接コンテンツ配信バックエンドとしてサーバーの構成情報やログファイルを保管S3の基本用語オブジェクト:S3へのアップロードするデータ(写真、動画、ドキュメントなど)とほぼ同義バケット:オブジェクトの入れ物S3の持つ4つの特徴S3が「超お手軽で最強のストレージサービスである」という評価は、これから述べる4つの特徴によって担保されています。高セキュリティ柔軟なアクセス制限99.999999999%の高耐久性S3は1つのリージョンにつき3ヶ所以上のデータセンターに複製を持つように設計されています。東京のデータセンターで障害が発生しても、残りの2拠点のデータセンターに保存されているデータによって、障害を全く気にせずに継続利用が可能です。オブジェクトの保存時に少しレイテンシが発生するのは、3ヶ所のデータセンターに複製しているからです。ファイルメンテナンスの手間を無くすライフサイクル管理機能S3をログファイルやバックアップファイルのアーカイブ先として利用する場合、ライフサイクル管理機能によって一定期間を過ぎたファイルを自動削除できます。旧式のログローテーションバッチは不要です。エンジニアはよりクリエイティブな仕事に集中できますね。細かな権限設定による高セキュリティデフォルトではバケットやオブジェクトの所有者にだけアクセス権限が与えられます。「所有者以外はアクセスできない」状態が基本となります。後述するACLの設定によって、「誰にアクセスを許可するか」を設定します。次の3つの方法でバケットやオブジェクトへのアクセス制限を設定可能です。ACL:Read/Write/FullControlなど従来のアクセス制限に似ており、馴染みのある設定方法。規定ACLも利用可能。パケットポリシー:Get/Put/Delete/ListのようにAPIのアクションベースで細かな制限が可能。IAMポリシー:IAMユーザー/グループ/ロールに対してのポリシーを設定可能。IAMポリシーについては以下の記事で解説しています。私はIAMポリシーによるアクセス制限を行なっています。CLIを使ってLambda用実行環...トラハックIAMの仕組みさえ知ってしまえば、初心者でも簡単に設定できるからだよ。S3バケット作成とファイルアップロードの方法S3の仕組みが分かったところで、早速バケットを作ってファイルをアップロードしてみましょう。あなたの初めての「S3オブジェクト」になります。S3バケット作成方法AWSコンソールにログインして[サービス]からS3を選択します。[バケットを作成する]をクリックします。バケット名とリージョンを選択します。リージョンはこだわりが無ければアジアパシフィック(東京)でOKです。オプションを設定します。今回は特にオプションを設定しませんが、簡単に解説をします。バージョニング:オブジェクトに変更を加えたり、同名ファイルをアップロードして上書いても、以前のデータを保持してくれます。サーバーアクセスのログ記録:バケットへのアクセスをログに記録します。オブジェクトレベルのログ記録:オブジェクトに加えられた変更のログを記録します。デフォルト暗号化:オブジェクトを自動で暗号化することでセキュリティをより強化します。アクセス許可の設定をします。デフォルトの推奨設定でOKです。最後に設定内容を確認して作成完了です。S3バケットへのファイルアップロード方法それではS3バケットにファイルをアップロードします。CLI(ターミナルからコマンドでAWSリソースの操作が可能な機能)を使った方法を説明します。CLIをインストールしていない方は、サクッとpipします。aws-cli以下コマンドで、カレントディレクトリ内にある任意のファイルをS3バケットにアップロードできます。s3://YOUR_BUCKET_NAMEYOUR_UPLOADING_FILE_NAME:あなたがアップロードしたいファイル名に変更YOUR_BUCKET_NAME:先ほど作成したバケット名に変更AWSコンソールからS3バケットの中身をのぞいてみましょう。私はdeploy_packages.zipという名前で作成したDockerイメージをS3バケットにアップロードしました。Lambda関数でDockerイメージをS3バケットから呼び出すことで、Lambdaでは利用できないライブラリを使うことができるからです。以上!トラハックお手軽×信頼できる×便利なストレージ「S3」を使い倒していこう!この記事のまとめS3は従来のストレージに比べて「タダ同然で熟練のストレージエンジニアを雇うこと」と同じ価値があるS3バケットにアップロードしたファイル(オブジェクト)は他のAWSサービスから簡単に呼び出して利用することができる。リモートOKなスタートアップでフロントエンド|搾取されないエンジニアを増やすために、キャリア論や転職を成功させる方法、勉強方法について発信しています。