type
status
date
slug
summary
tags
category
icon
password

281-AWS SAP AWS 「理論・実践・一問道場」Amazon S3 + AWS Glue + Athena

 

理論

IoTデータ処理とSQLクエリにおけるコスト効率的なアプローチ

IoTデバイスから大量のデータを収集し、SQLクエリを効率的に実行するには、適切なデータストレージとクエリツールを選択することが重要です。以下は、コスト効率を考慮した最適な方法と、それに関連する本質的な知識です。

1. データストレージの選択

  • Amazon S3
    • 高耐久性と低コストを兼ね備えたオブジェクトストレージ。
    • Hadoop Distributed File System (HDFS) の代替として有効。
    • 短時間のクエリや断続的な使用に最適。
  • HDFSとの違い
    • HDFS:常時稼働するクラスターが必要 → コスト高。
    • S3:サーバーレスでスケーラブル → コスト削減。

2. クエリツールの選択

  • Amazon Athena
    • S3内のデータに直接SQLクエリを実行可能なサーバーレスツール。
    • Prestoをベースにしており、ORC形式に対応。
    • 必要なクエリ実行分だけ課金されるため、断続的な使用に最適。
Prestoは、分散型SQLクエリエンジンで、大規模データセットに対して高速なクエリを実行するためのツールです。主に以下の特徴があります:
  • 高速:メモリ内処理を活用し、大量データのクエリを迅速に実行。
  • 多様なデータソース対応:HDFS、S3、Cassandra、MySQLなど、さまざまなデータストレージに対してクエリ可能。
  • スケーラブル:分散処理を採用しており、クラスター規模に応じてパフォーマンスを向上可能。
  • 用途:データ分析やビッグデータ環境でのインタラクティブなSQLクエリ。
Prestoは、クエリパフォーマンスを重視するデータ分析環境で広く利用されています。
EMRFS (EMR File System) は、Amazon EMR (Elastic MapReduce) クラスターで使用されるファイルシステムの1つで、Amazon S3をバックエンドストレージとして利用するための機能です。以下が特徴です:
  • S3との連携:HadoopやSparkなどのビッグデータフレームワークが、Amazon S3をHDFSのように扱える。
  • データの永続性:HDFSと異なり、データはS3に保存されるため、クラスターが停止してもデータが失われない。
  • アクセス管理:IAMロールやポリシーを使用してS3データへのアクセスを制御可能。
  • 一貫性モデル:S3の最終的な整合性を補完するため、データの一貫性を向上させる「強い整合性ビュー」機能を提供。
主に、コスト効率の高いストレージとスケーラビリティが必要なビッグデータ処理に使用されます。
 
Amazon Redshiftは、Amazon Web Services (AWS) が提供するクラウド型データウェアハウスサービスです。以下が主な特徴です:
  • データ分析特化:ペタバイト規模のデータを高速に分析可能。
  • SQLサポート:標準的なSQLを使ってデータにクエリを実行できる。
  • スケーラブル:ノードを追加してパフォーマンスやストレージを拡張可能。
  • 統合:ETLツールやBIツール(例:Tableau、QuickSight)と容易に統合可能。
  • コスト効率:オンデマンド料金モデルで、ストレージとコンピューティングを分離可能(RA3インスタンス)。
主に、大量の構造化データを効率的に保存・分析するために利用されます。
Redshift Spectrumは、Amazon Redshiftの拡張機能で、RedshiftにロードせずにAmazon S3上のデータを直接SQLクエリで分析できるサービスです。以下が主な特徴です:
  • 直接クエリ:S3上のファイル(例:ORC、Parquet、CSV)をRedshiftからそのままクエリ可能。
  • スケーラブル:クエリごとにスケーラブルなコンピューティングリソースを使用。
  • 統合:Redshift内のデータとS3上のデータを統合して分析可能。
  • 用途:大量データのオンデマンド分析や、データウェアハウスとデータレイクの組み合わせに適している。
主にデータウェアハウスとデータレイクを効率的に統合したい場合に活用されます。

実践

一問道場

質問 #281
トピック 1
ある会社が、IoTデバイス群から大量のデータを収集しています。データはHadoop Distributed File System (HDFS) 上の持続的なAmazon EMRクラスターに、Optimized Row Columnar (ORC) ファイルとして保存されています。
同社のデータ分析チームは、同じEMRクラスター上で展開されたApache Prestoを使用してSQLでデータをクエリしています。クエリは大量のデータをスキャンし、常に15分未満で終了し、午後5時から午後10時の間だけ実行されます。
同社は現在のソリューションに関連する高いコストを懸念しています。ソリューションアーキテクトは、SQLデータクエリを可能にする最もコスト効率の高いソリューションを提案する必要があります。
以下のどのソリューションがこれらの要件を満たしますか?
A. データをAmazon S3に保存し、Amazon Redshift Spectrumを使用してデータをクエリする。
B. データをAmazon S3に保存し、AWS GlueデータカタログとAmazon Athenaを使用してデータをクエリする。
C. データをEMR File System (EMRFS) に保存し、Amazon EMRのPrestoを使用してデータをクエリする。
D. データをAmazon Redshiftに保存し、Amazon Redshiftを使用してデータをクエリする。
 

解説

課題

IoTデータをHDFSに保存し、EMR上のPrestoで分析しているが、コストが高い。
→ SQLクエリを効率的に実行でき、コストを削減する方法を選ぶ。

選択肢の評価

  1. Amazon S3 + Redshift Spectrum
      • S3上のデータに直接クエリ可能だが、維持コストが高い。
  1. Amazon S3 + AWS Glue + Athena (正解)
      • サーバーレスで、クエリ実行分のみ課金。
      • コスト効率が良く、要件に最適。
  1. EMRFS + Presto in EMR
      • 現状維持だが、EMRの運用コストが高く改善にならない。
  1. Amazon Redshift
      • 高性能だが、データ移行や維持コストが高い。

結論

選択肢B (S3 + Athena) が最適。
  • S3にデータを保存し、AthenaでSQLクエリを実行 → コスト削減と要件を満たす。
 

 

282-AWS SAP AWS 「理論・実践・一問道場」AWS Tag Editor

 

理論

AWSタグ付けとコスト管理

AWSリソースの適切なタグ付けは、コスト管理運用効率を向上させるための重要な手段です。特に、大規模なAWS環境では、リソースの識別と追跡をタグで行うことで、請求書の明細やコストの内訳を簡単に把握できます。

1. コスト配分タグ

コスト配分タグは、リソースにコストセンターやプロジェクトIDなどの情報を関連付けるために使用します。これにより、AWS Billing and Cost Managementにおいて、各リソースがどれだけコストを消費しているかを追跡できます。
  • 重要性:コスト配分タグを使用することで、リソースごとの詳細なコスト分析が可能になり、予算オーバーや無駄なリソースの使用を防ぎます。

2. AWS Tag Editor

AWS Tag Editorは、複数のAWSリソースに対して一括でタグを付けたり、管理したりするツールです。これを使うと、既存のリソースにタグを一度に適用でき、コスト管理の強化が簡単に行えます。
  • 重要性:大量のリソースがある環境では、一括タグ付けが作業効率を大幅に向上させ、リソース管理を容易にします。

3. サービスコントロールポリシー(SCP)

SCPは、AWS Organizations内でリソースの作成や操作に関するルールを強制するためのツールです。特定のタグが付けられたリソースのみを作成可能にするなど、タグ付けの一貫性を保つために活用できます。
  • 重要性:リソース作成時に必ず必要なタグを付けさせることで、タグ付けのルールを組織全体で徹底できます。

4. AWS Config

AWS Configは、AWSリソースの構成を監視・記録するサービスです。リソースに対するタグが適切に付けられているかを監視し、不足している場合に通知するルールを設定できます。
  • 重要性:タグ付け漏れが発生しないようにリアルタイムで監視し、迅速に対応できる環境を整えることが可能です。

5. Lambdaによる自動タグ付け

AWS Lambdaを使用して、タグ付けがされていないリソースに自動でタグを付けるソリューションもあります。これにより、タグ付け漏れを自動的に修正することができ、運用の手間を削減します。
  • 重要性:手動でタグを付ける手間を減らし、運用の効率化を図ります。

要点まとめ

  • コスト配分タグを利用してリソースのコスト分析を行う。
  • Tag Editorで一括タグ付けを実施し、運用効率を向上させる。
  • SCPで新規リソース作成時のタグ付けを強制し、一貫性を確保。
  • AWS ConfigLambdaを利用して、タグ付けの監視と自動修正を行う。
これらのツールやサービスを組み合わせることで、AWS環境でのコスト管理とリソースの整合性を維持し、コストの可視化や無駄の削減が可能になります。

実践

一問道場

