AWS シンプルストレージサービス– S3 の概要

  • Amazon S3 は、インターネットのために設計されたシンプルなキー、バリューオブジェクトストアです。
  • S3 は、無制限のストレージスペースを提供し、モデルを使用するように有料で動作します。利用量が増えるにつれてサービス料金が安くなる。
  • S3 は、(ブロックレベルのストレージではなく) オブジェクトレベルのストレージであり、OS や動的なウェブサイトをホストするために使用することはできません。
  • S3 リソース (バケットやオブジェクトなど) はデフォルトではプライベートです。

S3 バケットとオブジェクト

バケット

  • バケットは S3 に格納されているオブジェクトのコンテナで、S3 名前空間を整理するのに役立ちます。
  • バケットは、それを作成する AWS アカウントによって所有され、ストレージおよびデータ転送料金を担当するアカウントを識別するのに役立ちます。バケットの所有権は譲渡できません。
  • S3 バケット名は、バケットを作成する AWS リージョンに関係なく、グローバルに一意です。
  • S3 はグローバルサービスですが、バケットの作成時に指定されたリージョン内にバケットが作成されます。
  • すべてのオブジェクトがバケットに含まれている。
  • バケットに格納できるオブジェクトの数に制限はなく、オブジェクトを格納するために多数のバケットを使用するか、またはすべてのオブジェクトを格納するバケットを1つにするかにかかわらず、パフォーマンスに違いはありません。
  • S3 データモデルは、フラットな構造すなわち、バケット内に階層やフォルダが存在しません。ただし、論理階層は、Folder1/Object1 などの keyname プレフィックスを使用して推論できます。
  • 制限
    • 100バケット (ソフトリミット) は、各 AWS アカウントで作成できます。
      *バケット名はグローバルに一意で、DNS に準拠する必要があります。
    • バケットの所有権は譲渡できません
    • バケットを入れ子にできず、別のバケット内にバケットを持つことはできません。
  • 空または空でないバケットを削除できます。
  • S3 は、1000オブジェクトの取得を許可し、ページネーションのサポートを提供します。

オブジェクト

  • オブジェクトは、S3 バケットに格納される基本的なエンティティです。
  • オブジェクトは、keyname とバージョン ID によってバケット内で一意に識別されます。
  • オブジェクトは、オブジェクトデータ、メタデータ、およびその他で構成されます。
    • キーはオブジェクト名です。
    • はデータ部分がS3に対して不透明である。
    • メタデータはデータに関するデータであり、たとえばコンテンツタイプ、サイズ、最終変更などのオブジェクトを記述する名前と値のペアのセットです。カスタムメタデータは、オブジェクトの格納時に指定することもできます。
    • バージョン ID は、オブジェクトのバージョン ID であり、キーと組み合わせて、バケット内のオブジェクトを一意に識別するのに役立ちます。
    • サブリソースはオブジェクトの追加情報を提供するのに役立ちます。
    • アクセス制御情報(ACL)は、オブジェクトへのアクセスを制御するのに役立ちます。
  • オブジェクトのメタデータは、オブジェクトがアップロードされた後に変更できず、コピー操作を実行してメタデータを設定することによってのみ変更できます。
  • バケットに属するオブジェクトが特定の AWS リージョンに存在する場合、クロスリージョンレプリケーションを使用して明示的にコピーしない限り、そのリージョンは残されません。
  • オブジェクトは、全体または部分的に取得できます。
  • バージョン管理が有効になっている場合は、オブジェクトの性バージョンと同様にカレントを取得できます。

