STAY KOBE

[SolutionArchitect Pro] Amazon S3 のベストプラクティス

S3 ベストプラクティス

パフォーマンス

複数の同時 PUT / GET

大きなオブジェクトの PUT / GET

リスト操作

セキュリティ

コスト

トラッキング


AWS認定試験の練習問題

  1. メディア会社は、圧縮後に100ギガバイト前後の合計サイズで、毎日、オンプレミスで新しいビデオファイルを生成します。すべてのファイルは、1-2 ギガバイトのサイズを持っており、午前三時と午前五時の間に固定時間のウィンドウで毎晩 Amazon S3 にアップロードする必要があります。現在のアップロードには、使用可能な帯域幅の半分以下が使用されますが、ほぼ3時間かかります。ファイルのアップロードが割り当てられた時間枠内で完了できるようにするにはどのような手順が必要ですか?
    1. ネットワーク帯域幅を増やして、S3 へのスループットを向上する。
    2. マルチパートアップロードを使用して、S3 に並行してファイルをアップロードする。
    3. すべてのファイルを1つのアーカイブにまとめて、S3 にアップロードし、AWS でファイルを解凍します。
    4. AWS インポート/エクスポートを使用してビデオファイルを転送する。
  2. Amazon シンプルストレージサービス (S3) バケットに静的アセットを格納する web アプリケーションを設計しています。このバケットは、1秒あたり 150 PUT リクエストをすぐに受け取ることを期待しています。最適なパフォーマンスを確保するにはどうすればよいですか。
    1. マルチパートアップロードを使用します。
    2. キー名にランダムなプレフィックスを追加します。
    3. Amazon S3 は、このスケールでのパフォーマンスを自動的に管理します。
    4. キー名には、連続番号や日付時刻シーケンスなどの予測可能な名前付けスキームを使用します。
  3. Amazon シンプルストレージサービス (S3) に 5 GB のビデオオブジェクトをアップロードするアプリケーションは、アマゾンのエラスティックコンピューティングクラウドインスタンス(EC2)で実行されています。ビデオのアップロードが予想よりも長くかかっているため、アプリケーションのパフォーマンスが低下します。どの方法でアプリケーションのパフォーマンスを向上させることができますか。
    1. 拡張ネットワーキングを有効にする。
    2. Amazon S3 マルチパートアップロードを使用する。
    3. Amazon CloudFront を活用するには、HTTP POST メソッドを使用して待ち時間を削減します。
    4. Amazon EBS プロビジョンド IOPs を使用し、Amazon EBS 最適化インスタンスを使用する。
  4. Amazon S3 に格納されたデータの偶発的な消失を防ぐ方法として、次のうちどれですか?(2 を選択)
    1. バケットポリシーを設定して削除を制限し、バージョン管理も有効にする
    2. 既定では、バージョン管理は新しいバケットで有効になっているため、心配する必要はありません (既定では有効になっていません)。
    3. データを保護するためにキーのセカンダリインデックスを構築する (パフォーマンスの向上のみ)
    4. 別の AWS アカウントが所有するバケットにバケットをバックアップして冗長性を確保する
  5. スタートアップ会社は、彼らが最終的に Amazon S3 で画像やビデオの数十億を格納するモバイルアプリケーションを構築するためにあなたを雇った。同社は、資金調達にリーンであり、運用コストを最小限に抑えるために望んでいる、しかし、彼らは積極的なマーケティングプランを持っており、6ヶ月ごとに現在のインストールベースを倍増することを期待しています。彼らのビジネスの性質のために、彼らは、S3 との間のトラフィックに突然、大規模な増加を期待している、それが彼らのアプリケーションのパフォーマンスのニーズを処理できることを確認する必要があります。S3 が適切なオプションであるかどうかを判断するために、この顧客から収集する必要のあるその他の情報は何ですか?
    1. 現在の顧客数は知っていなければなりません。なぜなら、これは2年後の顧客基盤を理解するうえで重要なことなのでです。(ない.お客様は関係ありません)
    2. ピーク使用時の1秒あたりの要求の総数を確認する必要があります。
    3. キーの名前空間を適切に設計するためには、S3 に書き込まれる個々のオブジェクトのサイズを知る必要があります。(サイズはキーの名前空間のデザインには関係ありませんが、カウントはありません)
    4. キーの名前空間を正しく構築するには、各 S3 バケットのストレージニーズの総量を把握しておく必要があります。(S3 は、キーの名前空間の設計は、数に依存する無制限のストレージを提供)
  6. ドキュメントストレージ会社は、アプリケーションを AWS にデプロイし、ビジネスモデルを変更して、フリー層およびプレミアム層の両方のユーザーをサポートします。プレミアム層のユーザーは、最大200GB のデータを格納するために許可され、無料の層の顧客は 5GB のみを格納することができます。お客様は、数十億のファイルが保存されることを期待しています。75% のクォータ使用率に近づいたときに、90% のクォータで再利用する場合は、すべてのユーザーに警告する必要があります。フリー層およびプレミアム層のユーザーをサポートするには、どのようにアプリケーションを設計する必要がありますか?
    1. 会社は、Amazon DynamoDB のユーザーデータカウンタを更新する Amazon シンプルワークフローサービス(SWF)アクティビティワーカーを利用する必要があります。 アクティビティワーカーは、カウンターが適切なしきい値を超えて増加すると、電子メールを送信するために簡単な電子メールサービスを使用します。
    2. 同社は、各オブジェクトのサイズと一緒に格納されたオブジェクトごとに行を持つストアオブジェクトテーブルと Amazon リレーショナルデータベースサービス(RDS)のリレーショナルデータベースを展開する必要があります。アップロードサーバーは、質問のユーザーの総消費量を照会します (最初にユーザーによってファイルストアを決定し、次に、それぞれのファイルサイズの格納されたオブジェクトのテーブルを照会して) と Amazon のシンプルな電子メールサービスを介して電子メールを送信する場合しきい値が破られる。(良い方法は、RDS を使用するが、非常に多くのオブジェクトが良いオプションではないかもしれません)
    3. 同社は、コンテンツの長さとオブジェクトの S3 のメタデータとして、ファイルの所有者のユーザー名の両方を記述する必要があります。その後、各オブジェクトに対して反復処理を行うファイルウォッチャーを作成し、各ユーザーのサイズを集計し、ストレージのしきい値を超えた場合に Amazon シンプルキューサービスを介してメールサービスに通知を送信する必要があります。(S3 のリスト操作は実行不可能)
    4. 同社は、無料の層のユーザーのためのデータストレージのための2つの分離された Amazon シンプルなストレージサービス(S3)のバケット1つを作成し、別のプレミアム層のユーザーのためのデータストレージです。Amazon simple ワークフローサービス(SWF)アクティビティワーカーは、データが格納されているバケットとストレージの集約に基づいて、特定のユーザーのすべてのオブジェクトを照会します。アクティビティ作業者は、必要に応じて Amazon 簡易通知サービス(SNS)を介してユーザーに通知します (S3 上のリスト操作は実行できないだけでなく、SNS はメール要件に対応していません)
  7. あなたの会社は、ドキュメントを保存し、共有するためのソーシャルメディアのウェブサイトをホストしている。Web アプリケーションを使用すると、ユーザーは必要に応じてアップロードを再開して一時停止しながら、大きなファイルをアップロードできます。現在、ファイルは、ファイルがアップロードされた後に受信したバイトの平均 (ネットワーク) にスケーリングされた Amazon エラスティックコンピューティングクラウド (EC2) インスタンスの、エラスティックロードバランシングとオートスケーリングフリートによってバックアップされた PHP フロントエンドにアップロードします。これは、Amazon シンプルストレージサービス (S3) にコピーされます。Amazon EC2 インスタンスは、Amazon S3 のアップロードを許可する AWS ID およびアクセス管理 (AMI) の役割を使用します。過去6か月間で、ユーザーベースとスケールが大幅に増加し、自動スケーリンググループ MAX パラメーターを数回増やす必要がありました。CFO はコストの上昇を懸念しており、コストを最適化するために必要なアーキテクチャを調整するよう求めています。コストを削減し、Web アプリケーションのセキュリティと拡張性を維持するために導入できるアーキテクチャの変更はどれですか。
    1. オートスケーリングの起動構成を、C3.8xlarge インスタンスを含むように置き換えます。これらのインスタンスは、10Gbps のネットワークスループットをもたらす可能性があります。(現在のサイズの情報はありませんし、コストが増加する可能性があります)
    2. 使用している取り込みパターンを再設計し、AWS セキュアトークンサービス (GetFederation トークン) から一時的な AWS 認証情報を取得するブローカーとして、ID プロバイダに対してアプリを認証します。資格情報と S3 エンドポイント/プレフィックスをアプリに安全に渡します。指定された資格情報と s3 プレフィックスを使用して、Amazon s3 にファイルを直接アップロードするクライアント側ロジックを実装します。(一時停止と再起動を処理する機能は提供されません)
    3. 取り込みパターンを再設計し、Web アプリケーションインスタンスを VPC パブリックサブネットに移動します。各 EC2 インスタンスのパブリック IP アドレスをアタッチします (自動スケーリング起動構成設定を使用)。Amazon Route 53 ラウンドロビンレコードセットと HTTP ヘルスチェックを DNS 負荷分散に使用するアプリの要求この方法では、エラスティックロードバランシングをバイパスすることにより、コストを大幅に削減します。(ELB がネックではありません)
    4. 使用している取り込みパターンを再設計し、AWS セキュアトークンサービス (GetFederation トークン) から一時的な AWS 認証情報を取得するブローカーとして、ID プロバイダに対してアプリを認証します。資格情報と S3 エンドポイント/プレフィックスをアプリに安全に渡します。 s3 マルチパートアップロード API を使用して、指定された資格情報と s3 プレフィックスを使用してファイルを Amazon S3 に直接アップロードするクライアント側ロジックを実装します。(マルチパートは、実際のサイズがわかっているか、完全なデータがダウンロードされる前に、S3 に直接アップロードを開始することができます)
  8. アプリケーションは、高トラフィックの Web サイトから数千のインスタンスから時間ごとのログファイルを格納している場合、どの命名方式は、S3 上で最適なパフォーマンスを与えるだろうか?
    1. シーケンシャル
    2. instanceID_log-HH-DD-MM-YYYY
    3. instanceID_log-YYYY-MM-DD-HH
    4. HH-DD-MM-YYYY-log_instanceID (HH は最初の文字が i になる instaneId の代わりに開始するいくつかのランダム性を与える)
    5. YYYY-MM-DD-HH-log_instanceID

リファレンス


Jayendra’s Blog

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