ある大手企業は、最近、Amazon RDSとAmazon DynamoDBのコストが予期しない形で増加しました。この企業は、AWSの請求およびコスト管理の詳細を可視化する必要があります。企業には、開発および本番のアカウントが含まれるAWS Organizationsがあり、組織全体で一貫したタグ付け戦略はありませんが、すべてのインフラは一貫したタグ付けを行うAWS CloudFormationを使用して展開するというガイドラインがあります。経営陣は、既存および将来のDynamoDBテーブルとRDSインスタンスに対して、コストセンター番号とプロジェクトID番号が必要です。
この要件を満たすために、ソリューションアーキテクトはどの戦略を提案すべきですか?
A. Tag Editorを使用して既存のリソースにタグを付け、コストセンターとプロジェクトIDを定義するコスト配分タグを作成し、タグが既存のリソースに伝播するのを24時間待ちます。
B. AWS Configルールを使用して、タグが付けられていないリソースを財務チームに通知します。AWS Lambdaベースの中央集約型ソリューションを作成し、クロスアカウントロールを使用して毎時間タグが付けられていないRDSデータベースおよびDynamoDBリソースにタグを付けます。
C. Tag Editorを使用して既存のリソースにタグを付け、コストセンターとプロジェクトIDを定義するコスト配分タグを作成します。また、リソース作成時にコストセンターとプロジェクトIDをタグとして含めることを制限するためにSCP(サービスコントロールポリシー)を使用します。
D. コストセンターとプロジェクトIDを定義するコスト配分タグを作成し、タグが既存のリソースに伝播するのを24時間待ちます。また、既存の連邦ロールを更新して、コストセンターとプロジェクトIDがタグとして付けられていないリソースの作成を制限します。

解説

この問題では、企業がAmazon RDSおよびDynamoDBのコスト増加に直面しており、コスト管理の可視化とリソースのタグ付けを強化する必要があるという状況です。企業は、リソースに対してコストセンター番号とプロジェクトID番号をタグとして付け、今後リソースの作成時にもタグ付けが一貫して行われるようにすることを求めています。

選択肢の評価

  1. 選択肢A: Tag Editorを使用して既存のリソースにタグを付け、コストセンターとプロジェクトIDを定義するコスト配分タグを作成し、タグが既存のリソースに伝播するのを24時間待つ
      • メリット:Tag Editorで一括タグ付けを行い、コスト配分タグを設定することで、現在のリソースにタグを付けられます。
      • デメリット:既存リソースにタグが反映されるまでに最大で24時間かかるため、即時にコストを可視化することができません。また、将来のリソース作成に対してタグ付けが強制されないため、運用の一貫性が欠けます。
  1. 選択肢B: AWS Configルールを使用して、タグが付けられていないリソースを財務チームに通知し、AWS Lambdaベースの中央集約型ソリューションで毎時間RDSデータベースおよびDynamoDBリソースにタグを付ける
      • メリット:AWS Configでタグが付けられていないリソースを監視し、AWS Lambdaでタグ付けを自動化する方法です。毎時間のタグ付け更新が可能で、継続的にタグ付けされていないリソースを改善できます。
      • デメリット:複雑な実装が必要であり、Lambdaを使用する運用が煩雑になる可能性があります。また、運用負荷が高くなる可能性があります。
  1. 選択肢C: Tag Editorを使用して既存のリソースにタグを付け、コストセンターとプロジェクトIDを定義するコスト配分タグを作成し、SCPを使用してリソース作成時にコストセンターとプロジェクトIDのタグを付けるように制限する
      • メリット:SCP(サービスコントロールポリシー)を使用して、コストセンターとプロジェクトIDタグが付けられていないリソースの作成を制限することができます。これにより、今後作成されるリソースに対して必ず必要なタグ付けが行われるようになります。
      • デメリット:SCPはAWS Organizations内のアカウント全体に影響を与えるため、細かな制御が難しい場合があります。
  1. 選択肢D: コストセンターとプロジェクトIDを定義するコスト配分タグを作成し、タグが既存のリソースに伝播するのを24時間待ち、既存の連邦ロールを更新して、コストセンターとプロジェクトIDがタグとして付けられていないリソースの作成を制限する
      • メリット:既存リソースのタグ付けが24時間以内に完了し、連邦ロールを更新してタグ付けが必須になるように制限する方法です。今後作成されるリソースにタグ付けを強制できます。
      • デメリット:既存のリソースにタグが反映されるまでに時間がかかる点、また連邦ロールを更新する作業が必要です。

最適な解決策

選択肢Cが最適です。
  • 理由
    • 既存リソースのタグ付け:Tag Editorを使って既存のリソースにタグを付け、コスト配分タグを設定できます。
    • 将来のリソース作成の強制:SCPを使用して、コストセンターとプロジェクトIDのタグを付けないリソースの作成を制限することができ、組織全体で一貫したタグ付けを確実に強制できます。
 

 

283-AWS SAP AWS 「理論・実践・一問道場」プライベートVIF

 

理論

AWS でのプライベート接続とデータ転送

AWSでは、インターネットを経由せずに安全かつ効率的にデータを転送するための方法がいくつかあります。特に、オンプレミスシステムとAWSリソース間、または異なるAWSアカウント間でのデータ転送をプライベートに行うための技術が重要です。

1. AWS Direct Connect

AWS Direct Connectは、オンプレミスデータセンターとAWS間で専用線接続を提供するサービスです。この接続はインターネットを使用せず、プライベートでセキュアな通信を実現します。Direct Connectには、プライベートVIF(Virtual Interface)とパブリックVIFの2種類があり、プライベートVIFを使用することでAWS VPCとの直接接続が可能になります。
  • プライベートVIFは、VPCに対する専用接続を提供し、セキュアにAWSリソース(例:EC2、S3)とデータ転送を行います。
  • パブリックVIFは、インターネット経由でAWSのパブリックサービス(例:S3)へのアクセスを提供しますが、セキュアな通信が必要な場合にはプライベートVIFが推奨されます。

2. VPCエンドポイント

AWSでは、VPC内からインターネットを経由せずにAWSサービスにアクセスできるVPCエンドポイントを提供しています。これにより、データがAWSのネットワーク内で完結し、外部インターネットに出ることなく、サービス間での通信が行えます。
  • ゲートウェイエンドポイントは、特にS3やDynamoDBにアクセスするために使用されます。これにより、インターネット経由でアクセスすることなく、VPC内からS3へのアクセスが可能になります。
  • インターフェイスエンドポイントは、VPC内のEC2インスタンスやLambda関数などから特定のAWSサービスに対するプライベート接続を提供します。

3. VPCピアリング

VPCピアリングは、異なるVPC間で直接的なネットワーク接続を作成する方法です。これにより、異なるAWSアカウントやリージョンのVPC間で安全に通信が可能となります。ピアリングを利用すれば、データ転送がインターネットを経由せず、AWS内のプライベートなネットワークで行われます。
  • ピアリングを使用すると、データがAWSのセキュアなネットワーク内で送信され、インターネットに出ることなくAWSリソース間で直接データを交換できます。

4. セキュアなデータ転送

AWSでデータ転送を行う際には、データの暗号化アクセス管理が重要です。データがプライベートネットワークを通じて転送されても、暗号化を施すことで、通信中のデータが不正アクセスから保護されます。
  • AWS Key Management Service (KMS)を利用してデータの暗号化を管理し、適切なIAM(Identity and Access Management)ポリシーを使用してアクセスを制御します。

まとめ

AWSでは、オンプレミスからAWSへの、またはAWS間でのデータ転送をプライベートに行うための様々な方法が提供されています。これにより、インターネットを経由せずにセキュアにデータを転送し、AWS内での通信が効率的に行えるようになります。具体的には、AWS Direct Connect、VPCエンドポイント、VPCピアリングといった技術を組み合わせて、要件に応じた最適な通信方法を選択することができます。

実践

一問道場

問題 #283

ある企業は、オンプレミスのシステムからAmazon S3バケットにデータを送信したいと考えています。この企業は、3つの異なるアカウントにS3バケットを作成しました。企業は、データがインターネットを経由せず、プライベートに送信されることを望んでいます。この企業は、AWSへの専用接続をまだ持っていません。
これらの要件を満たすために、ソリューションアーキテクトはどのステップを踏むべきですか?(2つ選んでください。)
A. AWSクラウドにネットワーキングアカウントを作成し、そのアカウントにプライベートVPCを作成します。そして、オンプレミス環境とプライベートVPC間にAWS Direct Connect接続をプライベートVIFで設定します。
B. AWSクラウドにネットワーキングアカウントを作成し、そのアカウントにプライベートVPCを作成します。そして、オンプレミス環境とプライベートVPC間にAWS Direct Connect接続をパブリックVIFで設定します。
C. ネットワーキングアカウントにAmazon S3インターフェイスエンドポイントを作成します。
D. ネットワーキングアカウントにAmazon S3ゲートウェイエンドポイントを作成します。
E. AWSクラウドにネットワーキングアカウントを作成し、そのアカウントにプライベートVPCを作成します。その後、S3バケットをホストしているアカウントのVPCとネットワーキングアカウントのVPCをピアリングします。

