こんにちはヤク学長です。
☆この記事はAWSアソシエイトZERO3版を網羅しています☆
本記事の目的は、「アソシエイト試験に合格するため」または「合格した方が知識を思い出す」ことを目的としています。
【本記事のもくじ】
まず、AWSに真剣に取り組むための概要を解説します。
下記の方法で、簡単に概要を抑えることができます。
- 1.S3とはなにか?
- 2.S3の通信暗号化
- 3.S3のパフォーマンス
- 4.静的WEBホスティング
- 5.S3のライフサイクル管理
- 6.クロスオリジンリソースシェアリング(CORS)
- 7.S3データの解析
- 8.Amazon S3 Glacier
それでは、上から順番に見ていきます。
なお、本上記の方法を抑えれば成果が出ます。
今回からは「S3を全体的に学ぶ」として機能や特徴を学んでいきましょう。
基本的な機能や仕組みを理解し、S3について理解していきましょう。
記事の内容は「転載 & 引用OK」問題ありません。
- 1 1.S3とはなにか?
- 2 2.S3の通信暗号化
- 3 3.S3のパフォーマンス
- 4 4.静的WEBホスティング
- 5 5.S3のライフサイクル管理
- 6 6.クロスオリジンリソースシェアリング(CORS)
- 7 7.S3データの解析
- 8 8.Amazon S3 Glacier
1.S3とはなにか?
S3 (Simple Storage Service)は、Amazon Web Services (AWS)が提供するオブジェクトストレージサービスです。S3は、データの保存、バックアップ、アーカイブ、分析、およびデータの共有を行うためのスケーラブルなストレージシステムで、アプリケーションやウェブサイトなどで使用されます。 S3は、高可用性とスケーラビリティを提供し、データのセキュリティやコンプライアンスに対応しています。
バケットを作って利用していくことができます。
S3に保存されたデータの仕組み
S3は、オブジェクトベースのストレージシステムで、データは「バケット」と呼ばれる単位で管理されます。バケットは、S3上に作成され、それぞれに独自のアクセス権限と構成設定が割り当てられます。バケットには、複数のオブジェクトを保存することができ、それぞれのオブジェクトには、独自のメタデータやアクセス権限が割り当てられます。
S3は、データの保存に対して高い耐久性を保証しており、レプリカ化や自動バックアップなどの機能が提供されています。S3は、データを地理的に分散させ、自動的に冗長性を高めることで、データの整合性や可用性を高めます。
また、S3は、データを暗号化することができるので、セキュリティーにも優れています。
S3は、APIを使用して操作することができ、AWS SDKを使用することで、様々なプログラミング言語からS3を利用することができます。
S3のユースケース
Amazon S3は、様々な用途で利用されています。以下は一部の代表的なユースケースです。
- ファイルストレージ:S3を使用して、大量のファイルを保存し、ダウンロードすることができます。例えば、画像や動画などのメディアファイルを保存し、ウェブサイトから公開することができます。
- バックアップ:S3は、データのバックアップやアーカイブに適しています。S3は、データを自動的に冗長性を高めることで、データの整合性や可用性を高めます。
- クラウドストレージ:S3は、クラウドストレージとして利用することで、データを複数の場所に保存し、アクセスしやすくします。
- データ分析:S3は、データの分析に使用することができます。S3上に保存されたデータを、Amazon RedshiftやAmazon EMRなどのサービスと組み合わせて、分析することができます。
- オブジェクトのアーカイブ:S3には、S3 Glacierなどのサービスがあり、長期保存に適した低コストなストレージを提供します。
- データ共有:S3は、データの共有にも使用することができます。S3上に保存されたデータに対して、独自のURLを生成し、データを共有することができます。
S3ストレージの特徴
Amazon S3ストレージの特徴には以下のようなものがあります:
- オブジェクトベース: S3は、オブジェクトベースのストレージシステムで、データは「バケット」と呼ばれる単位で管理されます。
- 高可用性: S3は、データの保存に対して高い耐久性を保証しており、レプリカ化や自動バックアップなどの機能が提供されています。
- 地理的分散: S3は、データを地理的に分散させ、自動的に冗長性を高めることで、データの整合性や可用性を高めます。
- 暗号化: S3は、データを暗号化することができるので、セキュリティにも優れています。
- APIアクセス: S3は、APIを使用して操作することができ、AWS SDKを使用することで、様々なプログラミング言語からS3を利用することができます。
- スケールアウト: S3は、スケールアウトに対応しており、データ量が増加しても、スムーズに処理することができます。
- コスト効率: S3は、データの長期保存や冷たいデータなどにも対応し、低コストでデータを保存することができます
- フレキシブルなアクセス制御: S3は、アクセス権限をユーザー、グループ、またはパブリックに割り当てることができ、ファイルやフォルダごとにアクセス権限を設定することができます。
S3の構造
Amazon S3は、オブジェクトベースのストレージシステムで、次の構造になっています。
- バケット: S3の最上位の階層で、ユーザーが作成する単位です。バケット名は、グローバルに一意でなければならず、URLにも使用されます。
- オブジェクト: バケット内に保存されるデータの単位です。オブジェクトには、データ本体 (バイナリデータ) と、そのメタデータ (オブジェクトのタイプやサイズなどの情報) が含まれています。
- キー: オブジェクトを一意に識別するための文字列で、バケット内でのパスに相当します。
- メタデータ: オブジェクトに付加されるデータで、オブジェクトのタイプやサイズなどの情報を含みます。
- アクセス権限: S3は、アクセス権限をユーザー、グループ、またはパブリックに割り当てることができ、ファイルやフォルダごとにアクセス権限を設定することができます。
- レプリカ: S3は自動的に、バケット内のデータのレプリカを作成して、データの整合性や可用性を高めます。
バケットとは
Amazon S3のバケットは、オブジェクトを保存する最上位の階層の単位です。 ユーザーが作成し、オブジェクトを格納するためのコンテナーのような役割を持ちます。 各バケットは、グローバルに一意な名前を持ち、それを使ってURLを構成します。 例えば、S3のURLは、”https://バケット名.s3.amazonaws.com”のようになります。 バケットは複数のオブジェクトを保存でき、これらのオブジェクトは、バケット内でのパス (キー) によって識別されます。 また、バケットは、アクセス権限の設定やデータのバックアップなどの追加の機能を提供します。
バケットの命名規則
Amazon S3のバケットの命名規則は次のようになります。
- 名前は3文字以上、63文字以下である必要があります。
- 名前は、小文字の文字、数字、ハイフン (-) のみ使用できます。
- 名前は、文字、数字、ハイフン (-) 、ピリオド (.) の組み合わせで始まる必要があります。
- 名前は、文字、数字、ハイフン (-) 、ピリオド (.) の組み合わせで終わる必要があります。
- 名前には、ピリオド (.) を含めることはできません。
- 名前には、2つ以上の連続したハイフン (-) を含めることはできません。
- 名前は、S3のドメイン名、AWSのサービス名、その他のAWSリソース名と同じであってはならない。
また、Amazon S3は、グローバルに一意なバケット名を持つことが必要で、別のアカウントによって使用されているバケット名を使用することはできません。
オブジェクト
Amazon S3のオブジェクトは、S3上に保存されるデータの単位です。オブジェクトは、任意のデータ形式 (テキスト、画像、ビデオなど) を保存することができ、最大5TBのサイズを持つことができます。
各オブジェクトは、バケット内でのパス (キー) によって識別されます。また、オブジェクトには、メタデータ、アクセス権限などの追加情報が含まれます。
S3のオブジェクトには、主に下記のような用途があります。
- 静的なWebサイトのホスティング
- 大量のデータバックアップ
- アーカイブ
- ビッグデータ分析
- クラウドストレージ
- 動画ストリーミングなど
S3は高可用性、スケーラビリティ、そしてセキュリティーに優れているために、データを保存するための一般的なクラウドストレージサービスとして広く使用されています。
オブジェクトの構成
Amazon S3のオブジェクトは、以下の構成要素から成ります。
- キー (Key): オブジェクトのユニークな識別子で、オブジェクトが格納されるパスを示します。
- バリュー (Value): オブジェクトに格納される実際のデータです。
- コンテンツタイプ (Content-Type): オブジェクトのデータ形式を示します。例えば、画像なら「image/jpeg」、テキストなら「text/plain」などです。
- コンテンツ長 (Content-Length): オブジェクトのデータサイズをバイト単位で示します。
- アクセス権限 (ACL): オブジェクトに対するアクセス権限を示します。
- メタデータ (Metadata): オブジェクトに関連する追加情報を示します。例えば、画像の場合は、作成日時、解像度などが含まれます。
- ストレージクラス (Storage Class): オブジェクトに対するストレージクラスを示します。S3には、標準ストレージクラス、S3 Standard-IA、S3 One Zone-IA、S3 Intelligent-Tiering、S3 Glacierなどがあります。
- オブジェクトのバージョニング (Versioning): オブジェクトのバージョニングを示します。バージョニングが有効になっている場合、オブジェクトが更新されるたびに新しいバージョンが作成されます。
これらの構成要素を組み合わせることで、S3のオブジェクトが構成されます。
プレフィックスの利用
Amazon S3では、オブジェクトのキーにプレフィックスを使用することで、オブジェクトをグループ化し、管理することができます。プレフィックスは、オブジェクトのキーの最初に付けられる文字列で、フォルダのような役割を持ちます。
例えば、画像データを格納する場合、「images/」というプレフィックスを使用して、「images/image1.jpg」、「images/image2.jpg」などのようにオブジェクトを保存することで、画像データだけをまとめて管理することができます。
また、プレフィックスを使用することで、Amazon S3のリクエストを絞り込むことができます。例えば、「images/」というプレフィックスを使用して保存した画像データだけを取得するリクエストを送信することで、他のデータは取得しないようにすることができます。
プレフィックスは、オブジェクトのグループ分けや管理、リクエストの絞り込みなどに役立ちます。
オブジェクトキー
Amazon S3では、オブジェクトを一意に識別するために「オブジェクトキー」と呼ばれる文字列を使用します。オブジェクトキーは、バケット内で一意である必要があります。
オブジェクトキーは、オブジェクトが保存されるバケット名と、オブジェクトのファイル名を組み合わせた文字列です。バケット名は、Amazon S3上で一意である必要があります。オブジェクトのファイル名は、特に制限がないため、自由に決めることができます。
例えば、バケット名が「my-bucket」、オブジェクトのファイル名が「image1.jpg」の場合、オブジェクトキーは「my-bucket/image1.jpg」になります。
オブジェクトキーは、Amazon S3に保存されたオブジェクトを一意に識別するために使用されます。また、オブジェクトに対してアクセス権限を設定する場合にも使用されます。
S3のデータ容量制限
Amazon S3に保存できるデータ容量には、制限があります。
1つのオブジェクトの最大サイズは、5 TBです。これは単一のオブジェクトとして、S3にアップロードすることができる最大のサイズです。
バケットの中にあるオブジェクトの総数には、理論上は制限がありませんが、理由によっては制限があることもあります。
ただし、それに対して、Amazon S3には、バケットのストレージ容量に対する制限があります。それは、バケット毎に異なります。
その一般的に、低レベルのS3バケットについては、5TBまでのストレージ容量が利用できます。一方、高レベルのS3バケットは、かなり大きなストレージ容量が利用できます。
また、S3バケットには、データ転送速度に関する制限もあります。それは、S3バケットにアップロードされるデータの転送速度によって異なります。
バージョン管理
Amazon S3では、オブジェクトのバージョン管理機能を提供しています。この機能を使用すると、オブジェクトの複数のバージョンを保存し、過去のバージョンに戻すことができます。
バージョン管理を有効にするには、バケットに対してバージョン管理を有効にする設定を行う必要があります。バージョン管理が有効になっている場合、オブジェクトをアップロードするたびに、新しいバージョンが作成されます。
過去のバージョンに戻すには、そのバージョンのオブジェクトを選択し、「削除」を選択します。
ただし、バージョン管理を有効にすると、オブジェクトの新しいバージョンを保存するために、より多くのストレージ容量が必要になるため、ストレージ容量に注意する必要があります。
また、バージョン管理は、オブジェクトの保存履歴を維持し、過去のバージョンに戻すことができるため、データの復元や、オブジェクトの変更履歴を追跡するために使用することができます。
ストレージクラスの選択
Amazon S3では、データの保存に使用するストレージクラスを選択することができます。ストレージクラスには、以下のような種類があります。
- S3 Standard: 高い可用性と耐久性を持つ一般的なストレージクラス。
- S3 Intelligent-Tiering: 自動的にデータアクセスのパターンに応じて、適切なストレージクラスにデータを移動する。
- S3 Standard-IA: S3 Standard の低コストバージョン。データアクセスの頻度が少ないデータに適している。
- S3 One Zone-IA: S3 Standard-IA の低コストバージョン。データは特定のゾーンに保存される。
- S3 Glacier: 低コストなロングタームアーカイブ用ストレージクラス。
- S3 Glacier Deep Archive: S3 Glacier のさらに低コストなバージョン。
ストレージクラスの選択は、データアクセスの頻度や保存期間、コストなどに応じて選択する必要があります。
例えば、データアクセスの頻度が高いデータは、S3 Standard か S3 Intelligent-Tiering クラスを使用し、データアクセスの頻度が低いデータは、S3 Standard-IA か S3 One Zone-IA クラスを使用し、長期保存するデータは、S3 Glacier か S3 Glacier Deep Archive クラスを使用することができます。
Glacierで使われる3つのストレージタイプ
Amazon S3 Glacierは、データのロングタームアーカイブ用に提供されるストレージサービスで、以下の3つのストレージタイプを提供しています。
- S3 Glacier: 一般的なアーカイブ用ストレージタイプ。データの取得には数分から数時間かかることがあります。
- S3 Glacier Deep Archive: S3 Glacierよりも低コストなアーカイブ用ストレージタイプ。データの取得には数時間から数日かかることがあります。
- S3 Glacier Select: S3 Glacierに対して、データから特定の値を抽出するためのSQL likeクエリを実行できるストレージタイプ。
これらのストレージタイプは、データの保存期間や取得頻度、コストなどに応じて選択することができます。
S3の利用コスト
Amazon S3の利用料金は、データの保存容量やデータ転送量、リクエスト数などによって異なります。基本的には、以下のような要素によって計算されます。
- ストレージ: S3に保存されるデータのサイズに応じて請求されます。
- データ転送: S3からデータを取得するために必要なデータ転送量に応じて請求されます。
- リクエスト: S3に対するリクエスト数に応じて請求されます。
- 保存期間: S3に保存されるデータの保存期間に応じて請求されます。
また、AWSには、月額固定料金のプランや、予測可能なコストのためのプランもあります。詳細については、AWSの公式サイトなどで確認してください。
リクエスタ支払い
Amazon S3では、リクエスト数に応じて請求されることがあります。リクエストは、S3に対して行う操作に応じて異なります。
例えば、以下は一般的なリクエストの種類です:
- PUT, GET, LIST, DELETEなどのオブジェクト操作
- PUT, GET, LISTなどのバケット操作
- GETなどのアップロード/ダウンロード操作
- SELECTなどのS3 Select操作
S3では、1か月あたりの最大リクエスト数に制限があります。また、超過したリクエスト数に対しては、追加料金が発生することがあります。
詳細な料金については、AWSの公式サイトなどで確認することができます。
S3のアクセス管理
Amazon S3は、オブジェクトやバケットへのアクセスを管理するための豊富な機能を提供しています。これには、以下のようなものがあります。
- IAMポリシー: AWS Identity and Access Management (IAM)を使用して、特定のユーザーやグループに対して、S3のオブジェクトやバケットへのアクセス権限を付与することができます。
- オブジェクトアクセスポリシー: オブジェクトレベルでのアクセス権限を制御するために使用できる、S3独自のポリシー設定。
- バケットポリシー: バケット全体に対するアクセス権限を制御するために使用できる、S3独自のポリシー設定。
- クロスアカウントアクセス: 他のAWSアカウントからのアクセスを許可するために使用できる、S3独自の設定。
- S3 Access Points: S3のオブジェクトに対して、アクセスポイント(Access Point)を使用してアクセスを制御することができます。
これらの機能を使用することで、S3に保存されたデータに対して、厳密なアクセス制御を実現することができます。
S3バケットポリシー
Amazon S3のバケットポリシーは、バケット全体に対するアクセス権限を制御するために使用されます。バケットポリシーは、JSON形式で記述され、AWS Identity and Access Management (IAM)ポリシーと似た構文を使用しています。
バケットポリシーには、以下のような設定が含まれています。
- バケットへのアクセス権限: 誰がバケットにアクセスできるかを決定します。
- オブジェクトに対するアクセス権限: 誰がバケット内のオブジェクトにアクセスできるかを決定します。
- リソースに対するアクション: どのような操作ができるかを決定します。
- コンディション: アクセスを許可するための条件を指定します。
バケットポリシーは、AWS Management Console、AWS SDK、AWS CLIなどを使用して作成および管理することができます。
例えば、特定のIPアドレスからのみ、バケットに対するリードアクセスを許可し、特定のグループのユーザーからのみオブジェクトに対する書き込みアクセスを許可するような設定をすることができます。
S3アクセスポイント
Amazon S3アクセスポイントは、S3バケットに対するアクセスを制御するためのエンドポイントのことです。アクセスポイントは、特定のバケットに対して、独自のドメイン名を持つURLを提供し、そのURLを使用してバケットにアクセスすることができます。アクセスポイントを使用することで、バケットに対するアクセスを特定のIPアドレス、特定のAWSアカウント、特定のグループなどに制限することができます。
アクセスポイントは、AWS Management Console、AWS SDK、AWS CLIなどを使用して作成および管理することができます。
例えば、特定のIPアドレスからのみアクセスが許可されるアクセスポイントを作成し、そのアクセスポイントを使用してバケットにアクセスすることができます。また、アクセスポイントは、VPC内からのアクセスのみ許可するなど、アクセス制御の詳細な設定をすることができます。
ブロックパブリックアクセス
Amazon S3のブロックパブリックアクセスは、S3バケットやオブジェクトに対するパブリックアクセスを制限する機能です。これは、AWSアカウントのIAMポリシーやS3バケットポリシーで設定できます。
ブロックパブリックアクセスを設定することで、S3バケットやオブジェクトに対するパブリックアクセスを一括でブロックすることができます。これにより、誤ってパブリックアクセスを許可してしまったバケットやオブジェクトに対するセキュリティリスクを軽減することができます。
また、ブロックパブリックアクセスを設定した場合でも、特定のIPアドレスやAWSアカウント、VPCなどに対してはアクセスを許可することができます。これにより、必要なアクセスは許可しつつ、不要なアクセスを制限することができます。
事前署名付きURL
Amazon S3の事前署名付きURLは、S3オブジェクトに対して一定期間アクセスを許可するURLを生成する機能です。これにより、特定の期間だけアクセスを許可することができます。
事前署名付きURLを使用することで、S3オブジェクトに対するアクセスを制限することができます。例えば、特定のIPアドレスやAWSアカウントにだけ、一定期間だけアクセスを許可することができます。
また、事前署名付きURLは、S3オブジェクトをウェブページやアプリケーションなどで公開する際にも使用することができます。これにより、S3オブジェクトに対するアクセスを制限しながら、オブジェクトを公開することができます。
事前署名付きURLを作成するためには、AWS SDK や AWS CLI を使用してプログラムから生成することができます。
2.S3の通信暗号化
Amazon S3は、データ転送やデータ保存の時に暗号化を提供しています。これにより、データが漏洩したり、不正にアクセスされる可能性を防ぐことができます。
S3では、データ転送時にTransport Layer Security (TLS) を使用して暗号化し、データ保存時には、Server-Side Encryption (SSE) を使用して暗号化することができます。
SSEでは、S3がデータを暗号化し、鍵を管理します。SSE-S3、SSE-KMS、SSE-C の3つの暗号化オプションがあります。
また、クライアント側で暗号化を行ってから、S3にアップロードすることもできます。これには、クライアント側暗号化 (CSE) を使用することができます。
S3の暗号化機能は、データ保護やコンプライアンス要件を満たすために必要な機能であり、適切に設定することで、データのセキュリティを強化することができます。
S3の保管データの暗号化
Amazon S3では、データ保管時の暗号化に、Server-Side Encryption (SSE) を使用することができます。
SSEでは、S3がデータを暗号化し、鍵を管理します。SSE-S3、SSE-KMS、SSE-C の3つの暗号化オプションがあります。
SSE-S3は、Amazon S3がデータを暗号化するために使用する一時的な鍵を使用します。
SSE-KMSは、AWS Key Management Service (KMS) を使用して、鍵を管理することで、データの暗号化を行います。これにより、鍵の管理やローテーションなどを簡単に行うことができます。
SSE-Cは、クライアント側で指定した鍵を使用して、データを暗号化することができます。
これらの暗号化オプションを使用することで、S3上のデータを保護し、コンプライアンス要件を満たすことができます。
暗号化リクエスト
Amazon S3では、データ転送時の暗号化に、Encryption in Transit (EiT) を使用することができます。 EiTは、クライアントからS3へのデータ転送、S3からクライアントへのデータ転送、S3間のデータ転送を暗号化します。
EiTでは、HTTPSプロトコルを使用することで、データ転送中に暗号化を行います。HTTPSは、Transport Layer Security (TLS) を使用して、通信を暗号化するためのプロトコルです。
また、Amazon S3 Transfer Acceleration を使用することで、AWS Edge Locationsを経由した高速なデータ転送を行うことができます。これにより、遠隔地からS3へのデータ転送を高速化することができます。
これらの暗号化オプションを使用することで、S3へのデータ転送を保護し、コンプライアンス要件を満たすことができます。
SSE-S3
SSE-S3 (Server-Side Encryption with Amazon S3-Managed Keys)は、Amazon S3が管理する暗号化キーを使用して、オブジェクトデータを暗号化する方法です。SSE-S3では、Amazon S3がデータを暗号化し、データを保存する際に暗号化キーを使用します。これにより、オブジェクトデータの暗号化を簡単に実現することができます。
SSE-S3では、AES-256暗号化アルゴリズムが使用され、暗号化されたデータは、S3上に保存され、それを取得するためには、有効な認証情報が必要です。
SSE-S3を使用することで、オブジェクトデータを暗号化し、データの保護やコンプライアンス要件を満たすことができます。また、SSE-S3を使用することで、データを取得する際に手動で暗号化・復号処理を行う必要がなくなり、開発効率が向上します。
SSE-KMS
SSE-KMS (Server-Side Encryption with AWS Key Management Service) は、Amazon S3が提供する、AWS Key Management Service (KMS)を使用して、オブジェクトデータを暗号化する方法です。SSE-KMSでは、KMSが管理する暗号化キーを使用して、オブジェクトデータを暗号化します。
SSE-KMSでは、AES-256暗号化アルゴリズムが使用され、暗号化されたデータは、S3上に保存され、それを取得するためには、有効な認証情報が必要です。
SSE-KMSを使用することで、オブジェクトデータを暗号化し、データの保護やコンプライアンス要件を満たすことができます。また、SSE-KMSを使用することで、暗号化キーの管理をKMSに委譲することができ、セキュリティの管理がより簡単になります。
SSE-KMSでは、暗号化キーの作成、管理、使用に関する権限を制御することができ、権限を持つユーザーだけがデータを取得できるようになります。
CSE
CSE (Client-Side Encryption) は、クライアント側でデータを暗号化し、それをAmazon S3に保存する方法です。 CSEでは、クライアントが自分で暗号化アルゴリズムを選び、暗号化キーを作成し、データを暗号化し、それをS3に保存します。
CSEを使用することで、オブジェクトデータを暗号化し、データの保護やコンプライアンス要件を満たすことができます。また、CSEを使用することで、クライアントが暗号化キーを管理するため、暗号化キーの管理を簡単にすることができます。
CSEでは、暗号化キーの作成、管理、使用に関する権限を制御することができ、権限を持つユーザーだけがデータを取得できるようになります。
ただし、CSEを使用する場合、クライアント側での暗号化、復号の処理が必要になるため、性能面や運用コストに関してはSSE-S3, SSE-KMSよりも負担がかかることがある。
S3 MFA Delete
S3 MFA Deleteは、マルチファクタ認証(MFA)を使用してS3バケットまたはオブジェクトを削除する機能です。これにより、S3バケットやオブジェクトを削除するためには、MFAデバイスとMFAコードが必要になり、セキュリティが強化されます。この機能は、AWS Management Console、AWS SDK、AWS CLIなどを使用して実行することができます。
オブジェクトロック
S3のオブジェクトロックは、オブジェクトの不変性や保護を保証するための機能です。これにより、特定のオブジェクトを削除や編集から保護することができます。
オブジェクトロックには、下記の2つのタイプがあります。
- Governance Mode: 特定の期間内にオブジェクトを削除や編集から保護します。
- Compliance Mode: 永続的にオブジェクトを削除や編集から保護します。
オブジェクトロックを使用するためには、S3バケットのバケットポリシーにオブジェクトロックの設定を追加し、オブジェクトに対してオブジェクトロックを有効にする必要があります。
S3イベント
S3のイベントは、S3バケット内のオブジェクトに対して発生する様々なアクションをトリガーにして、AWS Lambda関数やAmazon SNSトピック、AWS SQSキューなどのサービスに対してアクションを実行するための機能です。
S3イベントのトリガーになるアクションには、下記のようなものがあります。
- オブジェクトの作成、更新、削除
- オブジェクトのアップロード、ダウンロード、コピー
- オブジェクトのアクセス
S3イベントを利用することで、オブジェクトに対して自動的にバックアップを取る、オブジェクトの変更を検知して処理を実行する、など様々な用途があります。
3.S3のパフォーマンス
S3は、高可用性、スケーラビリティ、および低遅延を保証するために設計されています。
S3のパフォーマンスは主に下記の要素によって決まります。
- リージョン: S3のデータは、全世界に分散されているため、データを取得するために最も近いリージョンを選択することでパフォーマンスが向上します。
- ストレージクラス: S3には、データの使用頻度に応じて異なるストレージクラスを選択することができ、それぞれのストレージクラスには異なるパフォーマンスがあります。
- データ転送量: S3には、データ転送量に応じて異なる料金が設定されています。大量のデータを転送する場合は、AWS Direct Connectを利用するなど、コスト削減につながる方法を検討することが望ましいです。
- アクセスパターン: S3は、ランダムアクセスに適していますが、シーケンシャルアクセスには適していないので、アクセスパターンに合わせて適切なストレージクラスを選択することが望ましいです。
また、S3にはS3 Select、S3 Inventory、S3 Analyticsなどの機能があり、これらを利用することで、S3のパフォーマンスを向上させることができます。
パフォーマンス向上
S3では、複数のオブジェクトを一度にアップロードする際に、カスタムプレフィックスを利用することで、並列処理を行うことができます。
カスタムプレフィックスを利用することで、複数のオブジェクトを一度にアップロードする際に、S3が自動的にオブジェクトを分散し、並列してアップロードすることができます。
これにより、アップロードの速度を向上させることができます。 また、S3には「多分散アップロード」という機能もあり、大きなファイルを分割してアップロードすることで、アップロードのスループットを最大化することができます。
S3の上記の機能を利用することで、アップロードのスループットを最大化し、パフォーマンスの向上が期待できます。
S3整合性モデル
Amazon S3は、事前に定義された整合性モデルを使用して、オブジェクトの一貫性を維持します。 S3の整合性モデルには、以下の2つがあります。
- 強制一貫性(Eventual consistency): これは、S3のデフォルトの整合性モデルで、オブジェクトが更新されると、すぐにすべてのS3のデータセンターに反映されることを保証しません。 しかし、一定時間が経過すると、すべてのデータセンターにおいてオブジェクトが一致するようになります。
- 強制一貫性(Strong consistency): これは、オブジェクトが更新されるとすぐにすべてのS3のデータセンターに反映されることを保証する整合性モデデルです。 これは、特定のAPI呼び出しを使用して有効にする必要があります。
カスタムプレフィックスを利用して並列処理するには、S3のバケットに対して複数のプレフィックスを作成し、それぞれのプレフィックスに対して並列処理を実行することができます。 これにより、一つのバケット内で複数のワークロードを処理することができ、パフォーマンスを改善することができます。
アップロード時のデータ整合性の確認
S3は、アップロード時にデータ整合性を確認するために、CRC32CとMD5ハッシュ値を使用します。CRC32Cは、データのチェックサムを計算するために使用され、MD5ハッシュ値は、データが破損していないかどうかを確認するために使用されます。
これらの値は、クライアントとS3の間で交換され、アップロードされたデータが正常かどうかを確認します。 また、S3は、アップロードされたオブジェクトのコピーを自動的に作成し、データの保存先によって適切なストレージクラスを選択し、高可用性とデータ保護を提供します。
マルチパートアップロード
S3のマルチパートアップロードは、大きなオブジェクトのアップロードを複数の部分に分割し、同時にアップロードすることができる機能です。これにより、アップロードの速度が向上し、アップロード中に途中で失敗した場合にも、途中から再開することができます。また、S3はマルチパートアップロードのパフォーマンスを最適化するための設定も提供しています。
S3 Transfer Acceralation
S3 Transfer Accelerationは、Amazon S3へのデータ転送を高速化するためのサービスです。 これは、AWSのEdge Locationsを使用して、S3へのアップロードやダウンロードを高速化するために独自のプロトコルを使用しています。 Transfer Accelerationを使用すると、S3に対するデータ転送速度が大幅に向上し、遠隔地からのアップロードやダウンロードが高速化されます。 S3 Transfer Accelerationを使用するには、S3バケットに対して独自のエンドポイントを指定し、そのエンドポイントを使用してデータを転送する必要があります。
4.静的WEBホスティング
S3は、静的なWebサイトをホスティングするためにも利用できます。
静的Webサイトは、HTML、CSS、JavaScriptなどのクライアントサイドの言語で構築され、サーバーサイドで動的に生成されるコンテンツがないサイトです。
S3を使用すると、Webサイトのファイルを保存し、それらのファイルをWeb上で公開することができます。S3バケットをWebサイトとして設定することで、S3上のオブジェクトを直接Webブラウザから参照することができるようになります。
また、CloudFrontを組み合わせることで、高速な配信とセキュリティー対策を実現することも可能です。
静的WEBホスティングの手順
- Amazon S3にバケットを作成し、そのバケットを公開可能に設定します。
- 静的WebサイトのHTML、CSS、JavaScriptなどのファイルをアップロードします。
- バケットのプロパティを開き、「静的Webサイトホスティング」を有効にします。
- インデックスドキュメントとエラードキュメントを設定します。
- アップロードしたファイルのパブリックアクセス権限を設定します。
- バケットのURLを使用してWebサイトを公開します。
Route53によるドメイン設定
Amazon Route 53は、DNS(ドメインネームシステム)サービスです。これにより、S3バケットに静的Webサイトをホストするために、ドメイン名を設定することができます。
手順は次のとおりです。
- Route53にサインインし、新しいホストゾーンを作成します。
- 作成したホストゾーンに、ドメイン名を追加します。
- S3バケットに静的Webサイトをホストするように設定します。
- S3バケットのエンドポイントURLを取得し、Route53のホストゾーンにCNAMEレコードを作成します。
- 作成したCNAMEレコードを、ドメイン名の解決に使用するように設定します。
- ウェブサイトを公開し、作成したドメイン名でアクセスできることを確認します。
これにより、S3バケットに静的Webサイトをホストし、Route53を使用してドメイン名を設定することができます。
5.S3のライフサイクル管理
S3のライフサイクル管理は、S3バケット内のオブジェクトのライフサイクルを管理するための機能です。これにより、S3バケット内のオブジェクトの有効期限を設定し、それが過ぎた場合に自動的に削除することができます。また、一定期間経過後に自動的にストレージクラスを変更することもできます。これにより、保存期間が終了したデータを自動的にアーカイブすることができ、コストを削減することができます。
S3のライフサイクル管理のパス
S3のライフサイクル管理には、以下のようなパスがあります。
- S3バケットを作成します。
- ライフサイクルルールを作成します。これは、特定のオブジェクトに対して、特定の期間後に何をするかを指定するものです。
- ライフサイクルルールをバケットに適用します。
- ライフサイクルルールが適用されたら、指定された期間が経過したオブジェクトは、S3から自動的に削除されるか、またはアーカイブされます。
これによって、S3ストレージのコストを削減することができます。
S3のレプリケーション
S3のレプリケーションは、S3バケット内のオブジェクトを複数の場所に複製し、高可用性や地理的分散性を提供するための機能です。S3には、自動的にオブジェクトを複製する「S3レプリケーション」と、手動でオブジェクトを複製する「Cross-Region Replication」の2つのタイプがあります。 S3レプリケーションは、指定されたバケット間でのオブジェクトの自動複製を行います。Cross-Region Replicationは、複数のバケット間でのオブジェクトの複製を手動で行うことができます。
SRRとCRRの違い
S3のレプリケーションには、S3バケット間のデータ転送の方法によって、S3バケット間転送 (S3 Bucket Replication, SRR) とクロスリージョン転送 (Cross-Region Replication, CRR) があります。
- SRRは、S3バケット間でのデータ転送を行うために使用されます。これにより、同じリージョン内の複数のバケット間でデータを転送することができます。
- CRRは、異なるリージョン間でのデータ転送を行うために使用されます。これにより、異なるリージョン間でデータを転送することができます。
SRRは、同じリージョン内のバケット間でデータ転送を行うため、転送速度が速く、一般的に低コストである。CRRは、異なるリージョン間でデータ転送を行うため、転送速度はやや遅く、一般的に高コストである。
S3のクロスアカウントアクセス
S3のクロスアカウントアクセスとは、別のアカウントのS3バケットに対して、自分のアカウントからアクセスすることを指します。これを実現するためには、アクセス権限を付与することが必要です。これは、バケットポリシーやIAMロールを使って実現することができます。
S3のクロスアカウントアクセスでは、他のアカウントからのアクセスを許可するために、以下のような設定を行うことができます。
- S3バケットポリシー: 他のアカウントからのアクセスを許可するために、バケットポリシーを使用してアクセス権限を設定します。
- IAMロール: 他のアカウントからのアクセスを許可するために、IAMロールを使用してアクセス権限を設定します。
- S3のクロスアカウントリソース共有: 他のアカウントからのアクセスを許可するために、S3のクロスアカウントリソース共有を使用してアクセス権限を設定します。
- 事前署名付きURL: 他のアカウントからのアクセスを許可するために、事前署名付きURLを使用してアクセス権限を設定します。
- S3のアクセスポイント: 他のアカウントからのアクセスを許可するために、S3のアクセスポイントを使用してアクセス権限を設定します。
オブジェクト所有者
S3のオブジェクトには所有者が存在します。これは、オブジェクトを作成したアカウントまたはIAMユーザーのアカウントIDによって識別されます。オブジェクト所有者は、そのオブジェクトに対して実行できる操作を制御するために使用されます。例えば、オブジェクト所有者は、そのオブジェクトを削除する権限を持っています。また、オブジェクト所有者は、そのオブジェクトに対するアクセス権を他のアカウントやIAMユーザーに委譲することもできます。
6.クロスオリジンリソースシェアリング(CORS)
クロスオリジンリソースシェアリング (CORS) は、Webブラウザ上で実行されるJavaScriptによって、異なるオリジンのWebサイトからのリソース (例えば画像やAPI) の利用を許可するための仕組みです。CORSは、Webサーバ側が、どのオリジンからのリクエストを許可するかを定義することで、クロスサイトスクリプティング (XSS) の攻撃を防ぐことができます。
CORSは、Webサーバにアクセスを試みるWebブラウザが、オリジンに対して特定のHTTPヘッダ (例えば Origin) を送信することで動作します。Webサーバは、これらのヘッダを見て、リクエストを許可するか拒否するかを決定します。
手順としては、WebサーバにCORSに対応した設定を行い、アクセスを許可するオリジンを指定します。具体的には、HTTPレスポンスヘッダに “Access-Control-Allow-Origin” というヘッダを追加し、どのオリジンからのアクセスを許可するかを指定します。
注意点としては、CORSの設定は、Webサーバ側で行う必要があるため、S3だけではCORSの設定はできません。また、CORSの設定は、安全上の意味でも重要なため、適切に設定を行うようにしましょう。
S3の利用状況分析
S3の利用状況分析には、Amazon S3 AnalyticsとAmazon S3 Inventoryが利用できます。
Amazon S3 Analyticsは、S3バケット内のオブジェクトアクセスデータを収集し、グラフやレポートを生成することで、S3バケットの利用状況を分析することができます。これにより、S3バケットの使用率やトラフィックなどを確認することができます。
Amazon S3 Inventoryは、S3バケット内のオブジェクトの一覧を取得し、CSVやORCなどのフォーマットで提供することで、S3バケットの中身を確認し分析することができます。これにより、バケット内のオブジェクトの数やサイズ、最終アクセス日などを確認することができます。
これらの機能を利用することで、S3の利用状況を把握し、最適な使い方を見つけることができます。
サーバーアクセスログ
S3のサーバーアクセスログは、S3バケットに対して実行されたすべてのアクセス操作を記録するためのログです。これには、オブジェクトへのアクセス、オブジェクトの作成や削除、およびバケットに対する操作も含まれます。これらのログは、AWS S3のコンソール、AWS CloudTrail、およびAWS S3のAPIを使用して取得、分析、および処理することができます。これにより、S3リソースの利用状況を確認し、セキュリティ上の問題を解決するための可視性を提供します。
S3アクセスアナライザー
S3アクセスアナライザーは、S3バケット内のオブジェクトに対するアクセスログを分析する機能です。アクセスログには、S3バケットに対するリクエストの情報が記録されており、これを元に、オブジェクトアクセスのパターンやトラフィック量などをグラフ化したり、カスタムメトリックを作成したりすることができます。これにより、S3の利用状況を理解し、利用状況に応じた設定変更や、不要なコストの発生を防ぐことができます。
ストレージクラス分析
S3 Storage Class Analysisは、S3のストレージクラスによるデータの移行に関する情報を提供することで、S3のストレージ費用を最適化することができる機能です。この機能を使用することで、S3のデータアクセスパターンを分析し、適切なストレージクラスに移行することができます。これにより、S3のストレージ費用を最小限に抑えることができ、データの保存期間やアクセス頻度に応じた最適なストレージクラスを選択することができるようになります。
S3 Storage Lens
S3 Storage Lensは、S3ストレージに関する洞察力を提供するサービスです。それは、S3ストレージ使用状況、コスト、パフォーマンスなどのデータを収集し、分析し、可視化することで、S3ストレージを最適化するための洞察力を提供します。S3 Storage Lensにより、S3ストレージの利用状況を確認し、不要なデータを削除し、コストを削減することができます。また、S3ストレージのパフォーマンスを最適化するために、S3 Storage Lensは、S3ストレージクラスの利用状況、アクセスパターン、アクセスログなどの情報を提供します。
7.S3データの解析
S3データ分析は、S3バケット内のデータを分析し、ビジネスインサイトを抽出するためのツールです。S3データ分析を使用することで、S3バケット内のデータを可視化し、可視化されたデータから洞察力を得ることができます。S3データ分析は、Amazon Athena、Amazon Redshift Spectrum、Amazon EMRなどのAWSサービスと統合することで、S3バケット内のデータを簡単に分析することができます。また、S3データ分析は、AWS Glue、AWS Lake Formationなどのサービスと統合することで、データカタログ、ETL、データ湖の構築を簡単にすることができます。
S3 Select
S3 Selectは、Amazon S3オブジェクト内のデータのサブセットを選択するためのサービスです。これにより、必要なデータだけを取得し、帯域幅やコストを節約することができます。S3 Selectを使用するには、対象のオブジェクトに対してSQLクエリを実行し、結果として得られるサブセットデータを返すことができます。S3 Selectは、複数のフォーマット(CSV、JSON、Parquetなど)に対応しており、AWS LambdaやAmazon AthenaなどのAWSサービスと組み合わせることで、データ分析ワークフローを構築することができます。
Amazon Athena
Amazon Athenaは、サーバーレスのインタラクティブなクエリサービスで、S3上のデータを分析するために使用できます。Athenaは、SQLを使用してデータを検索し、取得し、分析できるため、ビジネスインテリジェンスツールやデータウェアハウスと同じように利用することができます。Athenaは、データフォーマットがParquet、ORC、JSON、CSVなどであっても、データを検索することができます。また、Athenaは、AWS Glue Data Catalogを使用して、データカタログを管理することができます。
Amazon Macie
Amazon Macieは、S3に格納されているデータのセキュリティとコンプライアンスを確認するためのサービスです。 Macieは、自動的に個人情報や機密データを検出し、それらが適切に保護されているかどうかを確認します。また、不正アクセスや内部的なリスクからデータを保護するための機能も提供します。
Redshift Spectrum
Amazon Redshift Spectrumは、Amazon Redshiftのクエリエンジンを使用して、S3に保存されたデータに対して分析を実行するサービスです。Redshift Spectrumを使用することで、Redshiftクラスターに保存されていない大量のデータをもとに分析を実行することができます。また、S3に保存されたデータを、Redshiftクラスターに保存したデータと同じように、SQLを使用して操作することができます。これにより、S3上に保存されたデータを分析するためのスキルやインフラを持っているデータエンジニアやデータサイエンティストが、簡単に分析を実行できるようになります。
8.Amazon S3 Glacier
Amazon S3 Glacierは、データアーカイブサービスです。低コストで大量のデータを保存でき、後で取り出すことができます。データは自動的に冷凍され、取り出すときには復元が必要になります。復元には数分から数時間かかります。S3 Glacierは、法的要件や企業政策に基づく長期アーカイブなどに適しています。
特徴
Amazon S3 Glacierは、AWSのクラウドストレージサービスの一つで、長期にわたるデータアーカイブやバックアップに使用することができます。特徴としては、以下のようなものがあります。
- 低コスト: S3 Glacierは低コストで、データアーカイブやバックアップに最適なストレージクラスです。
- 安全性: S3 GlacierはAES-256暗号化によってデータを暗号化し、保護します。
- 柔軟なアクセス: S3 Glacierは、インスタントアクセスや指定時間アクセスなど、柔軟なアクセスオプションを提供しています。
- スケーラブル: S3 Glacierは、数百から数十億のオブジェクトを管理することができ、スケーラブルなアーカイブソリューションです。
ストレージクラスの選択
Amazon S3には、データの保存期間やアクセス頻度に応じて、異なるストレージクラスを選択することができます。
- S3 Standard: スタンダードなストレージクラスで、高可用性と高パフォーマンスを提供します。常にオンラインでアクセス可能で、最も高いアクセスコストがかかります。
- S3 Standard-IA (Infrequent Access): S3 Standardに比べ、アクセス頻度が少ないデータに適したストレージクラスです。少し低いパフォーマンスと可用性を提供しますが、アクセスコストが低いです。
- S3 One Zone-IA: S3 Standard-IAに比べ、単一のゾーン内にデータを保存し、可用性が低いです。しかし、アクセスコストは更に低くなります。
- S3 Glacier: 低コストなアーカイブストレージクラスで、長期間にわたってデータを保存する場合に適しています。データの取り出しには数時間から数日かかります。
- S3 Glacier Deep Archive: S3 Glacierに比べ、より低いコストで長期間にわたってデータを保存することができます。データの取り出しには数日から数週間かかります。
ストレージクラスの選択は、アプリケーションのニーズや予算に応じて適切なものを選択することが重要です。
Glacierの仕組み
Amazon S3 Glacierは、低コストのアーカイブストレージサービスです。S3オブジェクトをGlacierに移動し、アーカイブデータを保管することができます。
Glacierは、3つのストレージクラスを提供します。
- Standard: 標準アーカイブストレージ。通常のアーカイブ用途に適しています。
- Expedited: 急ぎのアーカイブ用途に適しています。数分から数時間でデータが取り出せますが、料金は高いです。
- Bulk: 容量が多い大量のアーカイブデータに適しています。取り出しには数時間から数日かかりますが、料金は安いです。
Glacierでは、データをアーカイブするためには、アーカイブジョブを実行する必要があります。アーカイブジョブは、S3オブジェクトをGlacierに移動するために使用されます。取り出しジョブを実行すると、アーカイブされたデータをS3から取り出すことができます。取り出しジョブを実行するには、事前に取り出し準備をする必要があります。
データ取り出しタイプ
Amazon S3 Glacierには、データ取り出しタイプが3つあります。
- 即時取り出し: データがすぐに取り出せるタイプで、一般的には毎月の費用がかかります。
- 標準取り出し: 一般的な取り出しタイプで、データを取り出すのに3〜5営業日がかかります。
- 低優先度取り出し: 出したいデータが他にもたくさんある場合に、より安く取り出せるタイプで、取り出すのに5〜12営業日がかかります。
アクセス管理
Amazon S3 Glacierにおいて、アクセス管理は、ユーザーやグループに対して、アーカイブの読み取りや削除などの権限を割り当てることができます。アクセス管理は、IAMポリシーやS3のアクセス権限を使用して設定することができます。また、S3 Glacier Vault Lockを使用することで、アーカイブの削除や変更を一定期間遡らせることもできます。
料金
Amazon S3 Glacierは、低コストなデータアーカイブサービスです。料金は、保存されたデータのバイト数や、取り出しタイプ(標準、加速、Expedited)によって異なります。また、データ転送料金も発生します。詳細な料金については、Amazon S3 Glacierの料金ページを参照してください。
Glacier Deep Archive
Amazon S3 Glacier Deep Archiveは、Amazon S3 Glacierの最も低コストなストレージクラスです。
このストレージクラスは、長期にわたるデータアーカイブやコンプライアンス要件を満たすために使用されます。Deep Archiveでは、データ取り出しタイプによって取り出し手数料が異なり、標準の取り出しタイプでは12時間かかります。
また、Deep Archiveは、Glacierよりも低い料金で利用することができます。
ポイントはデータ取り出しまでに時間がかかることぐらいです。
というわけで、今回は以上です。
引き続きで、徐々に発信していきます。
コメントや感想を受け付けています。ちょっとした感想でもいいので嬉しいです。
それでは、以上です。
【簡単】解説!!「Well-Architectrd Framework」sec.6【AWSアソシエイト資格対策/まとめ】