バケット&オブジェクト操作

  • リスト
    • S3 は、バケット内のすべてのキーのリストを許可します。
    • 1つのリスティング要求は、応答のインジケーターを使用して、対応が切り捨てられたかどうかを示す、改ページサポートを持つ最大1000オブジェクトキーを返します。
    • バケット内のキーは、プレフィックスと区切り記号を使用して一覧表示できます。
    • プレフィックスは、指定されたプレフィックスで始まるキー (フィルター処理の種類) のみに結果を制限し、共通のプレフィックスを共有するすべてのキーを1つのサマリーリストの結果にまとめるために、区切り記号の原因となる一覧を表示します。
  • 検索
    • オブジェクトを全体として取得できます。
    • オブジェクトは、範囲の HTTP ヘッダーを使用して、一部または部分的に (特定のバイト範囲) で取得できます。
    • レンジ HTTP ヘッダーが役立ちます。
      • たとえば、複数のファイルが1つのアーカイブとしてアップロードされた場合にのみ、部分的なオブジェクトが必要になります。
      • ネットワーク接続が不良であるフォールトトレラントダウンロード用。
    • オブジェクトは、事前に署名された URL を共有することによってダウンロードすることもできます。
    • オブジェクトのメタデータが応答ヘッダーに返されます。
  • オブジェクトのアップロード
    • 単一の操作 – 1回の PUT オペレーションでアップロードできるオブジェクトの最大サイズは 5 GB です。
    • マルチパートアップロード – 5MB 以上のサイズのオブジェクトに使用することができ、最大 5TB のサイズをサポートすることができます。100MB 以上のオブジェクトのために推奨されます。
    • 事前に署名された URL は、オブジェクトをアップロードするために共有することもできます。
    • オブジェクトのアップロードが成功した場合、要求が成功応答を受信したかどうかを確認できます。また、返された ETag は、アップロードオブジェクトの計算された MD5 値と比較することができます。
  • オブジェクトのコピー
    • 5GB までのオブジェクトのコピーは、単一の操作を使用して実行することができ、マルチパートアップロードは5TB までのアップロードに使用することができます。
    • オブジェクトがコピーされたとき
      • ユーザーが制御するシステムメタデータ (ストレージクラスやユーザー定義のメタデータなど) もコピーされます。
      • システム制御メタデータ。たとえば、作成日などがリセットされます。
    • オブジェクトのコピーが必要
      • 複数のオブジェクトコピーを作成する。
      • 場所にまたがってオブジェクトをコピーする。
      • オブジェクトの名前変更。
      • ストレージクラス、サーバー側の暗号化などのオブジェクトメタデータを変更する。
      • オブジェクトのメタデータを更新するには、すべてのメタデータフィールドを再度指定する必要があります。
  • オブジェクトの削除
    • S3 では、単一のオブジェクトまたは複数のオブジェクト (MAX 1000) を1回の呼び出しで削除できます。
    • バージョン対応でないバケットの場合は、
      • オブジェクトキーを指定する必要があり、オブジェクトは完全に削除されます。
    • バージョン対応のバケットでは、
      • オブジェクトキーが指定されている場合、S3 は削除マーカーを挿入し、前の現在のオブジェクトは非カレントオブジェクトになります。
      • バージョン ID を持つオブジェクトキーが指定されている場合、オブジェクトは完全に削除されます。
      • バージョン ID が削除マーカーの場合は、削除マーカーが削除され、現在のバージョン以外の最新版が現在のバージョンオブジェクトになります。
    • 追加のセキュリティを追加するために、MFA を有効にすることができます。
  • Glacier からオブジェクトを復元する
    • アーカイブされたオブジェクトにアクセスするには、オブジェクトを復元する必要があります。
    • オブジェクトの復元には、約 3 ~ 5 時間かかる場合があります。
    • また、復元要求では、オブジェクトのコピーを維持する必要がある日数を指定する必要もあります。
    • この期間中、アーカイブとコピーの両方のストレージコストが課金されます。

事前署名付き URL

  • すべてのバケットとオブジェクトはデフォルトでプライベートです。
  • 事前に署名された URL を使用すると、ユーザーは AWS セキュリティ認証情報やアクセス許可を必要とせずに、特定のオブジェクトをダウンロードまたはアップロードできます。
  • URL の作成者がそのオブジェクトにアクセスするためのアクセス許可を持っていれば、URL で識別されたオブジェクトへの誰でもアクセスすることができます。
  • 事前に署名された URL を作成するには、作成者がセキュリティ資格情報を提供し、バケット名、オブジェクトキー、HTTP メソッド (ダウンロードオブジェクトの取得 & アップロードオブジェクトの PUT)、および有効期限の日付と時刻を指定する必要があります。
  • 事前に署名された URL は有効期限の日付と時刻までしか利用可能ではありません。