解説

この問題は、データをインターネットを経由せずに、プライベートな接続を利用して異なるアカウント間でAmazon S3に送信する方法を問うものです。要点は、データの転送がインターネット経由で行われないようにすることです。

解説:

  1. Direct Connect + プライベートVIF (A):
      • AWS Direct Connectは、オンプレミス環境とAWS間の専用ネットワーク接続を提供します。プライベートVIFを使えば、データはインターネットを経由せず、プライベートネットワークで転送されます。
  1. S3ゲートウェイエンドポイント (D):
      • Amazon S3ゲートウェイエンドポイントを使用すると、VPC内のリソースからS3に対してプライベートな接続ができます。これにより、S3へのアクセスがインターネットを通らず、AWS内で完結します。
他の選択肢について:
  • パブリックVIF (B) はインターネット経由でデータを送信するため、要件を満たしません。
  • S3インターフェイスエンドポイント (C) は特定のVPC内で使用されるもので、S3へのアクセスをプライベートにしますが、通常はVPC内でのみ使用されるため、別のアカウントにデータを送信する場合には適切ではないかもしれません。
  • VPCピアリング (E) は、異なるアカウント間でVPCを直接接続する方法ですが、データ転送のプライベート化にはS3ゲートウェイエンドポイントの方が適切です。
このように、Direct ConnectS3ゲートウェイエンドポイントを使用することで、インターネットを経由せずにプライベートな方法でデータを送信できます。
 

 

284-AWS SAP AWS 「理論・実践・一問道場」DynamoDBキャパシティモード

 

理論

DynamoDBのコスト最適化と運用負担軽減
AWS DynamoDBは、スケーラブルなNoSQLデータベースサービスで、パフォーマンスと可用性を高い水準で提供します。しかし、効果的に利用するためにはコストと運用負担を最適化する方法を理解することが重要です。以下に、DynamoDBのコスト管理と運用のベストプラクティスを紹介します。

DynamoDBキャパシティモードの選択

DynamoDBでは、プロビジョンドキャパシティモードオンデマンドキャパシティモードの2つのキャパシティモードが提供されます。どちらのモードを選択するかは、使用ケースに依存します。
  • プロビジョンドキャパシティモード: 事前に設定したリソース(RCUsとWCUs)に基づいてリクエストが処理されます。このモードは、リソース消費が予測可能で安定している場合に最適です。ただし、ピーク時にリソース不足が発生しないように過剰な容量を設定すると、コストが無駄に高くなる可能性があります。
  • オンデマンドキャパシティモード: リクエストの量に応じてDynamoDBが自動的にスケールするため、ピーク時には自動的にリソースが増加し、非ピーク時にはリソースが削減されます。これは、トラフィックの変動が大きいアプリケーションや予測が難しいワークロードに適しています。オンデマンドモードは、予測可能なリソース需要がある場合にはコストが高くなる可能性があるため、注意が必要です。

オートスケーリングの活用

オートスケーリングは、DynamoDBが自動的に読み取りおよび書き込みのキャパシティを調整する機能です。これにより、トラフィックの増減に合わせてリソースを動的に調整でき、過剰なコストを削減しつつ、パフォーマンスを維持することができます。オートスケーリングは、リソース需要の急激な変動に対応するため、手動でのリソース管理の手間を省くために非常に有効です。
  • 読み取りキャパシティの設定:
    • 最小RCU(最小読み取りキャパシティユニット): オートスケーリング時に減少する最小値。例えば、5に設定。
    • 最大RCU(最大読み取りキャパシティユニット): オートスケーリング時に増加する最大値。例えば、100に設定。
    • スケーリングのターゲット値(Target Utilization): リソース使用率の目標値。通常は50〜70%に設定します。例えば、50%に設定。
  • 書き込みキャパシティの設定:
    • 最小WCU(最小書き込みキャパシティユニット): オートスケーリング時に減少する最小値。例えば、5に設定。
    • 最大WCU(最大書き込みキャパシティユニット): オートスケーリング時に増加する最大値。例えば、50に設定。
    • スケーリングのターゲット値(Target Utilization): 例えば、50%に設定。

リザーブドキャパシティの選択

リザーブドキャパシティは、一定期間(通常1年または3年)の間、特定のキャパシティを事前に購入するオプションです。この方法は、長期間安定したリソース消費が見込まれる場合に割引を受けながらコスト削減が可能ですが、ピーク時のみリソースが必要な場合には過剰なコストが発生する可能性があります。

コスト最適化のベストプラクティス

  • トラフィックのパターンを理解する: アプリケーションのトラフィックのピーク時と非ピーク時を把握し、それに基づいてキャパシティを設定します。オンデマンドキャパシティやオートスケーリングを活用することで、需要に合わせたリソース調整が可能です。
  • スケーリングポリシーを設定する: オートスケーリングを利用する場合、スケーリングのしきい値や増加量、減少量を適切に設定し、リソースの過剰消費や不足を防ぎます。
  • 監視とアラートを設定する: DynamoDBの使用状況を監視し、異常なリソース消費が発生した場合にアラートを設定します。これにより、運用チームが迅速に対応できるようになります。

まとめ

DynamoDBのコスト最適化には、使用ケースに応じたキャパシティモードの選択、オートスケーリングの活用、リザーブドキャパシティの適切な利用が鍵となります。これらを組み合わせることで、リソース消費の効率化を図り、無駄なコストを削減することが可能です。

実践

一問道場

問題 #284
ある企業はファーストフードのレストランを運営しています。レストランは、1日4時間のピーク時間に高い売上があり、それ以外の時間帯では売上が低くなります。ポイントオブセール(POS)および管理プラットフォームはAWSクラウドにデプロイされており、バックエンドはAmazon DynamoDBをベースにしています。データベーステーブルは、既知のピークリソース消費に合わせて、100,000 RCUs(読み取りキャパシティユニット)と80,000 WCUs(書き込みキャパシティユニット)を使用するプロビジョンドスループットモードで設定されています。
企業はDynamoDBのコストを削減し、ITスタッフの運用負担を最小化したいと考えています。
どのソリューションが最もコスト効果が高い方法でこれらの要件を満たしますか?
A. プロビジョンドRCUsおよびWCUsを減らす。
B. DynamoDBテーブルをオンデマンドキャパシティに変更する。
C. テーブルのDynamoDBオートスケーリングを有効にする。
D. ピーク負荷をカバーするのに十分な1年間のリザーブドキャパシティを購入する。

解説

正解: C. テーブルのDynamoDBオートスケーリングを有効にする
この選択肢が最も適切な理由を解説します。

背景

問題の企業は、DynamoDBを利用してファーストフードのレストランの売上データを管理しており、売上の変動に応じたリソース消費が発生しています。特に、1日のピーク時間に高いリソース消費があり、それ以外の時間帯はリソース消費が低くなります。このため、コスト削減と運用負担の軽減を目指しています。

各選択肢の分析

A. プロビジョンドRCUsおよびWCUsを減らす

  • プロビジョンドキャパシティモードでは、固定されたRCUs(読み取りキャパシティユニット)とWCUs(書き込みキャパシティユニット)を設定します。
  • 問題点: 非ピーク時にリソースを削減しても、ピーク時にリソース不足が生じる可能性があり、パフォーマンスが低下します。また、手動での調整が必要となり、運用負担が増える恐れがあります。
  • 結論: この方法はリソース消費の最適化には向いていません。

B. DynamoDBテーブルをオンデマンドキャパシティに変更する

  • オンデマンドキャパシティモードでは、リクエストの数に応じてDynamoDBが自動的にリソースをスケーリングします。ピーク時や非ピーク時に合わせてリソースが自動的に調整されます。
  • 問題点: オンデマンドモードは、読み書きリクエストの量が不定期な場合には非常に便利ですが、一定のリソース需要が予測できる場合(例えば、企業の事例のようにピーク時間帯が決まっている場合)には、オートスケーリングの方が細かく調整できるため、よりコスト効率が高いです。
  • 結論: オンデマンドモードも効果的ですが、オートスケーリングの方がより最適です。

C. テーブルのDynamoDBオートスケーリングを有効にする

  • オートスケーリングは、トラフィックの変動に合わせてRCUsとWCUsを自動的に調整する機能です。
  • メリット:
    • 非ピーク時にリソースが減り、コストが削減されます。
    • ピーク時には自動的にリソースが増加し、パフォーマンスを維持できます。
    • 手動でのリソース調整が不要となり、運用負担が軽減されます。
    • オートスケーリングは、必要なリソースを最適化し、無駄なコストを削減します。
  • 結論: 企業のニーズに最も適した方法であり、コスト削減と運用負担の軽減を最適化できます。

