Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Day 49 - AWS Interview Questions

2025年09月14日に「Dev.to」が公開したITニュース「Day 49 - AWS Interview Questions」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

AWSシステムエンジニアの面接対策記事。EC2やS3等の主要サービス、ログ、IAM、ゼロダウンタイム更新、IaC、ロードバランサー、セキュリティ、DB選定など、幅広いAWS技術の基礎知識と活用法を学ぶヒントを凝縮した。

出典: Day 49 - AWS Interview Questions | Dev.to公開日:

ITニュース解説

AWS(Amazon Web Services)は、現代のITシステム開発において非常に重要なクラウドコンピューティングサービス群だ。これからシステムエンジニアを目指す皆さんにとって、その基礎知識は不可欠となる。ここでは、AWSに関する主要なサービスや概念、運用における実践的な知識について解説する。

まず、AWSの基本的なサービスをいくつか挙げてみよう。EC2(Elastic Compute Cloud)は、インターネット上で利用できる仮想サーバーを提供するサービスで、ウェブアプリケーションや各種システムを動かすための「コンピュータ」だと考えると分かりやすい。S3(Simple Storage Service)は、ファイルを保存するためのストレージサービスで、ウェブサイトの静的コンテンツやバックアップ、ログの保存など多岐にわたる用途で利用される。RDS(Relational Database Service)は、MySQLやPostgreSQLといったリレーショナルデータベースを簡単に構築・運用できるマネージドサービスであり、データベースの管理の手間を大幅に削減する。CloudWatchは、システムのログやメトリクス(性能指標)を収集し、監視やアラート設定を行うためのサービスで、システムが正常に動作しているかを把握するために不可欠だ。IAM(Identity and Access Management)は、AWSのリソースに対するアクセス権限を安全に管理するためのサービスで、ユーザーやサービスがどのリソースにアクセスできるかを細かく制御する。

次に、システムの監視に欠かせないログの管理について解説する。システムから発生するログをクラウド環境に送るためにはいくつかのツールが使われる。EC2インスタンスからCloudWatchにログを送る際には「CloudWatch Logs Agent」が利用される。より高度なログ転送には、オープンソースのログフォワーダーである「Fluentd」や「Fluent Bit」が用いられることが多く、これらはコンテナ環境にも対応している。また、ECSやEKSのようなコンテナサービス環境では「AWS FireLens」が効率的なログ収集を支援する。大量のログデータを収集し、S3やRedshift、Elasticsearchのような分析基盤にストリーミングする際には「Kinesis Data Firehose」が活用される。

IAMの中でも特に重要な概念に「IAMロール」がある。これは、AWSサービスやユーザーに一時的な権限を付与するための仕組みで、パスワードやアクセスキーのような長期的な認証情報を利用せずにセキュアなアクセスを可能にする。例えば、EC2インスタンスがS3バケットにアクセスする必要がある場合、そのインスタンスにIAMロールを割り当てることで、インスタンスは一時的にS3へのアクセス権限を得られる。IAMロールは、IAMコンソールで作成し、AWSサービスや特定のユーザーを「信頼されたエンティティ」として選択した後、必要な権限を持つポリシーをアタッチし、対象のリソースに割り当てることで管理される。

システムを停止することなくアップデートやダウングレードを行う「ゼロダウンタイムデプロイ」は、現代のサービス運用において必須の技術だ。これにはいくつかの手法がある。「Blue/Greenデプロイメント」は、現在稼働しているシステム(Blue)とは別に、新しいバージョンのシステム(Green)を完全に構築し、ロードバランサーを使って一度にトラフィックをGreen側に切り替える方法だ。また、Auto Scaling Groupと連携した「ローリングアップデート」は、古いバージョンのインスタンスを少しずつ新しいバージョンに置き換えていくことで、サービスを継続させながら更新を行う。いずれの手法も、ユーザーへの影響を最小限に抑えることを目的としている。

「Infrastructure as Code(IaC)」は、サーバーやネットワークといったインフラストラクチャを手動で設定するのではなく、コードとして定義し、管理・プロビジョニングする手法だ。IaCを導入することで、インフラの構築が自動化され、設定の一貫性が保たれ、バージョン管理が可能になるという大きなメリットがある。AWSでは「CloudFormation」というサービスが提供されており、YAMLやJSON形式のテンプレートでAWSリソースを定義できる。AWSに限らず様々なクラウドサービスに対応するツールとしては「Terraform」が広く使われている。

ロードバランサーは、大量のリクエストを複数のサーバーに効率良く分散させ、システムの可用性とスケーラビリティを高める役割を担う。「Application Load Balancer(ALB)」はHTTP/HTTPSトラフィックに特化しており、URLのパスやホスト名に基づいてリクエストを異なるバックエンドサービスにルーティングできるため、マイクロサービスアーキテクチャに適している。「Network Load Balancer(NLB)」は、TCP/UDPトラフィックを非常に高いパフォーマンスと低レイテンシで処理するため、リアルタイム性が求められるアプリケーションやゲームなどで利用される。かつて主流だった「Classic Load Balancer(CLB)」は、基本的な機能を提供するが、現在では新しいアプリケーションには推奨されていない。

