はじめに
~AWS学習アウトプット第2弾~
AWS未経験者の私が学習したことをアウトプットし、将来的にはSAA合格を目指します。
今後も各サービスの学びを備忘として残していこうと思います!
今回は、 Amazon S3 の基本的な内容をまとめます。
内容が多いため、前編後編に分けて整理していきますので、よろしければ次回もご覧ください!
目次
・Amazon S3とは
・Amazon S3の特徴
拡張性(extensibility)
耐久性(Durability)・可用性(Availability)
・データ保存方法
・S3の機能
バージョニング
MFA Delete
ライフサイクルポリシー
オブジェクトロック
クロスリージョンレプリケーション
マルチパートアップロード
S3 Transfer Acceleration
S3のデータ整合性モデル
Webサイトホスティング
署名付きURL
・おわりに
・参考
Amazon S3とは
Amazon Simple Storage Service (Amazon S3) は、拡張性・耐久性・可用性に優れたオブジェクトストレージサービス です。
オブジェクトストレージとは、データを「オブジェクト」と呼ばれる単位で保存するストレージ形式です。メタデータや識別子も含まれ、効率的かつ柔軟にデータを管理することが可能です。
オブジェクトストレージとファイルストレージの違いについて、わかりやすい記載がありましたので、よろしければご覧ください。
Amazon S3の特徴
拡張性(extensibility)
・データ容量が無制限
ストレージが自動的に拡張・縮小するため
拡張性とは
システムやサービスが負荷や需要の増加に対してどれだけ効果的に対応できるかを示す性質
耐久性(Durability)・可用性(Availability)
・99.999999999%の耐久性(データを消失しない確率)
・デフォルトで同一リージョン内の3か所のAZに自動的に複製される
=障害発生時も稼働を継続できる
耐久性とは
データを消失しない確率
可用性とは
稼働率(システムやサービスが利用できる時間の割合)
データ保存方法
Amazon S3はオブジェクトストレージという説明をしましたが、そのオブジェクトは「バケット」というものに保存されます。
バケットとは
・Amazon S3 に保存されるオブジェクトのコンテナのこと
・バケットにはオブジェクトをいくつでも保存可能
・バケットはリージョン単位で作成
・デフォルトでは1アカウントにつき100バケットまで作成が可能
・バケットにはオブジェクトをいくつでも保存可能
・バケット名はグローバルで一意にする必要がある
S3の機能
バージョニング
Amazon S3 のバージョニングとは、同じバケット内でオブジェクトの複数のバリアントを保持する手段のことです。S3 のバージョニング機能を使用すると、バケットに保存されたすべてのオブジェクトのすべてのバージョンを、保存、取得、復元することができます。
:AWS公式サイトからの引用
・バージョニングはデフォルトでは無効
・有効にした場合、ストレージ使用量に応じた料金がかかる
MFA Delete
Amazon S3 バケットで S3 バージョニングを行うときに、MFA (多要素認証) Delete が有効になるようにバケットを設定すれば、セキュリティをさらに強化できます。この設定を行うと、バケット所有者は、特定のバージョンを削除したりバケットのバージョニング状態を変更したりするリクエストに、2 つの認証形式を含めることが必要になります。
:AWS公式サイトからの引用
・バケットのバージョニング状態を変更する・オブジェクトバージョンを完全に削除する際にMFA認証 (多要素認証)を求める機能
・バージョニング機能を使用していることが前提の機能
・誤操作や不正アクセスによるデータの損失を防ぐことが出来る
ライフサイクルポリシー
オブジェクトがライフサイクルを通じてコスト効率の高い方法で保存されるように管理するには、Amazon S3 ライフサイクルを設定します。S3 ライフサイクル設定は、Amazon S3 がオブジェクトのグループに適用するアクションを定義するルールのセットです。
:AWS公式サイトからの引用
・ストレージクラスの移行・オブジェクトの削除を設定した期間によって実行することが出来る機能
・ライフサイクルポリシーはデフォルトでは無効
・有効にすることで、ストレージコストを抑えることが出来る
オブジェクトロック
S3 オブジェクトロックは、Amazon S3 オブジェクトが一定期間または無期限に削除または上書きされるのを防ぐのに役立ちます。オブジェクトロックは、write-once-read-many (WORM) モデルを使用してオブジェクトを保存します。オブジェクトロックを使用して、WORM ストレージを必要とする規制要件を満たしたり、オブジェクトの変更や削除に対する保護レイヤーを追加したりできます。
:AWS公式サイトからの引用
・オブジェクトが意図的に改ざん・削除されることを防止する機能
①リーガルホールド(法定保留)
・保持期間の有効期限なし(明示的に削除するまで、維持される)
・権限(s3:PutObjectLegalHold)を持つユーザーのみ、オブジェクトの更新・削除、リーガルホールドの解除が可能
②リテンションモード(保持期間設定)
・保持期間を明示的に指定する
・リテンションモードには「ガバナンスモード」と「コンプライアンスモード」があり、どちらかを選択する
ガバナンスモード
・権限を持たないユーザーは、指定した保持期間中オブジェクトが読み取り専用になる
・権限を持つユーザーのみオブジェクトの更新・削除、ガバナンスモードの解除ができる
コンプライアンスモード
・ルートユーザーを含む全てのユーザーが、指定した保持期間中オブジェクトが読み取り専用になる
・モードの変更・保持期間の短縮はどのユーザーであっても行えない
・オブジェクトロックは、バージョニングされたバケットでのみ利用可能
・リーガルホールド・リテンションモードを並列して設定することも可能
・制御の強さは、コンプライアンスモード>ガバナンスモード
クロスリージョンレプリケーション
レプリケーション
レプリケーションを使用すると、Amazon S3 バケット間でオブジェクトを自動で非同期的にコピーできます。オブジェクトのレプリケーション用に設定されたバケットは、同じ AWS アカウント が所有することも、異なるアカウントが所有することもできます。オブジェクトは、単一または複数の送信先バケットにレプリケートできます。送信先バケットは、異なる AWS リージョン でも、ソースバケットと同じリージョン内でも配置することができます。
:AWS公式サイトからの引用
バケットのデータを異なるバケットへ自動的にコピーしたい場合に使用する機能
クロスリージョンレプリケーション
異なる AWS リージョン 内の Amazon S3 バケット間でオブジェクトをコピーするには、S3 クロスリージョンレプリケーション (CRR) を使用します。
:AWS公式サイトからの引用
・レプリケーション使用時は、バージョニングを有効にする必要がある
・異なるAWSアカウントが所有するバケットでも指定できる
マルチパートアップロード
マルチパートアップロードを使用すると、単一のオブジェクトをパートのセットとしてアップロードすることができます。各パートは、オブジェクトのデータの連続する部分です。これらのオブジェクトパートは、任意の順序で個別にアップロードできます。いずれかのパートの送信が失敗すると、他のパートに影響を与えることなくそのパートを再送することができます。オブジェクトのすべてのパートがアップロードされたら、Amazon S3 はこれらのパートを組み立ててオブジェクトを作成します。通常、オブジェクトサイズが 100 MB 以上の場合は、単一のオペレーションでオブジェクトをアップロードする代わりに、マルチパートアップロードを使用することを考慮してください。
:AWS公式サイトからの引用
単一のオブジェクトをパートといわれる複数のデータに分割して、アップロードする機能
・各パートはそれぞれ並列にアップロードされるため、アップロード時間を大幅に短縮できる
・オブジェクトサイズが 100 MB 以上の場合に使用することがされている
・バケットに一度にアップロードできる最大サイズは5GB
S3 Transfer Acceleration
Amazon S3 Transfer Acceleration は、クライアントと S3 バケットの間で長距離にわたるファイル転送を高速、簡単、安全に行えるようにするバケットレベルの機能です。Transfer Acceleration は、世界各地から S3 バケットへの転送速度を最適化するように設計されています。Transfer Acceleration は、Amazon CloudFront の世界中に点在するエッジロケーションを利用します。エッジロケーションに到着したデータは、最適化されたネットワークパスで Amazon S3 にルーティングされます。
:AWS公式サイトからの引用
クライアントとS3間の通信を高速化させることができる機能
・エッジロケーションとAWSネットワークを経由する
・遅延やデータ損失のリスクを減らすことができる
※エッジロケーション ... AZとは異なるAWSデータセンター、AZを上回る数の拠点がある
S3のデータ整合性モデル:Strong Consistency(強い一貫性)
新しいオブジェクトの書き込みが成功するか、既存のオブジェクトが上書きまたは削除されると、後続の読み取り要求は、オブジェクトの最新バージョンをすぐに受け取ります。また、S3 はリストオペレーションに強力な一貫性を提供するため、書き込み後、変更を反映したバケット内のオブジェクトのリストをすぐに実行できます。
:AWS公式サイトからの引用
データの追加・更新が行われた際は、直後から必ず追加後や更新後の状態が取得できる機能
※以前は結果整合性モデルだったため、データの更新・削除などの際にデータの一貫性が保証されていなかった。
Webサイトホスティング(静的Webサイトホスティング)
Amazon S3 を使用して、静的ウェブサイトをホストできます。静的ウェブサイトでは、個々のウェブページの内容は静的コンテンツです。ほかに、クライアント側スクリプトが含まれていることもあります。
:AWS公式サイトからの引用
バケットに保存している静的コンテンツ(HTMLやJPGなど)をサーバーを構築することなくWebサイトとして公開できる機能
署名付きURL
バケットポリシーを更新せずに、Amazon S3 内のオブジェクトへの時間制限付きのアクセス権を付与するには、署名付き URL を使用できます。署名付き URL をブラウザに入力するか、プログラムで使用してオブジェクトをダウンロードできます。署名付き URL で使用される認証情報は、URL を生成した AWS ユーザーのものです。
また、署名付き URL を使用して、Amazon S3 バケットに対する特定のオブジェクトのアップロードを他のユーザーに許可することもできます。これにより、他のユーザーは AWS のセキュリティ認証情報やアクセス許可を持たなくてもアップロードできます。署名付き URL で指定したのと同じキーを持つオブジェクトがバケット内に既に存在する場合、Amazon S3 は既存のオブジェクトをアップロードしたオブジェクトで置き換えます。
:AWS公式サイトからの引用
AWSアカウントを持っていないユーザーでも非公開設定されたオブジェクトに一時的にアクセスすることが可能になる機能
・作成したURLは有効期限日時まで複数回使用可能
・ユーザー認証機能はないため、URLの漏洩には注意が必要(誰でもアクセスできてしまう)
おわりに
今回はAmazon S3の基本的な内容を整理しました。
機能が多いですが、S3の問題はSAAでも多く出てくるので、注意が必要です。
次回は今回整理できなかったストレージクラスやアクセス制御等についてまとめようと思いますので、よろしければご確認ください。
*後編はこちら
参考
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area