D. ピーク負荷をカバーするのに十分な1年間のリザーブドキャパシティを購入する

  • リザーブドキャパシティは、一定のリソースを長期間(通常は1年間)事前に購入する方法です。割引が適用されますが、ピーク時のみリソースを必要としている場合、非ピーク時にも余分なリソースを購入することになり、無駄なコストが発生します。
  • 問題点: 予測が難しい非ピーク時のリソース消費に対して無駄な支出が発生するため、コスト効率が悪くなります。
  • 結論: コスト削減には向いていません。

結論

最もコスト効率が高く、運用負担を最小化する方法は C. テーブルのDynamoDBオートスケーリングを有効にする です。この選択肢は、リソース需要の変動に柔軟に対応し、過剰なコストを避けることができるため、最も適しています。
 
 

 

285-AWS SAP AWS 「理論・実践・一問道場」AppSync GraphQL API を提供

 

理論

notion image
AWS AppSync のバックエンドは GraphQL API に基づいており、リアルタイムデータの配信に WebSocket を使用することができます。
具体的には、AWS AppSync は以下のように動作します:
  • GraphQL API を通じて、アプリケーションがデータにアクセスできるようにします。
  • WebSocket プロトコルを利用して、クライアントとサーバー間でリアルタイムの双方向通信を確立します。これにより、データが変更されると、その変更が即座にクライアントに通知されます。
したがって、WebSocket は AWS AppSync の一部として使用され、リアルタイムのデータ更新や双方向通信を実現しますが、AppSync 自体は GraphQL API を提供するサービスです。WebSocket API は、AppSync の機能の一部であり、特にリアルタイムで更新されるデータに関してクライアントに情報をプッシュする役割を果たします。

リアルタイムデータ配信とアプリケーションのパフォーマンス向上

AWS では、アプリケーションのリアルタイムデータ配信を実現するためのさまざまな方法があります。これらの技術は、ユーザーエクスペリエンスの向上や、アプリケーションのパフォーマンス最適化に貢献します。

1. WebSocket とリアルタイム通信

WebSocket は、双方向通信を提供するプロトコルで、サーバーとクライアント間で常に接続を維持します。これにより、サーバー側からクライアントにリアルタイムでデータをプッシュすることが可能になります。AWS では AWS AppSync がこの技術を利用して、WebSocket ベースのリアルタイム通信を実現しています。これを活用することで、チャットアプリケーションやリアルタイムフィードのようなシナリオで、高速かつ効率的にデータを配信できます。

2. ポーリングとその課題

ポーリングは、クライアントが定期的にサーバーにリクエストを送って最新のデータを取得する方法ですが、これにはいくつかの問題があります。ポーリングによってサーバーへのリクエストが増加し、無駄なデータ取得が発生するため、サーバーの負荷やネットワークのトラフィックが増大します。また、データが更新されるタイミングに遅れが生じる可能性があり、リアルタイム性を必要とするシナリオでは不向きです。

3. API Gateway とリアルタイム配信

AWS API Gateway は、RESTful API の作成や管理を支援するサービスですが、WebSocket API をサポートしており、リアルタイムの双方向通信を構築することもできます。この機能を利用することで、特定のシナリオにおいては、クライアントからのリクエストに即座にレスポンスを返すといったリアルタイム機能を提供できます。

4. サーバーレスアーキテクチャの活用

AWS Lambda や Amazon DynamoDB のようなサーバーレスサービスを活用することで、スケーラブルで高パフォーマンスなアプリケーションを構築できます。これにより、リクエスト数に応じて自動的にスケールし、コスト効率よくリソースを活用できます。ただし、リアルタイムのデータ配信を行う場合、Lambda などのバックエンドサービスだけでは、コメントの即時更新やユーザーとの双方向通信の要求に十分対応できないことがあります。

5. AppSync のメリット

AWS AppSync は、リアルタイムデータ配信に特化したマネージドサービスであり、GraphQL API を通じてアプリケーションのクライアントとサーバー間で効率的にデータをやり取りできます。WebSocket を利用することで、リアルタイムでデータの更新をクライアントにプッシュでき、コメントセクションのようなダイナミックなコンテンツ更新が求められる場面で特に有効です。

まとめ

リアルタイムデータ配信を効率的に行うためには、WebSocket や AWS AppSync を活用するのが最適です。これらの技術により、アプリケーションが高頻度でデータを更新し、ユーザーに即座に反映させることが可能になります。一方で、ポーリングやキャッシュの利用は、特にデータのリアルタイム性が求められる場合には限界があります。

実践

一問道場

問題 #285
ある企業は、Amazon API Gateway、Amazon DynamoDB、および AWS Lambda を使用してブログ投稿アプリケーションを AWS 上でホストしています。現在、このアプリケーションでは API キーを使用してリクエストを認証していません。API の構成は以下の通りです。
GET /posts/(postId): 投稿詳細の取得
GET /users/(userId): ユーザー詳細の取得
GET /comments/(commentId): コメント詳細の取得
企業は、ユーザーがコメントセクションで活発に議論していることに気付き、ユーザーのエンゲージメントを高めるために、コメントをリアルタイムで表示したいと考えています。
コメントの遅延を減らし、ユーザー体験を向上させるためには、どの設計を使用するべきですか?
A. エッジ最適化された API を使用して、Amazon CloudFront で API レスポンスをキャッシュする。
B. ブログアプリケーションのコードを変更して、10 秒ごとに GET/comments/(commentId) をリクエストする。
C. AWS AppSync を使用し、WebSocket を活用してコメントを配信する。
D. Lambda 関数の同時実行制限を変更して、API の応答時間を短縮する。

解説

この問題では、ブログアプリケーションにおけるコメントのリアルタイム表示を実現し、ユーザー体験を向上させる方法を選択する必要があります。以下の各選択肢について解説します。

A. エッジ最適化された API を使用して、Amazon CloudFront で API レスポンスをキャッシュする。

  • CloudFront はキャッシュの役割を果たし、リクエストの負荷を軽減するためのサービスですが、コメントのリアルタイム表示には適していません。コメントが頻繁に更新されるため、キャッシュが古くなり、最新のコメントを反映するのに遅れが生じる可能性があります。したがって、コメントのリアルタイム性には効果的ではありません。

B. ブログアプリケーションのコードを変更して、10 秒ごとに GET/comments/(commentId) をリクエストする。

  • ポーリング(一定間隔でデータをリクエストする方法)を用いる方法ですが、このアプローチには無駄なリクエストが発生し、効率が悪いです。また、コメントの更新をリアルタイムに反映するためには、10秒ごとのリクエストでは十分に高速な反映ができない可能性があり、遅延が発生する場合があります。

C. AWS AppSync を使用し、WebSocket を活用してコメントを配信する。

  • AWS AppSync は、WebSocket を活用してリアルタイムデータの配信を行うためのサービスです。これにより、クライアントはサーバーからの変更をリアルタイムで受け取ることができ、コメントが即座に更新されるため、非常に効果的です。リアルタイム性が必要な場合に最適な選択です。

D. Lambda 関数の同時実行制限を変更して、API の応答時間を短縮する。

  • Lambda 関数の同時実行数を増やすことで、リクエストの並列処理能力を向上させることができますが、コメントのリアルタイム性を改善する方法としては限界があります。Lambda の同時実行数の変更は、API のパフォーマンス向上に役立ちますが、リアルタイムのデータ配信には適していません

正解: C

AWS AppSync と WebSocket を使用することで、コメントをリアルタイムでユーザーに配信することができ、最も効率的にユーザー体験を向上させる方法です。
 

 

286-AWS SAP AWS 「理論・実践・一問道場」s3:AccessPointNetworkOrigin

 

理論

AWS OrganizationsとSCP(サービスコントロールポリシー)を活用したアクセス管理は、複数のAWSアカウントを中央で管理する際に非常に有効です。SCPは、組織内のすべてのアカウントに対して一貫したポリシーを適用し、どのアクションが許可されるか、または拒否されるかを制御するための強力なツールです。

サービスコントロールポリシー(SCP)の基本概念

  • SCPは、AWS Organizationsで管理するアカウント全体に適用できるポリシーで、特定のAWSサービスやアクションに対するアクセス権限を制御します。個別のアカウントに適用されるIAMポリシーとは異なり、SCPは組織レベルでアクセス制御を行うため、中央集権的な管理が可能です。
  • SCPは、最上位のポリシーとして、組織内のすべてのアカウントに対して適用され、アカウントが許可する最大のアクション範囲を決定します。

S3アクセスポイントとVPCエンドポイントの連携

  • S3アクセスポイントは、特に共有データセットを使用するアプリケーションに便利な機能です。各アクセスポイントには独自のアクセス許可を設定でき、データアクセスを細かく制御できます。
  • VPCエンドポイントは、VPC内のリソースからインターネットに接続せずに、S3などのAWSサービスに安全にアクセスできるようにするためのサービスです。VPC内のリソースがインターネットを介さずにS3にアクセスする場合に、VPCエンドポイントポリシーを使用してアクセス制御が可能です。