CloudFormationは、AWSのサービスをInfrastructure as Codeとして扱うための中心的なツールだ。これにより、EC2インスタンス、VPC、S3バケット、RDSデータベースといったAWSリソース群を、テンプレートとしてコードで定義し、自動的に作成・管理できる。CloudFormationの利用は、デプロイの自動化、災害復旧の迅速化、開発・テスト環境の再現性確保など、多くのメリットをもたらす。

CloudFormationと混同されやすいサービスに「AWS Elastic Beanstalk」がある。CloudFormationは、インフラのプロビジョニングそのものに焦点を当てたIaCツールであり、ユーザーがインフラの細部までをコードで定義し、管理する。一方、Elastic Beanstalkは、アプリケーションのデプロイと管理に重点を置いており、アプリケーションコードをアップロードするだけで、AWSがインフラの構築、スケーリング、ロードバランシングなどを自動的に行ってくれるため、開発者はインフラの詳細を気にせずにアプリケーション開発に集中できる。

クラウド環境においてもセキュリティは極めて重要だ。発生しうるセキュリティ攻撃には、大量のアクセスでサービスを停止させる「DDoS攻撃」、機密情報が流出する「データ侵害」、通信途中の情報を盗み見る「Man-in-the-middle (MITM) 攻撃」、S3バケットやIAMロールの設定ミスによる意図しない情報公開などがある。これらの脅威を最小限に抑えるためには、DDoS対策としてAWS ShieldやWAF(Web Application Firewall)を導入し、データは常に暗号化(KMSなど)する。IAMでは最小限の権限のみを付与する「最小権限の原則」を徹底し、多要素認証(MFA)を適用する。また、CloudTrailでAWS上での操作履歴を記録し、GuardDutyで異常な挙動を検知するなど、継続的な監視体制を構築することが重要だ。

万が一、EC2インスタンスの認証キーを紛失してしまった場合でも、インスタンスを回復させることは可能だ。具体的には、対象のEC2インスタンスを停止し、そのルートボリューム(OSが格納されている仮想ディスク)をデタッチ(取り外し)する。次に、そのルートボリュームを別の動作しているEC2インスタンスにアタッチし、一時的にアクセスできるようにする。そのインスタンス上でルートボリュームのファイルシステムにアクセスし、新しい公開鍵を認証情報ファイル(通常は~/.ssh/authorized_keys)に追加する。最後に、ルートボリュームを元のEC2インスタンスに再アタッチし、インスタンスを再起動すれば、新しいキーペアでアクセスできるようになる。

「ゲートウェイ」は、ネットワーク間の出入り口として機能する。AWSには様々な種類のゲートウェイがある。「Internet Gateway(IGW)」は、VPC(Virtual Private Cloud)内のリソースがインターネットと通信できるようにする。VPC内のプライベートサブネットにあるインスタンスがインターネットにアクセスする必要があるが、インターネットからの直接アクセスは避けたい場合には「NAT Gateway」を利用し、セキュアなアウトバウンド通信を可能にする。データセンターなどのオンプレミス環境とVPCをVPNで安全に接続する際には「Virtual Private Gateway」が使われる。また、「API Gateway」は、アプリケーションプログラムインターフェース(API)の作成、公開、保守、監視、セキュリティ保護を行うフルマネージドサービスだ。

データベースについても、AWSは用途に応じて多様なサービスを提供する。「Amazon RDS」は、前述の通りリレーショナルデータベースであり、トランザクション処理(OLTP: Online Transaction Processing)に適している。一方、「Amazon DynamoDB」はフルマネージドのNoSQLデータベースで、極めて高いスケーラビリティとパフォーマンスが求められるアプリケーションや、キーバリュー形式のデータに最適だ。大量のデータを分析するためのデータウェアハウスとしては「Amazon Redshift」がある。これは、膨大な量のデータを高速に分析するオンライン分析処理(OLAP: Online Analytical Processing)に特化している。

最後に、ウェブサイトのホスティングについて考えてみよう。S3は静的なウェブサイト(HTML、CSS、JavaScriptだけで構成され、サーバーサイドでの動的な処理やデータベース連携が不要なサイト)をホスティングするのに非常に適している。コスト効率が高く、高いスケーラビリティと可用性を誇るため、サーバー管理の手間もかからない。しかし、PHPやNode.jsといったサーバーサイドのプログラミングが必要な動的なウェブサイトや、データベースとの連携が必要な場合には、S3単体でのホスティングは適していない。その場合は、EC2、ECS(Elastic Container Service)、あるいはElastic Beanstalkのようなサービスを利用するのが適切だ。

これらのAWSのサービスや概念は、システムエンジニアとしてクラウド環境でシステムを設計、開発、運用していく上で基礎となる重要な知識である。それぞれの役割と用途を理解することは、効率的でセキュアなシステムを構築するために不可欠となる。

関連コンテンツ

関連IT用語