SAA学習-S3-S3の用途
今回のテーマ:S3の用途
S3の用途
S3の用途としては、大量データを長期保存する観点より検討します。
用途の項目としては以下のものが挙げられます。
コンテンツ配信・保管
CMSから画像などのコンテンツデータの保管先にS3を利用します。
cf)CMS(Contents Management System):Webサイトのコンテンツを一元的に管理・運用
ログ、バッチの保管場所
ログファイルやバッチファイルの保存先にS3を利用します。
バックアップ/ディザスタリカバリ
バックアップの中長期保存先にS3を利用します。
WEBの静的ホスティング
S3のみで静的なWEBサイトをホスティングし、構築が可能です。
静的WEBホスティングのポイントは以下のものがあります。
- マネージメントコンソールでバケット単位を指定
- 独自ドメインをバケット名として指定
- 任意のドメインへのリダイレクト機能
- 異なるドメインからアクセス時CORS(Cross-origin Resorce Sharing)を利用
- CloudFrontとの連携(経由での配信処理を推奨)
cf)ホスティング:サーバーを間借りをする
データレイク
S3はデータレイクとしてデータ活用のハブとして利用できます。
データレイクの概要は以下の4ステップとなります。
1.データ収集(構造化データ、半構造化データ、非構造化データ)
2.データ蓄積(短期:RedShuift、中期:S3、長期:Glacier)
3.データ処理、活用(データマート、OLAP、ETL、Hadoopなど)
4.データ活用(BI/データ可視化、AI/機械学習分析、チャットボット/スマートスピーカー)
今回のテーマは以上です。
SAA学習-S3-S3の概要
今回のテーマ:S3の概要
主要サービスの公式資料
Amazon S3: docs.aws.amazon.com
概要
AWSストレージサービスには以下の種別があります。
種類 | 概要 |
---|---|
ブロックストレージ | ・EC2にアタッチし活用するディスクサービス ・ブロック形式でデータ保存 ・高速・広帯域幅 ・例:EBS、インスタンスストア |
オブジェクトストレージ | ・安価かつ高耐久性をもつオンラインストレージ ・オブジェクト形式でデータを保存 ・例:S3、Glacier |
ファイルストレージ | ・複数のEC2インスタンスから同時にアタッチ可能な共有ストレージ ・ファイル形式でデータ保存 ・EFS |
Sumple Storage Service(S3)
Sumple Storage Service(S3)は、ユーザがデータを容量制限なく保存可能なマネージド型で提供されるオブジェクトストレージとなります。
特徴
- 高い耐久性:99.999999999%
- 安価なストレージ:容量単価月額1GB/約3円
- スケーラブルで安定した性能:データは冗長化されて保存されデータ容量に依存しない性能がAWS側で保障
- 暗号化:転送中や保存時にデータを暗号化可能
データ保存形式
- バケット:オブジェクトの保存場所。場所はグローバルでユニークな必要あり
- オブジェクト:S3に格納されるファイルでURLが付与される。バケット内オブジェクト数は無制限
- データサイズ:データサイズは0KBから5TBまで保存可能
S3オブジェクト構成
- Key:オブジェクトの名前であり、バケット内のオブジェクトは一意に識別
- Value:データそのものであり、バイト値で構成される
- バージョンID:バージョン管理に用いるID
- メタデータ:オブジェクトに付随する属性の情報
- サブリソース:バケット構成情報を保存および管理するためのサポート提供
S3データ構造
S3データ構造は、バケット単位で保存スペースを区分し、オブジェクトでデータを格納します。
イメージ図は以下のようになります。
AWSストレージサービス
AWSストレージサービスは、S3の用途に応じてストレージタイプを選択します。
タイプ | 特徴 | 性能 |
---|---|---|
STANDARD | ・複数個所にデータを複製するため耐久性が非常に高い | ・耐久性:99.999999999% ・可用性:99.99% |
STANDARD-IA | ・スタンダートに比べて安価 ・データの読み出し容量に応じた課金 |
・耐久性:99.999999999% ・可用性:99.9% |
One Zone-IA | ・アクセス頻度は低いが、必要に応じてすぐに取り出すデータ向け | ・耐久性:99.999999999% ・可用性:99.5% |
RRS | ・Reduced Redundancy Storage低冗長化ストレージ ・Glacierから取り出したデータ配置等 |
・耐久性:99.99% ・可用性:99.99% |
Amazon Glacier | ・最安のアーカイブストレージ ・データ抽出にコストと時間(3~5時間)を要する ・ライフサイクルマネイジメントで指定 ・ボールロック機能でデータ保持 |
・耐久性:99.999999999% ・可用性:N/A |
S3 Intelligent-Tiering
S3 Intelligent-Tieringは、低頻度アクセスのオブジェクトを自動的に低頻度アクセス層へ移動することで、コスト削減を実現します。
イメージ図は以下のようになります。
S3(標準)の値段
時価によって変動するため、参考価格となります。
保存データ容量、データ取得リクエストおよびデータ転送アウトに応じて課金されます。
容量当たりの料金
- 最初の50TB/月:0.025USD/GB
- 次の450TB/月:0.024USD/GB
- 500TB/月以上:0.023USD/GB
データ取り出しリクエスト料金
データ転送料金
データ転送(イン)は無料
インターネットへのデータ転送(アウト)は以下通りとなります。
- 1GBまで/月 0.00USD(GB)
- 次の9.999TB/月 0.114USD(GB)
- 次の40TB/月 0.089USD(GB)
- 次の100TB/月 0.086USD(GB)
- 150TB/月 0.084USD(GB)
S3の整合性モデル
S3は高い可溶性を実現するため、データ更新・削除には結果整合性モデルを採用してます。
同時書き込みはタイプスタンプ処理を実施し実現します。
データ処理と整合性モデルについて以下のようになります。
データ処理 | 整合性モデル |
---|---|
新規登録 | ・Consistency Read ・登録後即時にデータが反映される |
更新 | ・Evantual Consistency Read ・更新直後はデータ反映に時間がかかる |
削除 | ・Eventual Consistency Read ・削除直後はデータ反映に時間がかかる |
S3のアクセス管理
S3のアクセス管理は用途に応じて方式を分けます。
S3はインターネットからパブリックアクセスの設定が可能となります。
管理方法と特徴は以下のようになります。
管理方法 | 特徴 |
---|---|
IAMユーザーポリシー | ・IAMユーザーに対しS3サービスへのアクセス権限を設定 ・一元的にユーザー権限を管理 |
バケットポリシー | ・バケットへのアクセス件をJSONで設定 ・他アカウントへの許可 ・バケット単位の高度なアクセス管理向け |
ACL | ・バケットと個々のオブジェクトへのアクセス権限をXMLで設定 ・他アクセスへの許可も可能 ・簡易的にアクセス管理向け |
署名付きURL | ・AWS SDKで生成した署名付きURLでS3オブジェクトへの一定時間アクセスを許可 |
S3の暗号化
S3へのデータ保管時に暗号化形式として、4つの形式から選択します。
暗号化方式と特徴は以下のようになります。
暗号化方式 | 特徴 |
---|---|
SSE-S3 | ・S3の標準暗号化方式で容易に利用可能 ・暗号化キーの作成、管理をS3側で自動実施 ブロック暗号の1つである256ビットのAdvanced Encyption Standard(AES-256)を使用しデータを暗号化 |
SSE-KMS | ・AWS KMSに設定した暗号化キーを利用した暗号化を実施 ・ユーザー側でAWS KMSを利用し暗号化キーを作成、管理することが可能 ・クライアント独自の暗号キーを利用可能 |
SSE-C | ・ユーザーが指定したキーによるサーバー側の暗号化(SSE-C)を使用することが可能 ・利用設定や管理が煩雑となる |
クライアントサイド暗号化(CSE) | ・クライアント側の暗号化では、Amazon S3に送信する前にデータを暗号化する方式 ・AWS KMSなどを利用し暗号化キーを作成、実施 ・アプリケーション内に保存したマスターキーを使用 |
S3アクセスポイント
S3アクセスポイントは、S3上の共有データセットを使用するアプリケーションへ大規模なデータアクセス管理が必要な際に実施します。
実現方法は下記の4つの機能を活用します。
- アクセスポイントを設定
- アクセス制限設定
- VPCアクセス制限設定
- アクセス管理の実行
S3アクセスアナライザー
S3アクセスアナライザーは、アクセスポリシーに沿っているか確認し、不正アクセスが発生してないか監視する機能となります。
ポイントは以下ようになります。
- IAMアクセスアナライザーに連動したS3向け機能
- バケットポリシー/ACLのモニタリング
- パブリックまたは共有バケットアクセスを検出
- バケットポリシー、バケットACLまたはその両方。バケットアクセスのソースを検索し確認する場合、この列の情報をまず使用し迅速で正確な是正措置を実行する
- すべてのパブリックバケットと共有バケットの結果を表示
- バケットの実施のアクセス状態を確認
ライフサイクル管理
ライフサイクル管理は、バケット内をオブジェクト単位でストレージ位すの変更や削除時期などを自動化します。
設定概要は以下となります。
- バケット全体やPrefixに設定
- オブジェクト更新日を基準に日単位で指定し、毎日0:00UTCにキューを実行
- 最大1000ルールまで設定可能
- IAに移動できるのは128KB以上のオブジェクト
- MFADeleteが有効だと設定不可
レプリケーション
リージョン間を跨ぐクロスリージョンレプリケーションにより耐障害性を高めます。 また、レプリケーションのトリガーや設定の条件は以下のようになります。
- レプリケーショントリガー
- 設定の条件
バージョン管理
バージョン管理は、ユーザーによる誤操作でデータ削除などが発生してもバージョンから復元できます。
また、S3のデータリストアとして活用され設定する概要は以下のようになります。
バックアップ
S3のバックアップ方式として、一定期間後にGlacierを利用しバックアップと復元が実施可能となります。
アーカイブ
S3のアーカイブ方式として、以下のようなものがあります。
- 複数リージョンでレプリケートすることが可能
- S3オブジェクトデータをライフサイクル設定によりGlacierへ移動
リストア
S3のリストア方式として、バージョン管理機能により削除されたデータを復元します。
利用状況の確認
S3の利用状況やS3イベント発生を確認します。
S3の分析
S3の分析として以下のものが挙げられます。
S3のイベント通知
S3のイベント通知は以下のものがあります。
S3データの解析
S3データの解析は、S3内のデータ検索、解析には用途に応じて複数サービスから選択可能となります。
分析サービスと特徴は以下のようになります。
分析サービス | 特徴 |
---|---|
S3 Select(Glacier Select) | ・S3の内部機能として有している検索機能で、S3内で直接クエリを実行しデータを取得 ・GZIP圧縮データやCSV、JSONに対して実行可能 |
Amazon Athena | ・Amazon S3内のデータを直接分析できるようにするインタラクティブなクエリサービス ・Athena SQLクエリでSagaMaker機械学習モデルを呼び出し、機械学習による推論も実行可能 |
Amazon Macie | ・機械学習によるAmazon S3の機密データ検出、分類、保護をするフルマネージド型サービス ・機密データ検出や調査を実施 |
Amazon RedShift Spectrum | ・Amazon S3の格納データに対し、Amazon Redshiftから直接クエリを実行できる機能 ・Redshiftクラスターが起動されている前提であるため、Redshiftを利用している場合活用 |
CORS
CORSはクロスオリジンリソースシェアリングの略で、
特定のドメインにロードされたアプリケーションが異なるドメイン内のリソースと通信する方法を定義になります。
マルチパートアップロード
マルチパートアップロードは、大容量オブジェクトをいくつかに分けてアップロードする機能となります。
ポイントは以下のようになります。
- ポイント
- 最大5TBのデータをアップロード可能
- 最大10000パートに分割
- 5MB~5GBまでの分割サイズを指定し、最後は5MB未満でも可能
- アップロードが失敗した場合
- パートデータが残る
- ライフサイクル管理でクリーンアップ設定が可能
バッチオペレーション
バッチオペレーションは、S3オブジェクトの大量データに対し、一括処理を実行(バッチ処理)を行います。
ジョブ
ジョブは、S3バッチオペレーションの機能の基本単位でとなります。
ポイントは以下のものがあります。
- オブジェクトのリストに対し、指定された操作を実行するために必要なすべての情報を登録
- S3バッチオペレーションにオブジェクトのリストを渡し、それらのオブジェクトに対し実行するアクションを指定
マニュフェスト
マニュフェストは、Amazon S3が作用するオブジェクトキーをリストするAmazon S3オブジェクトになります。
ポイントは以下のものがあります。
今回のテーマは以上です。
SAA学習-S3-S3の学習範囲
今回のテーマ:S3の学習範囲
S3の学習範囲
項目 | 概要 |
---|---|
S3の概要 | S3の基本的な機能や仕組み |
S3の用途 | S3の様々な活用方法についてユースケースを確認 |
S3バケットの作成と操作 | S3バケットを作成し、その操作方法や様々な設定方法 |
S3のバージョン管理 | S3のプロパティ機能の1つであるバージョニングを利用したバージョン管理 |
Intelligent tiering archiveの活用 | S3のIntelligent tiering archiveを利用したアーカイブ自動設定を実施 |
サーバーアクセスログの有効化 | S3のアクセスデータを取得する方法であるサーバーアクセスログを有効化 |
イベント通知の設定 | S3のイベントをトリガーとして実施する通知設定 |
Transfer Acceleration | S3バケットへの高速アクセスを可能にするTransfer Accelerationを有効化 |
リクエスタ支払いの有効化 | S3へのリクエスト側に課金を発生させる設定を有効化 |
静的ホスティングの活用 | S3のプロパティ機能の1つの静的ホスティングを利用したWEBサイトを構築 |
S3のライフサイクル管理 | S3のライフサイクルルールを設定し、期間に応じたストレージタイプの移動を可能にする |
EC2からS3ファイル取得 | EC2インスタンスからS3へ接続しデータを取得 |
AWS CLIの導入 | S3をコマンドラインから操作するため、AWS CLIをインストールし利用方法を確認 |
リージョン跨いだレプリケーション | リージョン間を跨いでデータのレプリケーションを実行する設定を行い確認 |
クロスアカウントアクセスの設定 | S3バケットに別アカウントからのアクセスを可能にする設定 |
オブジェクト所有者の変更 | 別アカウントからアップロードされたオブジェクトの所有者をバケット所有者に変更 |
ACLによるクロスアカウントアクセス設定 | ACLを利用した別アカウントからのアクセス設定を実施 |
CORSの設定 | 別ドメインからS3のWEBホスティングやオブジェクトへアクセスする設定を実施 |
インベントリ設定 | S3オブジェクトからインベントリを抽出するルールを設定 |
アクセスポイントの設定 | S3バケットに代わって個別にアクセス設定を行うアクセスポイントを追加 |
メトリクスの確認 | S3バケットのメトリクスを確認する設定や見方を確認 |
アクセスアナライザーの活用 | S3バケットへのポリシー設定に基づいたアクセス履歴を確認 |
ストレージレンズの活用 | S3全体の可視化を実施するストレージレンズを設定し、その見方を確認 |
S3外部接続 | S3と外部環境のとのデータ転送方式に係るサービスを確認 |
Amazon S3 Glacierの概要 | S3のストレージとして選択可能なGlacierサービスの確認 |
Amazon S3 Glacierの作成 | Glacierのボールトを作成し、実装の確認 |
本格的には次回のテーマからとなります。
補足: ちょっと誤記が多いため手直ししました。
SAA学習-EC2-小テスト
今回のテーマ:EC2-小テスト
設問1: EBSの特徴
回答: EBSはリージョンを跨いでスナップショットによる復元が可能
設問2: リザーブドインスタンスのコンバーティブルでは変更できるが、スタンダードで変更できないもの
回答: インスタンスのファミリー変更
設問3:
会社のセキュリティポリシーによりクラウドサーバーの物理領域を他部署と共有することが不可能とされる。
回答: Dedicated Host
設問4: セキュリティグループのデフォルト設定
回答: 全て同じセキュリティグループに割り当てられたインスタンスからのインバウンドトラフィックのみ許可されている
設問5: EBSスナップショットのS3へのバックアック形式
設問6: インスタンスストアの特徴
回答: EC2の一時的なデータが保持される
設問7:
多数のデータアクセスの発生するアプリケーション向けのWEBサーバーとしてEC2のインスタンスを利用したい。
最も高いI/O性能を実現するEBSボリュームタイプ
回答: プロビジョンドIOPS
設問8: EC2インスタンスを削除したときにEBSボリュームはどのようになるか
回答: 設定に応じて変更される
設問9: スナップショットの特徴で誤っているもの
回答: インスタンスストアに保存される
cf)正しいもの
設問10: AMIの特徴で誤っているもの
回答: EBSの復元にはスナップショットを利用する必要がある
cf)正しいもの
cf)構図: AMI>スナップショット>EBSボリューム
今回のテーマは以上です。
SAA学習-EC2-プレイスメントグループの活用
今回のテーマ:プレイスメントグループの活用
主要サービスの公式資料
プレイスメントグループ: docs.aws.amazon.com
概要
- 複数のインスタンスを論理的にグループ化しパフォーマンス向上や耐障害性を高める機能
プレスメントグループのタイプ
- 単一AZ内の複数インスタンスを論理的にグループ化し、パフォーマンスを向上させたり耐障害性を高める機能
種別名 | 概要 |
---|---|
クラスタープレイスメントグループ(頻出) | ・単一AZ内のインスタンスを論理的にグループ化した構造 ・同じリージョン内の複数のピアVPCにまたがることも可能 ・グループ内インスタンスはTCP/IPトラフィックのフローあたりのスループット上限が高くなり、インスタンス間通信が向上する ・低ネットワークレイテンシー、高いネットワークスループットを実現するアプリケーション向け |
パーティションプレイスメントグループ | ・EC2は各グループをパーティションと呼ばれる論理的なセグメントに分割した構成 ・プレイスメントグループ内の各パーティションにそれぞれ一連のラックがあり、プレイスメントグループ内のパーティション同士が同じラックを共有しない ・ラックを分離することで、アプリケーション内でのハードウェア障害による影響を軽減する |
スプレッドプレイスメントグループ | ・それぞれに独自のネットワークおよび電源がある異なるラックに別々に配置できるインスタンスグループ ・1つのAZ内で、スプレッドプレイスメントグループに配置された7つのインスタンスは7つの異なるラックに設置 ・小数の重要なインスタンスが互いに分離し保持できる。院スタンsが同じラックを共有する際、発生する可能性のある同時障害リスクを軽減する。 |
実際の手順
- マネイジメントコンソール-EC2-ネットワーク & セキュリティ-プレイスメントグループの順に選択し、プレイスメントグループを作成をクリック
- 名前、プレイスメント戦略、タグを設定し、グループの作成をクリック
- プレイスメントグループが作成されていることを確認
今回のテーマは以上です。
SAA学習-EC2-DLM(Data Lifecycle Manager)の利用
今回のテーマ:DLM(Data Lifecycle Manager)の利用
主要サービスの公式資料
Amazon Data Lifecycle Manager: docs.aws.amazon.com
概要
- EBSスナップショットとEBS-backed AMIの作成、保持、削除を自動的に実施
- 定期的なバックアップscheduleを実施しデータを保護
- 定期的に更新できる標準化されたAMIを作成
詳細:Amazon Data Lifecycle Manager - Amazon Elastic Compute Cloud
実際の手順
- マネージドコンソール-EC2-Btastic Block Store-ライフサイクルマネージャーの順に選択し、ライフサイクルポリシーを作成をクリック
- 以下の設定で取得対象と方法を決める
設定
- ポリシータイプ:EBSスナップショット
- リソースタイプ:ボリューム
- 説明:任意で記入
- タグを持つターゲット:Name:インスタンス名など
- ポリシータグ:Name:バックアップサイクル名など
cf)EBS-backed(ルートボリューム)があるディスク
- IAMポリシーはデフォルトのロールを指定
デフォルトロールの詳細:Amazon Data Lifecycle Manager - Amazon Elastic Compute Cloud
- ポリシースケジュールで取得する時間やサイクルを指定
時間指定はUTCのため日本時間の9時間前で実行されることを留意
- その他ポリシースケジュールの設定は任意
高速スナップショット:低レイテンシーで復元する場合使用
クロスリージョンコピー:別のリージョンへコピーを行う場合は有効化。コピーする場合は転送料金が発生
クロスアカウント共有:別AWSアカウントと共有する場合は有効化
- ポリシーの概要を確認後、ステータスをポリシーを有効化にするにチェックがある状態で、ポリシーの作成をクリック
今回のテーマは以上です。
SAA学習-EC2-Snapshotの利用
今回のテーマ:Snapshotの活用
概要
- EC2インスタンスからSpapshotを作成し復元を実施
- サーバーのバックアップ/リストア試験が業務ではあるパターンです。
実際の手順
- マネージドコンソール-EC2-Elastic Block Store-ボリューム-Snapshotを取得するボリュームを選択し、アクション-スナップショットの作成をクリック
- 説明とタグは任意で記入し、スナップショットの作成をクリック
- スタータスがpendingは準備中なので、completedに変更となったら利用可能となるため状態が確認
- 作成したスナップショットを選択し、アクション-ボリュームの作成をクリック
- タグは判別しやすい任意の値を記入し、ボリュームの作成をクリック
- 元のボリュームを一度デタッチ(外す)後に復元したボリュームをアタッチ(付与)を行う。
※復元時元のボリュームラベルは同様なものを定義する必要があるため、デタッチ前のボリュームラベルをコピーする
該当する箇所はアタッチ済みの情報の「/dev/xvda 」がコピーする値になります。
- 元のボリュームを選択し、アクション-ボリュームのデタッチをクリック
- 確認されたら、デタッチをクリック
- 復元したボリュームをインスタンスへアタッチするため、復元ボリュームを選択し、アクション-ボリュームのアタッチをクリック
- 起動確認後、パブリックIPをコピーしWEBアクセスが可能であるか確認する(自動起動の設定を失念してました。)
- 作成したスナップショットおよびボリュームを削除しておきます。
今回のテーマは以上です。
cf)脱線(ユーザーデータスクリプトの応用)
インスタンスを終了しているため毎回作り直す際に手間であるため、
ユーザーデータを活用し実装
- EC2の起動後ユーザーデータで下記のスクリプトを投入
#!/bin/bash # サーバーの設定変更 sed -i 's/^HOSTNAME=[a-zA-Z0-9\.\-]*$/HOSTNAME=web-sv/g' /etc/sysconfig/network hostname 'web-sv' cp /usr/share/zoneinfo/Japan /etc/localtime sed -i 's|^ZONE=[a-zA-Z0-9\.\-\"]*$|ZONE="Asia/Tokyo"|g' /etc/sysconfig/clock echo "LANG=ja_JP.UTF-8" > /etc/sysconfig/i18n # アパッチのインストール sudo yum update -y sudo yum install httpd -y # index.htmlファイルの作成 touch /var/www/html/index.html echo "<html><h1>hello world!</h1></html>" >> /var/www/html/index.html # apacheの再起動 sudo systemctl restart httpd # apacheの自動起動 systemctl enable httpd.service
- 起動しWEBのトップページが表示されることを確認