SCPによるVPC限定のアクセス制御

  • SCPを使用して、VPC内からのみ特定のS3アクセスポイントにアクセスできるように制限することができます。これにより、インターネット経由でのアクセスを防止し、内部リソースへのセキュアなアクセスを保証できます。
  • 具体的には、s3:CreateAccessPointアクションに対して、s3:AccessPointNetworkOriginという条件キーを使用し、その値がVPCである場合のみアクセスを許可するポリシーを適用できます。これにより、VPC外からのアクセスポイント作成を防ぎ、セキュリティを強化することができます。

運用効率とセキュリティの向上

  • 組織全体で一貫したアクセス制御を行うことができ、ポリシーの管理や変更が簡素化されます。これにより、複数のアカウントにまたがるアクセス制御を効率的に維持することができます。
  • AWS OrganizationsとSCPを組み合わせて使用することで、セキュリティの強化と運用の簡素化が実現でき、管理者はインフラ全体を簡単に監視・制御できるようになります。
このような管理方法により、大規模なクラウド環境におけるセキュリティとコンプライアンスを維持しつつ、運用効率を最大化することができます。
 

重点な設定

s3:AccessPointNetworkOrigin は、S3 アクセスポイントへのアクセスを VPC 内 に限定するための条件キーです。これを利用することで、インターネット経由でのアクセスを拒否し、VPC 内のリソースのみがアクセスポイントを通じて S3 バケットにアクセスできるように設定できます。

利用手順:

  1. S3 アクセスポイントを作成 する。
  1. アクセスポイントの リソースポリシー に、s3:AccessPointNetworkOrigin を追加し、条件として "s3:AccessPointNetworkOrigin": "VPC" を指定する。
  1. VPC エンドポイント を作成し、VPC 内からのみアクセスできるように設定する。
この設定により、VPC 内からのみ S3 アクセスポイントにアクセス可能となります。

実践

一問道場

問題 #286
ある企業はAWS Organizationsで数百のAWSアカウントを中央管理しています。最近、企業は製品チームが自分のアカウントでS3アクセスポイントを作成および管理できるようにしました。S3アクセスポイントは、インターネット上ではなく、VPC内からのみアクセスできるように設定されています。
この要件を最も運用効率的に強制する方法はどれですか?
A. S3アクセスポイントリソースポリシーを設定して、s3:CreateAccessPointアクションを拒否し、s3:AccessPointNetworkOrigin条件キーがVPCに評価される場合のみ許可する。
B. 組織のルートレベルでSCPを作成し、s3:CreateAccessPointアクションを拒否し、s3:AccessPointNetworkOrigin条件キーがVPCに評価される場合のみ許可する。
C. AWS CloudFormation StackSetsを使用して、各AWSアカウントで新しいIAMポリシーを作成し、s3:CreateAccessPointアクションをs3:AccessPointNetworkOrigin条件キーがVPCに評価される場合のみ許可する。
D. S3バケットポリシーを設定して、s3:CreateAccessPointアクションを拒否し、s3:AccessPointNetworkOrigin条件キーがVPCに評価される場合のみ許可する。

解説

正解: B

  • *SCP(サービスコントロールポリシー)**を使用する方法は、AWS Organizationsを使用して複数のアカウントを中央管理している場合に最も運用効率が良い方法です。具体的には、SCPは組織内のすべてのアカウントに適用できるポリシーであり、アカウント単位でアクセス制御を強制できます。

なぜBが正解なのか?

  • AWS Organizationsを使って複数のアカウントを管理しているシナリオで、SCPを使って条件付きでアクセス権限を制限する方法が、組織全体で統一的に管理できるため最も効率的です。
  • s3:CreateAccessPoint アクションを制限する条件に、s3:AccessPointNetworkOriginVPC に評価される場合のみ許可するようにすることで、アクセスがVPC内からのものに限定されることが確保できます。

他の選択肢との比較:

  • A(S3アクセスポイントリソースポリシー)も有効な方法ですが、SCPの方が全アカウントに一貫した制限を適用するため、運用効率が良いです。リソースポリシーは特定のリソースに対して個別に設定する必要があり、管理が複雑になる可能性があります。
  • C(CloudFormation StackSetsを使用する方法)は、複数アカウントにポリシーを展開するための手段として使えますが、SCPを使う方がより効率的でシンプルです。
  • D(S3バケットポリシーを使用)は、アクセスポイントの作成に対して制限を設けるものではなく、アクセス制御に関連しているため、適切な方法ではありません。

結論:

AWS OrganizationsのSCPを使用して、VPC内からのみにアクセスを制限する方法が、組織全体で簡潔かつ効率的に管理できるため、最適な解決策です。
 
 

 

287-AWS SAP AWS 「理論・実践・一問道場」環境URLの交換

 

理論

AWS Elastic Beanstalkでのブルー/グリーンデプロイメント

AWS Elastic Beanstalkでは、ブルー/グリーンデプロイメントを使用することで、アプリケーションの更新中にユーザーが短時間アクセスできなくなることを避けることができます。この方法では、新しいバージョンを新しい環境にデプロイし、その後、2つの環境のURLを入れ替えてトラフィックを新しい環境にリダイレクトします。

ブルー/グリーンデプロイメントの手順:

  1. 現在の環境を複製する
      • 現在の環境をクローンするか、必要なプラットフォームバージョンを使用して新しい環境を作成します。
  1. 新しい環境に新しいアプリケーションバージョンをデプロイ
      • 新しいアプリケーションバージョンを新しい環境にデプロイし、動作確認を行います。
  1. 新しいバージョンのテスト
      • 新しい環境でアプリケーションのテストを実施し、問題がないことを確認します。
  1. 環境URLの交換
      • Elastic Beanstalkコンソールの**「Actions(操作)」から「Swap environment URLs(環境URLの交換)」**を選択します。
  1. トラフィックの切り替え
      • Swapボタンをクリックして、古い環境と新しい環境のURLの別名レコードを入れ替え、トラフィックを新しい環境にリダイレクトします。
  1. 確認とDNSの反映
      • URL交換後、DNSが完全に更新されるまで、旧環境を削除しないようにします。DNSのキャッシュが切れるまで時間がかかることがあります。

注意点:

  • データベースの取り扱い:ブルー/グリーンデプロイメントを行う際、データベースが独立していることが重要です。特に、Elastic Beanstalkが管理しているデータベースを使用している場合、環境を分けることでデータベースの状態を保持する必要があります。
この方法により、ダウンタイムなしでアプリケーションを更新でき、リスクを最小限に抑えることが可能です。

実践

一問道場

問題 #287
ソリューションアーキテクトは、AWS Elastic Beanstalk でブルー/グリーンデプロイメント手法を使用してアプリケーション環境を更新する必要があります。ソリューションアーキテクトは、既存のアプリケーション環境と同一の環境を作成し、新しい環境にアプリケーションをデプロイしました。
更新を完了するために次に行うべきことは何ですか?
A. Amazon Route 53 を使用して新しい環境にリダイレクトする。
B. 「環境の URL を入れ替える」オプションを選択する。
C. Auto Scaling の起動設定を置き換える。
D. DNS レコードを更新してグリーン環境を指すようにする。

解説

この問題は、AWS Elastic Beanstalk での ブルー/グリーンデプロイメント の更新プロセスに関するものです。

ブルー/グリーンデプロイメントとは?

ブルー/グリーンデプロイメントは、新しいアプリケーションバージョン(グリーン環境)を、既存のバージョン(ブルー環境)に並行してデプロイし、その後トラフィックを新しい環境に切り替える方法です。この手法により、ダウンタイムを最小限に抑えながら、問題が発生した場合に迅速にロールバックできます。

解説:

  1. 新しい環境を作成しアプリケーションをデプロイするという手順までは完了しています。
  1. 次に行うべきことは、トラフィックを新しい環境に切り替えることです。
各選択肢を見てみましょう:
  • A. Amazon Route 53 を使用して新しい環境にリダイレクトする。
    • Amazon Route 53 を使ってリダイレクトするのは通常の方法ですが、Elastic Beanstalkには、環境URLの交換を簡単に行える機能があるため、この方法は適切ではありません。
  • B. 「環境の URL を入れ替える」オプションを選択する。
    • これが正解です。 Elastic Beanstalk には「環境の URL を入れ替える」オプションがあり、これを使うことで、**新しい環境(グリーン)**にトラフィックを切り替えることができます。これにより、ユーザーのリクエストは新しい環境に送られます。
  • C. Auto Scaling の起動設定を置き換える。
    • Auto Scalingの起動設定を変更することは、ブルー/グリーンデプロイメントのトラフィック切り替えには直接関係しません。この手順は、環境に変更を加える時に必要な場合がありますが、今回のケースでは不適切です。
  • D. DNS レコードを更新してグリーン環境を指すようにする。
    • DNSレコードを手動で更新することもできますが、Elastic BeanstalkにはURLを簡単に入れ替える機能が備わっており、その方が効率的で管理が簡単です。

