0
0

More than 1 year has passed since last update.

ソリューションアーキテクト対策_S3あれこれ篇

Last updated at Posted at 2022-09-09

はじめに

試験勉強した際のメモを自分用に記事化。
内容は公式やBlack Beltの写経ですので目新しいことはありません:pray:

S3のライフサイクル管理

一定期間が経過したオブジェクトのストレージクラス変更や削除を自動的に行うルールを設定できる。

ex.アプリケーションのログをS3に蓄積、半年間は頻繁に確認するがそれ以降はほとんど利用しない。ただし取り出しは12h以内が望ましい。

設定方法

・バケット全体やPrefixに設定する
・オブジェクト更新日を基準にして日単位で指定し、毎日0:00UTCにキューを実行
・最大1000ルール
・IAに移動できるのは128KB以上のオブジェクト
・MFA Deleteが有効だと設定不可

設定例を3つほど

一定期間が経過後に自動アーカイブしたい場合は、S3(Standard)からGlacierへアーカイブするよう設定する

一定期間が経過後にで自動で安価な保存場所へデータを移動させたい場合は、S3(Standard)からS3(Standard-IA)に移動させる

一定期間が経過後に自動で削除したい場合は、S3(Standard)のデータを一定期間で削除するようライフサイクルを設定する

S3で静的なWebサイトを作る

S3にホスティングしてWebサイトを作る時のデメリット

httpsできない。ただしS3とCloudFrontを組み合わせれば実現できる。

静的なサイトのパフォーマンスを向上させたい時は

・Route53をS3の静的ウェブホスティングに設定する
・Route53を利用してエイリアスレコードを作成し、ドメインのホストゾーンに追加。S3バケットにマッピングする

S3のパフォーマンスを向上させるには

オブジェクトキー名に日付などのPrefixを利用する。
日付ベースでアップロードを分散することで、パフォーマンスを自動的に向上することができる。

S3の整合性

S3は強い整合性モデルを使用しているため、新規登録、更新、削除全てにおいて、反映に誤差が生じることはない。
オブジェクトの更新が同じキーで行われたとしても同じ。

S3のオブジェクト削除の対策

誤った操作による削除を防ぐためには、以下の対応が有効。

  • バケットのバージョニング機能を有効化する
  • 削除時にMFAを必須とするよう設定を行う(S3 MFA Delete)

データ削除を不可にする設定は、バケット作成時の初期設定でのみ可能。
IAMで制御もできるがロールとポリシーではなくIAMユーザーでのみ制御が可能。

S3のクロスリージョンレプリケーションについて

リージョン間を跨ぐクロスリージョンレプリケーションにより耐障害性を高める。

  • オブジェクトの作成・更新・削除をトリガーにレプリケーションを行う(GUI, CLIどちらでもおk)
  • 事前にバージョニング機能を有効にする必要がある
  • 双方向レプリケーションも可能。ただしデフォルトではない
  • データ通信費用が発生する

S3のストレージクラスを3種類(要暗記)

  • Standard
    重要性が低く、頻繁にアクセスするデータを大量に保存するのに向いてる。複数箇所にデータを複製する。デフォルトのやつ。

  • Standard-IA
    IAはInfrequency Accessの略。低頻度アクセスデータ向けのストレージクラス。
    OneZone-IAより重要かつアクセスが頻繁ではないマスターデータ向け。
    Standardより安価だがOneZone-IAよりは高い。Glacierよりも高い。取り出しは即時。

  • OneZone-IA
    単一箇所にデータを保存するためお安い。
    ログファイルやバックアップのコピーなどのマスターではない再生可能なデータを低価格に保存するのに向いている。取り出しは即時。

ちなみにGlacierのFlexible Retrivalとは通常のGlacierのことを指す。

  • RRS
    低冗長化ストレージのこと。現在は非推奨。

ストレージクラス分析とは

S3の適切なデータを適切なストレージクラスに移行したい場合は、ストレージクラス分析を使う。
ストレージアクセスパターンを分析し、適切なデータを適切なストレージクラスに移行すべきタイミングを判断できる。

S3 Access Analyzerとは

AWSアカウントの外部からアクセスできるリソースを特定し、解析するサービスのこと。

マルチパートアップロードAPIとは