マルチパートアップロード

  • マルチパートアップロードを使用すると、ユーザーは1つのオブジェクトを一連のパーツとしてアップロードできます。各部品は、オブジェクトのデータの連続した部分です。
  • マルチパートのアップロードは1〜10000のパーツをサポートし、各パーツは5MB〜5GBまで可能で、最後のパーツのサイズは5MB未満にすることができます。
  • マルチパートアップロードでは、5TB の最大アップロードサイズを使用できます。(10000パーツ * 5GB /理論的には)
  • オブジェクトパーツは、個別に、および任意の順序でアップロードできます。部品のトランスミッションが故障した場合、他の部品に影響を与えずに再送することができます。
  • オブジェクトのすべての部分をアップロードして開始すると、S3 はこれらの部品をアセンブルし、オブジェクトを作成します。
  • マルチパートアップロードを使用すると、次の利点があります。
    • スループットの向上 – スループットを向上させるための部品の並行アップロード。
    • あらゆるネットワーク問題からの迅速な復旧 – パーツサイズを小さくすると、ネットワークエラーのためアップロードに失敗した場合の再起動の影響を最小限に抑えられます。
    • オブジェクトのアップロードを一時停止および再開する – 時間の経過とともにオブジェクトパーツをアップロードすることができます。マルチパートアップロードが開始されると、有効期限はありません。マルチパートアップロードを明示的に完了または中止する必要があります。
    • 最終的なオブジェクトのサイズがわかっている前にアップロードを開始 – 作成中のオブジェクトをアップロードすることができます。
  • 三段階プロセス
    • マルチパートアップロードの開始
      • マルチパートアップロード要求を S3 に開始すると、マルチパートアップロードごとに一意の ID が返されます。
      • この ID は、各パーツのアップロード、完了または中止要求、およびパーツ呼び出しの一覧に対して提供する必要があります。
      • 必要なすべてのオブジェクトメタデータは、開始呼び出し中に提供する必要があります。
    • パーツアップロード
      • オブジェクトのパーツアップロードは、一意のアップロード ID を使用して実行できます。
      • パーツ番号 (1 ~ 10000) は、各パーツとオブジェクト内の位置を識別する要求ごとに指定する必要があります。
      • 同じパーツ番号を持つパーツがアップロードされた場合、前のパーツは上書きされます。
      • パートのアップロードが成功した後、S3 はレスポンスに ETag ヘッダーを返します。これは、マルチパートの完了要求中に提供されるパート番号と共に記録する必要があります。
    • マルチパートアップロードの完了または中止
      • マルチパートアップロード完了要求では、S3 はパーツ番号に基づいてパーツを昇順に連結してオブジェクトを作成し、メタデータをオブジェクトに関連付けます。
      • マルチパートアップロード完了要求には、すべてのパーツと ETag 情報を含む一意のアップロード ID が含まれている必要があります。
      • S3 応答には、結合されたオブジェクトデータを一意に識別する ETag が含まれます。
      • マルチパートアップロードの中止要求では、アップロードは中止され、すべてのパーツが削除されます。新しいパーツのアップロードは失敗します。ただし、進行中のパーツのアップロードは完了し、すべてのパーツのアップロードが完了した後、中止要求を送信する必要があります。
      • S3は、複数パートのアップロードの完了または中断要求を受け取る必要があります。それ以外の場合、パーツは削除されず、ストレージに課金されます。

仮想ホストスタイルとパススタイルリクエスト

S3では、バケットとオブジェクトをパススタイルまたは仮想ホストスタイルのURLで参照できます