結論:

Elastic Beanstalkでは、**「環境の URL を入れ替える」**オプションを使うことで、グリーン環境に迅速に切り替え、ブルー環境をそのまま残しておけるため、ロールバックも簡単に行えます。
 

 

288-AWS SAP AWS 「理論・実践・一問道場」S3+SQS

 

理論

「オーバーレイ(overlay)」とは、ある画像やコンテンツの上に別の情報を重ねて表示することを指します。通常、元のコンテンツはそのまま残し、その上に新たな情報やデザイン要素を追加します。オーバーレイは、グラフィックデザイン、ビデオ編集、ウェブ開発、アプリケーションのUIなどでよく使用されます。
例えば、画像にテキストをオーバーレイすると、元の画像の上に文字が表示されます。また、ビデオに字幕をオーバーレイすることで、動画の上に字幕が重ねられ、視聴者に情報を伝えることができます。

主な利用例:

  1. 画像編集: 画像にテキストや図形を重ねて追加する。
  1. 動画編集: 動画の上にテキストやグラフィックを表示する。
  1. ウェブデザイン: 背景画像の上にボタンやメニューを重ねて表示する。
オーバーレイを使うことで、視覚的に情報を強調したり、デザインに深みを与えることができます。
 

AWS における画像処理システム設計のベストプラクティス

AWS で画像処理システムを構築する場合、スケーラブルで効率的なアーキテクチャを設計することが重要です。以下では、画像のアップロード、処理、配信に関連する主要なサービスとその組み合わせを紹介します。

1. Amazon S3 (Simple Storage Service)

  • 用途: 画像やその他の大容量データを保存するためのストレージサービスです。S3 は高い可用性と耐久性を提供し、画像ファイルの保存に最適です。
  • 利点: オブジェクトストレージとして、データの大容量保存に適しており、アクセスが高頻度でもパフォーマンスが安定しています。

2. Amazon SQS (Simple Queue Service)

  • 用途: 非同期処理を行う際に使用するメッセージキューサービスです。画像がアップロードされると、S3 バケットのイベント通知を受けて、SQS キューにメッセージが送信され、そのメッセージを EC2 インスタンスがポーリングして処理を行います。
  • 利点: 高スケーラビリティ、耐障害性、バックログ処理に強みを持ちます。SQS を利用することで、処理の負荷を分散させ、システム全体の可用性を高めることができます。

3. Amazon EC2 (Elastic Compute Cloud)

  • 用途: メッセージキューから画像処理のタスクを取得し、実際の処理を行うインスタンス群です。EC2 インスタンスは、スケールアウトやスケールインが可能で、負荷に応じて動的に調整できます。
  • 利点: EC2 は柔軟なコンピューティング能力を提供し、特定の画像処理に適したインスタンスタイプを選択することができます。

4. Amazon CloudFront

  • 用途: 高速なコンテンツ配信ネットワーク (CDN) サービスです。処理済み画像を世界中のユーザーに低遅延で配信するために使用します。
  • 利点: グローバルなエッジロケーションを活用し、画像の配信を高速化することができ、ウェブサイトのパフォーマンスが向上します。

5. スケーリングのベストプラクティス

  • 自動スケーリング: AWS では、CloudWatch メトリクスを基にして、処理リソースを動的にスケールアウトまたはスケールインできます。例えば、SQS キューの深さや EC2 の CPU 使用率を監視して、必要に応じて EC2 インスタンスの数を調整することで、コスト効率を保ちながら負荷に対応できます。
  • コンテナ化 (Amazon ECS / EKS): 複数の EC2 インスタンスを管理する代わりに、Amazon ECS や EKS を使ってコンテナ化されたアプリケーションをスケールする方法もあります。これにより、より効率的にリソースを管理できます。

6. イベント駆動型アーキテクチャ

  • S3 イベント通知: S3 に画像がアップロードされると、S3 イベント通知を利用して、画像の処理フローをトリガーできます。これにより、リアルタイムでの処理が可能となり、効率的なシステム設計が可能です。
  • Lambda を使った自動化: 小規模な処理であれば、AWS Lambda を使ってサーバーレスで画像処理を行うこともできます。Lambda はイベント駆動型で、自動的にスケールし、処理完了後の結果を別の S3 バケットに保存することができます。

7. データベースとメタデータ管理

  • DynamoDB: 画像に関連するメタデータ(例: アップロード日時、処理ステータス、ユーザー情報など)を管理するために DynamoDB を使用することができます。DynamoDB は高速でスケーラブルな NoSQL データベースであり、リアルタイムなデータの読み書きが可能です。

結論

AWS での画像処理システムの設計は、スケーラビリティ、耐障害性、パフォーマンスに重点を置いたアーキテクチャを構築することが重要です。Amazon S3 と SQS を使った非同期処理、EC2 や Lambda を使ったコンピューティング処理、CloudFront を利用したコンテンツ配信など、AWS の各サービスを適切に組み合わせることで、効率的でスケーラブルなシステムを実現できます。

実践

一問道場

質問 #288
ある企業が、ユーザーがランダムな写真をアップロードし、検索できるウェブベースの画像サービスを構築しています。ピーク時には、最大10,000人のユーザーが世界中から画像をアップロードする予定です。その後、ユーザーはアップロードされた画像にテキストをオーバーレイし、その画像を企業のウェブサイトに公開します。
ソリューションアーキテクトは、どの設計を実装すべきですか?
A. アップロードされた画像をAmazon Elastic File System(Amazon EFS)に保存します。各画像に関するアプリケーションのログ情報をAmazon CloudWatch Logsに送信します。CloudWatch Logsを使用して処理が必要な画像を特定するAmazon EC2インスタンスのフリートを作成します。処理された画像は、Amazon EFS内の別のディレクトリに配置します。Amazon CloudFrontを有効にし、そのオリジンをEC2インスタンスの1つに設定します。
B. アップロードされた画像をAmazon S3バケットに保存し、S3バケットのイベント通知を設定して、メッセージをAmazon Simple Notification Service(Amazon SNS)に送信します。SNSからメッセージを取得して画像を処理するAmazon EC2インスタンスのフリートを、アプリケーションロードバランサー(ALB)の背後に作成します。処理後の画像をAmazon Elastic File System(Amazon EFS)に保存します。SNSメッセージのボリュームに対してCloudWatchメトリクスを使用し、EC2インスタンスをスケールアウトします。Amazon CloudFrontを有効にし、そのオリジンをALBに設定します。
C. アップロードされた画像をAmazon S3バケットに保存し、S3バケットのイベント通知を設定して、Amazon Simple Queue Service(Amazon SQS)キューにメッセージを送信します。SQSキューからメッセージを取得して画像を処理し、別のS3バケットに配置するAmazon EC2インスタンスのフリートを作成します。キューの深さに対してCloudWatchメトリクスを使用してEC2インスタンスをスケールアウトします。Amazon CloudFrontを有効にし、そのオリジンを処理された画像を含むS3バケットに設定します。
D. アップロードされた画像を、Amazon EC2 Spotインスタンスのフリートにマウントされた共有Amazon Elastic Block Store(Amazon EBS)ボリュームに保存します。各アップロード画像とその処理状況に関する情報を含むAmazon DynamoDBテーブルを作成します。Amazon EventBridgeルールを使用してEC2インスタンスをスケールアウトします。Amazon CloudFrontを有効にし、そのオリジンをEC2インスタンスのフリートの前に配置されたElastic Load Balancerに設定します。

解説

この問題では、画像のアップロード、処理、公開のプロセスを効率化するために、AWSのサービスを適切に組み合わせてスケーラブルで高性能なアーキテクチャを構築する方法を選択する必要があります。
選択肢ごとの解説:

A. Amazon EFS と CloudWatch Logs を使用

  • 問題点: Amazon EFS はファイルシステムのため、主にストレージとして使用されますが、画像処理においてはあまりスケーラブルで効率的ではありません。また、CloudWatch Logs を使って画像処理をトリガーするのは不適切です。
  • 評価: このアーキテクチャは、スケーラビリティや効率の観点から最適ではなく、特に画像処理のために EC2 インスタンスをトリガーする方法としては不十分です。

B. Amazon S3 と Amazon SNS を使用

  • 問題点: S3 バケットでアップロードされた画像を SNS に通知し、その後 EC2 インスタンスで画像を処理するというアーキテクチャは、確かにスケーラブルではありますが、処理後の画像を EFS に保存するという点が効率的ではありません。EFS は通常、複数の EC2 インスタンスからアクセスするためのファイルシステムに適していますが、画像データに関しては S3 の方がより適切です。
  • 評価: SNS を使って処理フローをスケールする設計自体は良いものの、S3 に保存された画像を EFS に保存することには改善の余地があります。