ファイルを小分けにしてアップロードできるAPI。
S3へのアップロードの際にファイルが大きい場合は、マルチパートアップロードAPIを使うとファイルを小分けにしてアップロードできる。

S3の暗号化について。暗号化キー篇

  • SSE-S3
    S3で管理された暗号化キーにより実施されるサーバーサイド暗号化のこと。
    所有者であるAWSアカウントID以外からのアクセスを拒否する。暗号化と複合化をS3が自動で実施してくれる。

  • CSE(Client Side Encryption)
    ユーザーが独自の暗号化キーを利用して暗号化したオブジェクトをS3に保存して、暗号化キーの生成&管理はクライアントで実行する形式。

  • KMS
    暗号化キーの作成と管理をマネージド型サービスで提供する。AWSのサービス。

  • SSE-C
    ユーザーが管理する鍵により暗号化を実施する。ユーザーが用意した暗号化キーでSSE-Cを利用する形。

S3の暗号化について

S3バケットに対して暗号化キーによるサーバサイド暗号化を有効化すると、オブジェクトはS3バケットに保存される前に自動で暗号化され、アクセス時に複合される。
関連するログも暗号化されるので別途設定は不要。
もし設定が必要な場合はバケット作成後も追加で実行できる。

S3の暗号化が一部失敗してしまう時は

  • バケットポリシーの設定に問題がある
    例えば、
    「バケットポリシーでヘッダに暗号化情報がないPUTは拒否する」設定をしているなら、該当するヘッダを持つPUTはデータの暗号化に失敗する。

  • デフォルト暗号化を実施すると
    バケット全体が暗号化される。なので一部だけ暗号化するとかはできない。

  • SSE-KMSの暗号化キー指定に問題がある?
    仮に問題があったとしても、キー自体に問題がある場合は全体的な暗号化に失敗する。
    一部とかではない。

  • データ保存自体の障害で一部暗号化に失敗するとか?
    そういうのもない。この場合はデータ保存に失敗してPUTが停止している、とかになる。

S3のバケットポリシーでよく忘れること

s3:GetObjectは、オブジェクトの読み込み処理。
なのでこのポリシーがアタッチされていると静的ホスティングを有効化できる。

静的Webホスティングの実現順序

①ブロックパブリックアクセスを無効化する。パブリックなアクセスを有効にする。
②バケットポリシーでバケットの読み取り許可を設定する
③Index.htmlなどのインデックスドキュメントをバケットの内に保存する
④静的Webホスディングの設定画面でIndex.htmlなどのインデックスドキュメントを設定し、有効化する

S3で静的WebサイトをホストするときのURL(暗記)

バケット名が先頭に来る。それより後は固定。
https://bucket-name.s3-website-Region.amazonaws.com

S3のデータ保護について

オブジェクトをロックする機能があるのでそれを使う

S3のデータ解析について

以下のAWSサービスを用いてS3に格納されているデータの解析が可能。

  • S3 Select(Glacier Select)
    S3の内部機能。S3内で直接クエリを実行し、データを取得できる。
    S3内でシンプルなSQLを使用してオブジェクトからデータを抽出・検索・取得する。
    簡単なことが対象で、ビッグデータ分析とかはできない。

例:AアカウントのS3にBアカウントの利用を許可するには

IAMユーザーポリシー、バケットポリシーの両方が必要。
なので、

①IAMユーザーポリシーでS3へのアクセス権限を付与
②バケットポリシーでバケットのアクセス権をjsonで設定。IAMユーザーやBアカウントを指定する

この手順でBアカウントからAアカウントへのS3へアクセスし、ReadやWriteができるようになる。

また、以下の機能も存在する。
・ACL:オブジェクト単位でアクセス権を設定
・事前署名付きURL:インターネット上の第3者にURLを閲覧させることが可能
(AWS SDKで生成した事前署名付きURLで、S3オブジェクトURLにアクセスできる権利を一定期間付与する)

S3の容量について

容量は無制限。保存するオブジェクト数も無制限。
ただし1オブジェクトの最大サイズは5TBで、マルチパートアップロードを利用してS3にオブジェクトをアップロードする場合も最大サイズは5TB。

1つのPUT操作でアップロードできるオブジェクトの最大サイズは5GBなので混同しないこと。

おわりに

量多くて折れそうですが頑張る!

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0