パススタイル

  • バケット名はドメインの一部ではありません。(リージョン固有のエンドポイントを使用しない場合)
  • 使用するエンドポイントは、バケットが存在するリージョンと一致している必要があります。
  • たとえば、mybucket という名前のバケットを持っている場合、そのオブジェクトを持つ EU (アイルランド) リージョンに存在する場合、正しいパススタイルの構文 URI は http://s3-eu-west-1.amazonaws.com/mybucket/puppy.jpg です。
  • “PermanentRedirect” エラーは、HTTP 応答コード301で受信され、次のいずれかを使用するパス形式の構文で、米国東部 (バージニア州) リージョン外にバケットがアクセスされた場合に、リソースの正しい URI を示すメッセージを表示します。
    • http://s3.amazonaws.com
    • バケットが存在するリージョンとは異なるリージョンのエンドポイント。たとえば、米国西部(カリフォルニア)地域で作成されたバケットにhttp://s3-eu-west-1.amazonaws.comを使用

仮想ホストスタイル

  • S3 は、すべてのリージョンで仮想ホストスタイルおよびパススタイルのアクセスをサポートします。
  • 仮想ホスト形式の URL では、バケット名は URL のドメイン名の一部です。
  • 例えば http://bucketname.s3.amazonaws.com/objectname
  • S3 仮想ホストは、HTTP ホストヘッダーを使用して REST API 呼び出しのバケットに対処するために使用できます。
  • 利点
    * カスタマイズされた URL の魅力。
    * バケットの仮想サーバーの “ルートディレクトリ” に公開する機能を提供します。多くの既存のアプリケーションがこの標準の場所でファイルを検索するため、この機能は重要です。
  • S3 は、時間がかかる可能性がある任意のリージョンでバケットが作成されたときに、要求を正しい場所に再ルーティングするために DNS を更新します。
  • S3 は、リージョン固有のエンドポイント (たとえば、s3-eu-west-1.amazonaws.com) の代わりに米国東部 (バージニア州) のエンドポイント S3.amazonaws.com が使用されている場合、デフォルトでは、すべての仮想ホスト形式の要求を米国東部 (バージニア州) リージョンにルーティングし、S3 はそれをリダイレクトしますHTTP 307 を使用すると、正しい領域にリダイレクトされます。
  • SSL で仮想ホスト形式のバケットを使用する場合、SSL ワイルドカード証明書は、ピリオドを含まないバケットにのみ一致します。これを回避するには、HTTP を使用するか、独自の証明書検証ロジックを記述します。
  • http://bucket.s3.amazonaws.com エンドポイントに要求を行う場合、DNS は、バケットが存在する地域に直接要求をルーティングするための十分な情報を持っています。

S3 料金

  • Amazon S3 のコストはリージョンによって異なります。
  • S3 の料金は
    • ストレージ – コストは GB/月あたり
    • 要求 – 要求ごとのコストは、GET、PUT の要求の種類によって異なります
    • データ転送
      • データ受信は無料です
      • データ送信は、1 GB/月あたり (同じリージョンまたは Amazon CloudFront を除く) に課金されます。

その他のトピック