C. Amazon S3 と Amazon SQS を使用

  • 正解: S3 は画像の保存に最適で、SQS を使用して処理のトリガーを効率的に管理できます。また、EC2 インスタンスが SQS キューからメッセージを取得して画像を処理し、処理された画像を別の S3 バケットに格納するのは、分散システムにおいて効率的でスケーラブルな方法です。さらに、CloudFront を使って処理後の画像を配信することで、パフォーマンスが向上します。
  • 評価: S3 + SQS の組み合わせは非常にスケーラブルで、AWS のサービスを効果的に利用したアーキテクチャです。特に、画像処理の際に EC2 インスタンスをスケールアウトするために CloudWatch メトリクスを使用できる点も優れています。

D. Amazon EBS と DynamoDB を使用

  • 問題点: EBS はブロックストレージであり、EC2 インスタンスにマウントして使用するため、大規模なストレージ処理には不向きです。画像のような大容量データを扱うには、Amazon S3 の方が適しています。また、DynamoDB で処理状況を管理する点も過剰な実装になります。
  • 評価: EBS はスケーラビリティの観点で効果的ではなく、画像処理における最適な選択肢ではありません。

結論:

C の選択肢が最適です。Amazon S3 を使った画像の保存、Amazon SQS を使った非同期処理、そして CloudFront による高速なコンテンツ配信が、スケーラブルで高パフォーマンスなソリューションを提供します。
 

 

289-AWS SAP AWS 「理論・実践・一問道場」Amazon Aurora MySQL 双方向書き込み

 

理論

notion image

クロスリージョンレプリケーションの基本と活用方法

クロスリージョンレプリケーションは、複数のリージョン間でデータを同期し、アプリケーションのパフォーマンスと可用性を向上させる技術です。Amazon RDSとAuroraは、これをサポートし、異なる地域にまたがるデータベースを同期させ、以下の利点を提供します。
  • 低レイテンシ: ユーザーが近いリージョンにアクセスすることで、データアクセスが高速化。
  • 高可用性: 障害発生時にもサービスが継続可能。
  • 災害復旧: 他リージョンでデータを自動的にバックアップ。

主な実装方法

  • Amazon RDS for MySQL: クロスリージョンレプリカを作成し、プライマリインスタンスとの同期を行う。ただし、書き込みは片方向に制限されます。
  • Amazon Aurora MySQL: マルチリージョンAuroraクラスターを使い、双方向書き込みをサポート。これにより、リアルタイムでデータが同期されます。

ベストプラクティス

  • データ整合性の確保: 書き込み競合を管理し、整合性を保つ。
  • モニタリング: レプリケーション状態を監視し、異常時にアラートを受け取る。
これらの技術を活用することで、グローバルに展開するアプリケーションのパフォーマンスと信頼性を高めることができます。
 

実践

一問道場

質問 #289
ある会社は、us-east-1 リージョンの Amazon RDS for MySQL DB インスタンスにデータベースを展開しています。会社は、ヨーロッパのお客様にも同じデータを提供する必要があります。ヨーロッパのお客様は、アメリカのお客様と同じデータにアクセスできる必要があり、高いアプリケーションのレイテンシや古いデータは許容されません。アメリカのお客様とヨーロッパのお客様は両方ともデータベースに書き込みを行う必要があり、どちらのグループのお客様も、もう一方のグループからの更新をリアルタイムで確認できる必要があります。
どのソリューションがこの要件を満たしますか?
A. Amazon Aurora MySQL のレプリカを RDS for MySQL DB インスタンスのレプリカとして作成します。RDS DB インスタンスへのアプリケーションの書き込みを一時停止します。Aurora レプリカをスタンドアロンの DB クラスターとして昇格させます。アプリケーションを Aurora データベースに再構成し、書き込みを再開します。DB クラスターに eu-west-1 をセカンダリリージョンとして追加し、DB クラスターで書き込み転送を有効にします。アプリケーションを eu-west-1 にデプロイし、アプリケーションが eu-west-1 の Aurora MySQL エンドポイントを使用するように設定します。
B. RDS for MySQL DB インスタンスのクロスリージョンレプリカを eu-west-1 に追加します。レプリカを設定して、書き込みクエリをプライマリ DB インスタンスに戻すようにします。アプリケーションを eu-west-1 にデプロイし、アプリケーションが eu-west-1 の RDS for MySQL エンドポイントを使用するように設定します。
C. RDS for MySQL DB インスタンスから最も最近のスナップショットを eu-west-1 にコピーします。そのスナップショットから eu-west-1 に新しい RDS for MySQL DB インスタンスを作成します。us-east-1 から eu-west-1 への MySQL 論理レプリケーションを設定します。DB クラスターで書き込み転送を有効にします。アプリケーションを eu-west-1 にデプロイし、アプリケーションが eu-west-1 の RDS for MySQL エンドポイントを使用するように設定します。
D. RDS for MySQL DB インスタンスを Amazon Aurora MySQL DB クラスターに変換します。DB クラスターに eu-west-1 をセカンダリリージョンとして追加します。DB クラスターで書き込み転送を有効にします。アプリケーションを eu-west-1 にデプロイし、アプリケーションが eu-west-1 の Aurora MySQL エンドポイントを使用するように設定します。

解説

この問題では、ヨーロッパとアメリカの顧客が、リアルタイムで同じデータにアクセスできるように、データベースを高可用性と低レイテンシで提供する方法を求められています。両方の地域からデータベースへの書き込みが必要で、データの整合性を保ちながら、リアルタイムでの更新を反映させることが求められています。

各選択肢の解説

A. Aurora MySQLのレプリカを作成

  • 説明: Aurora MySQLのレプリカを作成し、書き込み転送を有効にするという選択肢です。Auroraでは、セカンダリリージョンにレプリケーションを設定し、書き込み転送を可能にします。しかし、この方法はAurora MySQLを使用する必要があり、RDS for MySQLを使い続ける選択肢には適していません。
  • 適用不可: RDS for MySQLのままで、同じDBインスタンスで書き込みを行いたいという要件に完全には対応していません。

B. RDS for MySQLのクロスリージョンレプリカを作成

  • 説明: クロスリージョンレプリケーションを使用して、書き込みクエリを両地域に同期させる方法です。RDS for MySQLのクロスリージョンレプリケーションは、異なるリージョン間でのデータ同期に有効ですが、書き込みは片方のリージョンで行われ、その書き込みがもう一方のリージョンに転送されます。リアルタイムでの書き込み同期が必要な場合、この方法では適切ではありません。
  • 不適切: 書き込みの同期に遅延が生じる可能性があり、リアルタイム更新の要件には不十分です。

C. スナップショットを使ったMySQLの論理レプリケーション

  • 説明: RDS for MySQLのスナップショットを使用して、別のリージョンに新しいインスタンスを作成し、論理レプリケーションで同期を取る方法です。これにより、データが同期されますが、書き込みの転送については制限があります。また、手動で設定が必要となるため、リアルタイムの更新を保つには手間がかかります。
  • 不適切: データのリアルタイム更新が難しく、複雑な設定が必要です。

D. Aurora MySQLクラスターへの変換とクロスリージョン書き込み転送

  • 説明: RDS for MySQLをAmazon Aurora MySQLに変換し、Aurora MySQLのクロスリージョン機能を活用して、リアルタイムでのデータの整合性を保ちながら、書き込み転送を有効にする方法です。この選択肢は、データベースのスケーラビリティやリアルタイムでのデータ更新を確保できる最適な方法です。Auroraでは、クロスリージョンでの書き込み転送がサポートされており、高可用性が提供されます。
  • 適切: Aurora MySQLは高いパフォーマンスと可用性を提供し、複数リージョン間でのリアルタイム同期が可能です。このため、リアルタイム更新と高可用性を求める要件に最適なソリューションです。

結論

最適なソリューションはDです。RDS for MySQLをAurora MySQLに変換し、クロスリージョン書き込み転送を有効にすることで、両方のリージョンでリアルタイムにデータを更新できるようになります。
 

 

290-AWS SAP AWS 「理論・実践・一問道場」VPCホスト型エンドポイント

理論

AWS Transfer Familyの概要

AWS Transfer Familyは、企業がSFTP、FTPS、FTPなどのプロトコルを使用して、安全にファイルを送受信するためのサービスです。AWS上でファイル転送サービスを運用するため、以下の特徴があります。
  • マネージドサービス: AWS Transfer Familyはフルマネージドサービスとして提供され、サーバーの管理、スケーリング、パッチ適用などの手間を省きます。
  • セキュリティ: 高いセキュリティ基準でファイル転送を行えるように、AWSのIAM、VPC、KMS(暗号化)などと統合されています。
  • スケーラビリティ: 高トラフィックや高可用性を求めるシナリオに対応するため、スケールアップやスケールダウンを自動で調整できます。

VPCホスト型エンドポイントと公開アクセス可能なエンドポイント