AWS認定試験の練習問題

  • 質問はインターネットから収集され、答えは自分の知識と理解に基づいてマークされます(これはあなたと異なる場合があります)。
  • AWSサービスは毎日更新され、回答と質問はすぐに時代遅れになる可能性がありますので、それに応じて調査してください。
  • AWSのアップデートのペースを追うためにAWS試験の質問は更新されないため、基礎となる機能が変更されても質問が更新されないことがあります。
  • さらなるフィードバック、ディスカッション、修正を可能にします。
  1. Amazon S3 は何を表していますか?
    1. Simple Storage Solution.
    2. Storage Storage Storage (triple redundancy Storage).
    3. Storage Server Solution.
    4. Simple Storage Service
  2. Amazon S3 の特徴は何ですか?2つの回答を選択
    1. オブジェクトは URL から直接アクセスできます。
    2. S3 は、リレーショナルデータベースをホストするために使用する必要があります。
    3. S3 は、オブジェクトまたは事実上無制限のサイズを格納することができます。
    4. S3 は、データの事実上無制限の量を格納することができます。
    5. S3 はプロビジョニングされた IOPS を提供します。
  3. Amazon EC2 ワーカーインスタンスがアップロードされたオーディオファイルを処理し、テキストファイルを生成する自動転写サービスを構築しています。これらのファイルは、テキストファイルが取得されるまで、同じ永続性ストレージに保存する必要があります。ストレージ容量の要件がわからない。コスト・パフォーマンスと拡張性のどちらのストレージ・オプションがありますか。
    1. スナップショットを含む複数の Amazon EBS ボリューム
    2. 単一の Amazon Glacier のヴォールト
    3. 1つの Amazon S3 バケット
    4. 複数のインスタンスストア
  4. ユーザーは、S3 管理コンソールを使用して、完全なフォルダを AWS S3 にアップロードする必要があります。ユーザーはどのようにしてこのアクティビティを実行できますか。
    1. ちょうど S3 によって提供されるフラッシュツールを使用してフォルダをドラッグアンドドロップ
    2. オブジェクトをアップロードするときに S3 コンソールから [拡張フォルダを有効にする] オプションを使用する
    3. ユーザーはS3管理コンソールでフォルダ全体を一度にアップロードすることはできません
    4. オブジェクトをアップロードするときに S3 コンソールから「拡張アップローダーを有効にする」オプションを使用する
  5. メディア会社は、圧縮後に100ギガバイト前後の合計サイズで、毎日、オンプレミスで新しいビデオファイルを生成します。すべてのファイルは、1-2 ギガバイトのサイズを持っており、午前三時と午前の間に固定時間のウィンドウで毎晩 Amazon S3 にアップロードする必要があります。現在のアップロードは、利用可能な帯域幅の半分以下が使用されますが、ほぼ3時間かかります。どのようなステップ (秒) は、ファイルのアップロードが割り当てられた時間のウィンドウで完了することができることを確認しますか?
    1. ネットワーク帯域幅を増やして、S3 へのスループットを向上
    2. マルチパートアップロードを使用して、S3 に並行してファイルをアップロード
    3. すべてのファイルを1つのアーカイブにまとめて、S3 にアップロードし、AWS でファイルを解凍します。
    4. AWS インポート/エクスポートを使用してビデオファイルを転送する
  6. 企業では、2層の高可用性 Web アプリケーションを AWS に展開しています。Web 層の全体的な CPU リソースを削減しながら、静的コンテンツに対して永続的なストレージを提供するサービスはどれですか。
    1. Amazon EBS ボリューム
    2. Amazon S3
    3. Amazon EC2 インスタンスストア
    4. Amazon RDS インスタンス
  7. Amazon S3 に 5 GB のビデオオブジェクトをアップロードするアプリケーションは、アマゾンのエラスティックコンピューティングクラウドインスタンスで実行されています。ビデオのアップロードが予想よりも長くかかっているため、アプリケーションのパフォーマンスが低下します。どの方法でアプリケーションのパフォーマンスを向上させることができますか。
    1. 拡張ネットワーキングを有効にする
    2. Amazon S3 マルチパートアップロードを使用する
    3. Amazon CloudFront を活用するには、HTTP POST メソッドを使用して待ち時間を削減します。
    4. Amazon エラスティックブロックストアプロビジョンド IOPs を使用し、Amazon EBS 最適化インスタンスを使用する
  8. Amazon S3にオブジェクトを置くと、オブジェクトが正常に格納されたという表示は何ですか?
    1. 各 S3 アカウントには、特別なバケット named_s3_logs があります。成功コードは、タイムスタンプとチェックサムを使用してこのバケットに書き込まれます。
    2. 成功コードが S3 オブジェクトメタデータに挿入されます。
    3. HTTP 200 の結果コードと MD5 チェックサムが一緒に取得され、操作が成功したことを示します。
    4. Amazon S3 は 99.999999999% の耐久性のために設計されています。したがって、データが挿入されたことを確認する必要はありません。
  9. S3 には、インターネット上で購読しているユーザーに提供するプライベートビデオコンテンツがあります。ユーザー ID、資格情報、およびサブスクリプションは、Amazon RDS データベースに格納されます。どの構成を使用すると、ユーザーにプライベートコンテンツを安全に提供できますか。
    1. 保護された S3 コンテンツへのアクセスを要求する各ユーザーの署名済み URL を生成する。
    2. サブスクライブしているユーザーごとに IAM ユーザーを作成し、各 IAM ユーザーに GetObject アクセス許可を割り当てます。
    3. 購読しているユーザーの資格情報のみにプライベートコンテンツへのアクセスを制限する S3 バケットポリシーを作成する。
    4. サブスクライブしているユーザーの CloudFront オリジン ID ユーザーを作成し、このユーザーに GetObject アクセス許可を割り当てます。
  10. あなたのサイトの訪問者に写真を提供するために S3 を使用して、広告サポートされている写真共有サイトを実行します。いくつかの点では、他のサイトは、あなたのビジネスに損失を引き起こし、あなたのサイト上の写真にリンクされていることを見つける。これを軽減する効果的な方法は何ですか?
    1. 公開読み取りアクセス権を削除し、有効期限付きの署名付き URL を使用します。
    2. 静的コンテンツには CloudFront ディストリビューションを使用します。
    3. セキュリティグループ内の問題のある Web サイトの IP アドレスをブロックします。
    4. Web サーバーの EBS ボリュームに写真を保存します。
  11. Amazon シンプルストレージサービス (S3) バケットに静的アセットを格納する Web アプリケーションを設計しています。このバケットは、1秒あたり 150 PUT 要求をすぐに受け取ることを期待しています。最適なパフォーマンスを確保するにはどうすればよいですか。
    1. マルチパートアップロードを使用します。
    2. キー名にランダムなプレフィックスを追加します。
    3. Amazon S3 は、このスケールでのパフォーマンスを自動的に管理します。
    4. キー名には、連続番号や日付時刻シーケンスなどの予測可能な名前付けスキームを使用します。
  12. AWS アカウントごとに利用できる S3 バケットの最大数は何ですか?
    1. リージョンごとに100
    2. 制限はありません
    3. アカウントあたり 100 (参考文献)
    4. アカウントあたり500
    5. IAM ユーザーあたり100
  13. 契約者がビデオをAmazon Simple Storage Service(S3)にアップロードして別の形式にトランスコードできるようにするには、顧客がアプリケーションを作成する必要があります。 彼女はアプリケーション開発者向けにAWS Identity and Access Management(IAM)ユーザーを作成し、わずか1週間でAmazon Elastic Compute Cloud(EC2)インスタンスのホストにアプリケーションをホストしています。 接続されたIAMロールがインスタンスに割り当てられます。 予想どおり、アプリケーションを認証する請負業者には、ビデオアップロードの場所を示す事前に署名されたURLが与えられます。 ただし、請負業者は自分の動画をアップロードできないと報告しています。 次のうち、この動作の有効な理由はどれですか? Choose 2 answers { “Version”: “2012-10-17”, “Statement”: [ { “Effect”: “Allow”, “Action”: “s3:”, “Resource”: “” } ] }
    1. IAM ロールは、オブジェクトをアップロードする権限を明示的に付与しません。(ロールには、S3 上のすべてのアクティビティに対するすべての権限があります)
    2. 請負業者ˈアカウントは、S3 バケットへの “書き込み” アクセスを許可されていません。(事前に署名された URL を使用して、請負業者のアカウントにアクセスする必要はありませんが、事前に署名された url の作成者のみ)
    3. アプリケーションは、署名済み URL を生成するために有効なセキュリティ資格情報を使用していません。
    4. 開発者は、S3 バケットにオブジェクトをアップロードするアクセス権を持っていません。(開発者はオブジェクトをアップロードするのではなく、事前に署名された URL を使用しています)
    5. S3 バケットには、まだ関連付けられている既定のアクセス許可があります。(ユーザーがアップロードする権限を持っている限り、問題ではありません)
    6. 署名済み URL の有効期限が切れています。

Jayendra’s Blog

この記事は自己学習用に「AWS Simple Storage Service – S3 – Certification(Jayendra’s Blogより)」を日本語に訳した記事です。