AWS Transfer Familyは、ファイル転送サービスをVPC内でホストするか、インターネットから直接アクセス可能なエンドポイントでホストするかを選択できます。この選択は、セキュリティやネットワークアーキテクチャに大きな影響を与えます。

1. VPCホスト型エンドポイント

VPCホスト型エンドポイントでは、AWS Transfer FamilyサービスをVPC内に配置し、セキュリティやアクセス制御をVPC設定で行うことができます。
  • メリット:
    • VPC内でのみアクセス可能にすることで、外部からのアクセスを制限し、セキュリティが強化されます。
    • 内部システムや他のAWSリソースとセキュアなネットワーク経路を通じて接続できます。
    • パブリックインターネット経由でなく、プライベートなネットワーク接続が可能になります。
  • 使用シーン:
    • 内部システムとのファイル転送を行いたい場合
    • セキュアなファイル転送が求められ、インターネットからのアクセスを避けたい場合

2. 公開アクセス可能なエンドポイント

公開アクセス可能なエンドポイントは、インターネットから直接アクセス可能なエンドポイントです。この方法では、外部の顧客がインターネットを介してSFTPやFTPSを通じてファイルを送受信します。
  • メリット:
    • インターネットを介してアクセスが可能なため、広範囲の顧客に対応できます。
    • 外部顧客が容易にアクセスできるため、ファイル転送のセットアップが簡単です。
  • 使用シーン:
    • 顧客がインターネット経由でファイルにアクセスする必要がある場合
    • 特に企業の外部の取引先や顧客とのファイル交換が求められる場合

VPCホスト型エンドポイントの利用方法と設計

VPCホスト型のエンドポイントを選択した場合、AWS Transfer FamilyはVPC内でホストされるため、インターネットのアクセス経路を経由せず、VPC内のリソースと直接連携できます。例えば、以下のようなシナリオがあります。
  • 企業内システムとの統合:
    • VPC内のアプリケーションやストレージ(例: Amazon S3、Amazon EFS)と統合し、セキュアにファイルを転送。
    • 外部とのアクセスを制限し、内部で完結するデータ転送や処理が求められる場合に有効。
  • セキュアなファイル転送:
    • パブリックインターネットを経由せず、専用のVPC内でのみアクセスすることで、ファイアウォールやセキュリティグループでアクセスを厳密に制御できます。

AWS Transfer Familyの利用例

  • 企業間ファイル交換: B2B(Business-to-Business)のファイル転送のセキュリティ強化。
  • バックアップとアーカイブ: 定期的なバックアップをセキュアに転送・保存する場合。
  • データ移行: 大量のデータを安全にAWSに移行する場合。

まとめ

AWS Transfer FamilyをVPC内でホストすることで、セキュアでスケーラブルなファイル転送環境を構築できます。公開アクセス可能なエンドポイントとVPCホスト型エンドポイントを使い分けることで、セキュリティ要件やネットワーク設計に応じた適切なファイル転送ソリューションを提供することができます。

実践

一問道場

質問 #290
ある会社は、インターネット越しにアクセス可能なSFTPサーバーを通じて、顧客にファイルを提供しています。SFTPサーバーは、Elastic IPアドレスがアタッチされた単一のAmazon EC2インスタンスで実行されています。顧客はそのElastic IPアドレスを通じてSFTPサーバーに接続し、SSH認証を使用します。EC2インスタンスには、すべての顧客IPアドレスからのアクセスを許可するセキュリティグループもアタッチされています。
ソリューションアーキテクトは、可用性を向上させ、インフラ管理の複雑さを最小化し、ファイルにアクセスする顧客への影響を最小化するソリューションを実装しなければなりません。ソリューションは、顧客が接続する方法を変更してはいけません。
どのソリューションがこの要件を満たしますか?
A. Elastic IPアドレスをEC2インスタンスから切り離し、SFTPファイルホスティング用にAmazon S3バケットを作成します。AWS Transfer Familyサーバーを作成し、公開アクセス可能なエンドポイントで設定します。新しいエンドポイントにSFTP Elastic IPアドレスを関連付け、Transfer FamilyサーバーをS3バケットに指示します。SFTPサーバーからS3バケットにすべてのファイルを同期します。
B. Elastic IPアドレスをEC2インスタンスから切り離し、SFTPファイルホスティング用にAmazon S3バケットを作成します。AWS Transfer Familyサーバーを作成し、VPCホスト型のインターネット向けエンドポイントで設定します。新しいエンドポイントにSFTP Elastic IPアドレスを関連付け、顧客IPアドレスを含むセキュリティグループを新しいエンドポイントにアタッチします。Transfer FamilyサーバーをS3バケットに指示し、SFTPサーバーからS3バケットにすべてのファイルを同期します。
C. Elastic IPアドレスをEC2インスタンスから切り離し、SFTPファイルホスティング用に新しいAmazon Elastic File System(Amazon EFS)ファイルシステムを作成します。AWS Fargateタスク定義を作成し、SFTPサーバーを実行します。タスク定義でEFSファイルシステムをマウントとして指定します。Fargateサービスをタスク定義を使用して作成し、サービスの前にネットワークロードバランサー(NLB)を配置します。サービスを設定する際、顧客IPアドレスを含むセキュリティグループをSFTPサーバーを実行するタスクにアタッチします。Elastic IPアドレスをNLBに関連付け、SFTPサーバーからS3バケットにすべてのファイルを同期します。
D. Elastic IPアドレスをEC2インスタンスから切り離し、SFTPファイルホスティング用にマルチアタッチAmazon Elastic Block Store(Amazon EBS)ボリュームを作成します。Elastic IPアドレスがアタッチされたネットワークロードバランサー(NLB)を作成します。Auto Scalingグループを作成し、SFTPサーバーを実行するEC2インスタンスを設定します。Auto Scalingグループでインスタンスが起動する際に、新しいマルチアタッチEBSボリュームをアタッチするように設定します。Auto ScalingグループがNLBの後ろにインスタンスを自動的に追加するように設定し、Auto Scalingグループで起動されるEC2インスタンスに顧客IPアドレスを許可するセキュリティグループを使用します。SFTPサーバーから新しいマルチアタッチEBSボリュームにすべてのファイルを同期します。

解説

正解: B

解説

選択肢B は、以下の点で最適な解決策です。
  1. Elastic IPの管理:
      • B では、Elastic IPアドレスを新しいVPCエンドポイントに関連付ける方法が選ばれています。これにより、既存のElastic IPアドレスを引き続き利用できるため、顧客が接続する方法(接続先のIPアドレス)を変更せずに、可用性を向上させることができます。
  1. AWS Transfer FamilyとVPCエンドポイント:
      • AWS Transfer FamilyのVPCホスト型インターネット向けエンドポイントを使用すると、インターネットを介したアクセスが安全にVPC内で行われます。これにより、外部からのアクセスがインターネット越しに管理され、よりセキュアな構成となります。
      • VPCエンドポイントを利用することで、インターネット接続がプライベートネットワーク経由になるため、セキュリティが強化され、可用性も向上します。
  1. 顧客接続の変更なし:
      • Elastic IPアドレスを変更することなく新しいエンドポイントに関連付けることで、顧客側の接続方法はそのままで、影響を最小化できます。
  1. インフラ管理の簡素化:
      • AWS Transfer Familyはフルマネージドサービスであり、インフラの管理が大幅に簡素化されます。これにより、運用コストと管理負担を減らすことができます。

他の選択肢との比較

  • 選択肢A はS3を利用したファイルホスティングであり、管理が簡素ですが、S3のエンドポイントを公開することになるため、既存のElastic IPアドレスを利用し続けることができません。顧客接続方法の変更が必要になる場合があり、これは要件に反します。
  • 選択肢C はFargateとEFSを使用する方法ですが、これも複雑であり、特に管理の手間が増えます。また、Fargateのタスクを利用するためには追加の設定が必要となり、要件の簡便さに対して過剰なソリューションとなります。
  • 選択肢D はAuto Scalingを使用したインスタンスのスケーリングですが、EBSボリュームのマルチアタッチやインスタンスの管理が複雑になり、最適解ではありません。

結論

選択肢 B は、可用性とセキュリティを向上させつつ、顧客の接続方法を変更せずに、インフラ管理の複雑さを最小限に抑える理想的な解決策です。
27-AWS SAP「理論・実践・10問道場」29-AWS SAP「理論・実践・10問道場」
Loading...
Catalog
0%
minami
minami
一个普通的干饭人🍚
Announcement

🎉 ブログへようこそ 🎉

notion image
名前:みなみ独立事務所
性別:男
国籍:China
完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

📚 主な内容

💻 IT・システム開発
🏠 不動産 × 宅建士
🎓 MBA 学習記録

🔍 コンテンツの探し方

現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
気になるテーマを探す際は、タグ検索の利用をおすすめします。
Catalog
0%