12月 21, 2025
31 分で読める

ジュニアAWSクラウドエンジニア面接質問と回答

interview
career-advice
job-search
entry-level
ジュニアAWSクラウドエンジニア面接質問と回答
Milad Bonakdar

Milad Bonakdar

著者

EC2、S3、VPC、IAM、CloudWatch、基本的な運用シナリオを中心に、ジュニアAWSクラウドエンジニア面接を実践的に準備できます。


まず押さえるべきこと

ジュニア AWS クラウドエンジニアの面接では、主要サービスをわかりやすく説明できるか、基本的な構成を考えられるか、よくある運用ミスに気づけるかが見られます。まずは EC2 のライフサイクル、S3 のストレージクラス、VPC のルーティング、IAM の最小権限、CloudWatch、セキュリティグループとネットワーク ACL の違いを押さえましょう。

以下の回答は暗記用の台本ではなく、面接練習用です。よいジュニア回答は、サービスの役割、現実的な利用例、安全な初期設定またはトレードオフを短く説明します。


AWS EC2 (Elastic Compute Cloud)

1. AWS EC2 とは何ですか?また、その主な利点は何ですか?

回答: EC2 (Elastic Compute Cloud) は、クラウド内でサイズ変更可能な仮想サーバーを提供します。

主な利点:

  • 伸縮性: 需要に応じてスケールアップ/ダウン
  • 従量課金制: 使用した分だけ支払い
  • 多様性: さまざまなワークロードに対応する複数のインスタンスタイプ
  • グローバル: 世界中の複数のリージョンにデプロイ
  • 統合: 他の AWS サービスとシームレスに連携

一般的なユースケース:

  • Web ホスティング
  • アプリケーションサーバー
  • 開発/テスト環境
  • バッチ処理
  • ハイパフォーマンスコンピューティング

希少度: 非常によくある 難易度: 簡単


2. EC2 インスタンスの停止と終了の違いについて説明してください。

回答:

インスタンスの停止:

  • インスタンスはシャットダウンされますが、削除されません
  • EBS ルートボリュームは通常保持されます
  • 接続された EBS ボリュームや有料リソースには引き続き課金されます
  • 後で同じ構成で再起動できます
  • Elastic IP は関連付けられたままですが、自動割り当てのパブリック IPv4 は変わる可能性があります
  • インスタンス ID は同じままです

インスタンスの終了:

  • インスタンスは完全に削除されます
  • EBS ルートボリュームはデフォルトで削除されます(別途保持設定がない場合)
  • コンピューティング料金は止まりますが、保持したボリューム、スナップショット、未使用の Elastic IP には費用がかかる場合があります
  • 再起動できません
  • Elastic IP は関連付けが解除されます
  • インスタンス ID は再利用できません
# AWS CLI の例

# インスタンスの停止
aws ec2 stop-instances --instance-ids i-1234567890abcdef0

# 停止したインスタンスの起動
aws ec2 start-instances --instance-ids i-1234567890abcdef0

# インスタンスの終了
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0

希少度: 非常によくある 難易度: 簡単


AWS S3 (Simple Storage Service)

3. Amazon S3 とは何ですか?また、さまざまなストレージクラスは何ですか?

回答: S3 は、任意の量のデータをどこからでも保存および取得するためのオブジェクトストレージです。

面接では料金表を丸暗記するより、アクセスパターンを説明してから適切なクラスを選ぶほうが実務的です。

ストレージクラス:

クラスユースケース可用性コスト
S3 Standard頻繁にアクセスされるデータ99.99%最高
S3 Express One Zone1 つの AZ で非常に頻繁かつ低レイテンシにアクセスするデータ1 つの AZプレミアム性能
S3 Intelligent-Tiering不明/変化するアクセスパターン99.9%自動最適化
S3 Standard-IA頻繁にアクセスされない99.9%低い
S3 One Zone-IA頻繁でない、重要でない99.5%最も低い IA
S3 Glacier Instantアーカイブ、即時取得99.9%非常に低い
S3 Glacier Flexibleアーカイブ、数分から数時間で取得99.99%非常に低い
S3 Glacier Deep Archive長期アーカイブ、12 時間で取得99.99%最も低い
# S3 バケットの作成
aws s3 mb s3://my-bucket-name

# ファイルのアップロード
aws s3 cp myfile.txt s3://my-bucket-name/

# オブジェクトのリスト表示
aws s3 ls s3://my-bucket-name/

# ファイルのダウンロード
aws s3 cp s3://my-bucket-name/myfile.txt ./

希少度: 非常によくある 難易度: 簡単~中程度


AWS VPC (Virtual Private Cloud)

4. AWS VPC とは何ですか?また、その主要なコンポーネントは何ですか?

回答: VPC は、AWS リソースを起動する論理的に分離された仮想ネットワークです。

主要なコンポーネント:

Loading diagram...

コンポーネント:

  1. サブネット: VPC IP 範囲のセグメント

    • パブリック: インターネットゲートウェイへのルートを持つ
    • プライベート: 直接インターネットアクセスなし
  2. インターネットゲートウェイ: インターネットアクセスを有効にする

  3. NAT ゲートウェイ: プライベートサブネットのインターネットアクセスを許可する (アウトバウンドのみ)

  4. ルートテーブル: トラフィックルーティングを制御する

  5. セキュリティグループ: インスタンスレベルのファイアウォール (ステートフル)

  6. ネットワーク ACL: サブネットレベルのファイアウォール (ステートレス)

希少度: 非常によくある 難易度: 中程度


5. セキュリティグループとネットワーク ACL の違いは何ですか?

回答:

機能セキュリティグループネットワーク ACL
レベルインスタンスサブネット
状態ステートフルステートレス
ルール許可のみ許可と拒否
戻りトラフィック自動明示的に許可する必要がある
適用選択的 (インスタンスごと)サブネット内のすべてのインスタンス
ルール評価すべてのルールルール順

例:

# セキュリティグループの作成
aws ec2 create-security-group \
  --group-name web-sg \
  --description "Web サーバーセキュリティグループ" \
  --vpc-id vpc-1234567890abcdef0

# インバウンドルールの追加 (HTTP を許可)
aws ec2 authorize-security-group-ingress \
  --group-id sg-0123456789abcdef0 \
  --protocol tcp \
  --port 80 \
  --cidr 0.0.0.0/0

# インバウンドルールの追加 (特定の IP からの SSH を許可)
aws ec2 authorize-security-group-ingress \
  --group-id sg-0123456789abcdef0 \
  --protocol tcp \
  --port 22 \
  --cidr 203.0.113.0/24

希少度: 非常によくある 難易度: 中程度


AWS IAM (Identity and Access Management)

6. IAM ユーザー、グループ、およびロールについて説明してください。

回答: IAM は AWS リソースへのアクセスを制御します。

IAM ユーザー:

  • 認証情報を持つ個々のアイデンティティ
  • 長期的な認証情報 (パスワード、アクセスキー)
  • 人またはアプリケーションに使用

IAM グループ:

  • ユーザーの集合
  • グループにポリシーをアタッチ
  • ユーザーはグループのアクセス許可を継承

IAM ロール:

  • 一時的な認証情報
  • ユーザー、アプリケーション、またはサービスによって引き受けられる
  • 長期的な認証情報はありません
  • EC2 インスタンス、Lambda 関数、クロスアカウントアクセスに使用
// IAM ポリシーの例 (S3 読み取り専用)
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}

ベストプラクティス:

  • (アクセスキーではなく) EC2 インスタンスにロールを使用
  • 最小特権の原則に従う
  • 特権ユーザーに MFA を有効にする
  • 認証情報を定期的にローテーションする
  • アクセス許可の管理にグループを使用する

希少度: 非常によくある 難易度: 中程度


AWS の基本概念

7. AWS リージョンとアベイラビリティーゾーンとは何ですか?

回答:

AWS リージョン:

  • 地理的な場所 (例: us-east-1, eu-west-1)
  • 複数のアベイラビリティーゾーンを含む
  • 他のリージョンから隔離されている
  • レイテンシ、コンプライアンス、コストに基づいて選択

アベイラビリティーゾーン (AZ):

  • リージョン内の 1 つまたは複数のデータセンター
  • 他の AZ の障害から隔離されている
  • 低レイテンシネットワークで接続されている
  • 高可用性のために複数の AZ にデプロイ
Loading diagram...

高可用性の例:

# 複数の AZ でインスタンスを起動する
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t2.micro \
  --subnet-id subnet-1a \
  --count 1

aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t2.micro \
  --subnet-id subnet-1b \
  --count 1

希少度: 非常によくある 難易度: 簡単


8. AMI (Amazon Machine Image) とは何ですか?

回答: AMI は、EC2 インスタンスを作成するためのテンプレートです。

内容:

  • オペレーティングシステム
  • アプリケーションサーバー
  • アプリケーション
  • 構成設定

種類:

  • AWS 提供: Amazon Linux, Ubuntu, Windows
  • マーケットプレイス: サードパーティの AMI
  • カスタム: 独自の AMI

カスタム AMI の作成:

# 実行中のインスタンスから AMI を作成
aws ec2 create-image \
  --instance-id i-1234567890abcdef0 \
  --name "My-Web-Server-AMI" \
  --description "Apache が構成された Web サーバー"

# AMI からインスタンスを起動
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t2.micro \
  --key-name my-key-pair

ユースケース:

  • 標準化されたデプロイメント
  • バックアップと復旧
  • Auto Scaling
  • マルチリージョンデプロイメント

希少度: よくある 難易度: 簡単~中程度


AWS ストレージ

9. EBS とは何ですか?また、さまざまなボリュームタイプは何ですか?

回答: EBS (Elastic Block Store) は、EC2 インスタンスに永続的なブロックストレージを提供します。

ボリュームタイプ:

タイプユースケースパフォーマンスコスト
gp3 (汎用 SSD)ほとんどのワークロード3,000-16,000 IOPS最も低い SSD
gp2 (汎用 SSD)レガシー、一般的な使用最大 16,000 IOPS低い
io2/io1 (プロビジョンド IOPS)データベース、重要なアプリ最大 64,000 IOPS最高
st1 (スループット最適化 HDD)ビッグデータ、データウェアハウス高スループット低い
sc1 (コールド HDD)頻繁でないアクセス最も低いコスト最も低い

EBS の作成とアタッチ:

# EBS ボリュームの作成
aws ec2 create-volume \
  --availability-zone us-east-1a \
  --size 100 \
  --volume-type gp3 \
  --iops 3000 \
  --throughput 125

# インスタンスへのアタッチ
aws ec2 attach-volume \
  --volume-id vol-1234567890abcdef0 \
  --instance-id i-1234567890abcdef0 \
  --device /dev/sdf

# フォーマットとマウント (インスタンス上)
sudo mkfs -t ext4 /dev/sdf
sudo mkdir /data
sudo mount /dev/sdf /data

# 永続化 (/etc/fstab に追加)
echo "/dev/sdf /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab

EBS スナップショット:

# スナップショットの作成
aws ec2 create-snapshot \
  --volume-id vol-1234567890abcdef0 \
  --description "アップグレード前のバックアップ"

# スナップショットからの復元
aws ec2 create-volume \
  --snapshot-id snap-1234567890abcdef0 \
  --availability-zone us-east-1a \
  --volume-type gp3

# スナップショットを別のリージョンにコピー
aws ec2 copy-snapshot \
  --source-region us-east-1 \
  --source-snapshot-id snap-1234567890abcdef0 \
  --destination-region us-west-2

主な機能:

  • 永続的: ボリュームが保持される設定なら、データはインスタンスより長く残せる
  • スナップショット: S3 へのポイントインタイムバックアップ
  • 暗号化: 保存時および転送時
  • サイズ変更可能: ダウンタイムなしでサイズを増やす
  • マルチアタッチ: io2 ボリュームは複数のインスタンスにアタッチ可能

ベストプラクティス:

  • ほとんどのワークロードには gp3 を使用する (より優れた価格/パフォーマンス)
  • デフォルトで暗号化を有効にする
  • バックアップのために定期的なスナップショット
  • コストを節約するために未使用のボリュームを削除する

希少度: 非常によくある 難易度: 簡単~中程度


10. S3 バケットポリシーについて説明し、IAM ポリシーとの違いを説明してください。

回答: どちらも S3 へのアクセスを制御しますが、動作が異なります。

IAM ポリシー:

  • ユーザー、グループ、またはロール にアタッチ
  • アイデンティティ が何を実行できるかを制御
  • IAM で一元的に管理

S3 バケットポリシー:

  • S3 バケット にアタッチ
  • 特定のバケット へのアクセスを制御
  • クロスアカウントアクセスを許可できる
  • IP アドレスで制限できる

IAM ポリシーの例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

S3 バケットポリシーの例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-public-bucket/*"
    },
    {
      "Sid": "RestrictByIP",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

バケットポリシーの適用:

# ポリシーファイル (policy.json) を作成
# 次に、適用する
aws s3api put-bucket-policy \
  --bucket my-bucket \
  --policy file://policy.json

# 現在のポリシーを表示
aws s3api get-bucket-policy \
  --bucket my-bucket

# ポリシーの削除
aws s3api delete-bucket-policy \
  --bucket my-bucket

一般的なユースケース:

1. パブリック Web サイトホスティング:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-website/*"
    }
  ]
}

2. クロスアカウントアクセス:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::shared-bucket",
        "arn:aws:s3:::shared-bucket/*"
      ]
    }
  ]
}

3. 暗号化の強制:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
  ]
}

使用するタイミング:

  • IAM ポリシー: ユーザー/アプリケーションが何を実行できるかを制御する
  • バケットポリシー: バケットにアクセスできるユーザー (外部アカウントを含む) を制御する

希少度: 非常によくある 難易度: 中程度


モニタリングと管理

11. CloudWatch とは何ですか?また、モニタリングにどのように使用しますか?

回答: CloudWatch は、AWS のモニタリングおよびオブザーバビリティサービスです。

主要なコンポーネント:

1. メトリクス:

  • 時間経過に伴う数値データポイント
  • EC2: CPU、ネットワーク、ディスク
  • RDS: 接続、IOPS
  • カスタムメトリクス: アプリケーション固有
# EC2 CPU メトリクスの表示
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUUtilization \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --start-time 2024-11-25T00:00:00Z \
  --end-time 2024-11-25T23:59:59Z \
  --period 3600 \
  --statistics Average,Maximum

# カスタムメトリクスの公開
aws cloudwatch put-metric-data \
  --namespace MyApp \
  --metric-name PageLoadTime \
  --value 0.5 \
  --unit Seconds

2. アラーム:

# 高 CPU のアラームの作成
aws cloudwatch put-metric-alarm \
  --alarm-name high-cpu-alarm \
  --alarm-description "CPU が 80% を超えた場合にアラート" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --evaluation-periods 2 \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic

3. ログ:

# ロググループの作成
aws logs create-log-group \
  --log-group-name /aws/application/myapp

# ログストリームの作成
aws logs create-log-stream \
  --log-group-name /aws/application/myapp \
  --log-stream-name instance-1

# ログイベントのプット
aws logs put-log-events \
  --log-group-name /aws/application/myapp \
  --log-stream-name instance-1 \
  --log-events \
    timestamp=1234567890000,message="アプリケーションが開始されました" \
    timestamp=1234567891000,message="リクエストの処理"

# ログのクエリ
aws logs filter-log-events \
  --log-group-name /aws/application/myapp \
  --filter-pattern "ERROR" \
  --start-time 1234567890000

4. ダッシュボード:

# boto3 でダッシュボードを作成
import boto3
import json

cloudwatch = boto3.client('cloudwatch')

dashboard_body = {
    "widgets": [
        {
            "type": "metric",
            "properties": {
                "metrics": [
                    ["AWS/EC2", "CPUUtilization", {"stat": "Average"}]
                ],
                "period": 300,
                "stat": "Average",
                "region": "us-east-1",
                "title": "EC2 CPU 使用率"
            }
        },
        {
            "type": "metric",
            "properties": {
                "metrics": [
                    ["AWS/RDS", "DatabaseConnections"]
                ],
                "period": 300,
                "stat": "Sum",
                "region": "us-east-1",
                "title": "RDS 接続数"
            }
        }
    ]
}

cloudwatch.put_dashboard(
    DashboardName='MyAppDashboard',
    DashboardBody=json.dumps(dashboard_body)
)

一般的なモニタリングシナリオ:

EC2 インスタンスのモニタリング:

# CPU、ネットワーク、ディスクメトリクスは自動
# メモリの場合は、CloudWatch エージェントが必要

# CloudWatch エージェントのインストール
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U ./amazon-cloudwatch-agent.rpm

# エージェントの構成 (構成ファイルを作成)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

# エージェントの開始
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config \
  -m ec2 \
  -s \
  -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

アプリケーションログのモニタリング:

# CloudWatch ロギングを使用した Python アプリケーション
import boto3
import logging
from datetime import datetime

class CloudWatchHandler(logging.Handler):
    def __init__(self, log_group, log_stream):
        super().__init__()
        self.client = boto3.client('logs')
        self.log_group = log_group
        self.log_stream = log_stream
        
    def emit(self, record):
        log_entry = self.format(record)
        self.client.put_log_events(
            logGroupName=self.log_group,
            logStreamName=self.log_stream,
            logEvents=[{
                'timestamp': int(datetime.now().timestamp() * 1000),
                'message': log_entry
            }]
        )

# 使用法
logger = logging.getLogger()
logger.addHandler(CloudWatchHandler('/aws/myapp', 'instance-1'))
logger.info("アプリケーションが開始されました")

ベストプラクティス:

  • 重要なメトリクスのアラームを設定する
  • ロググループを使用してログを整理する
  • 概要をすばやく把握するためにダッシュボードを作成する
  • コストを制御するために保持ポリシーを設定する
  • ログ分析にメトリックフィルターを使用する

希少度: 非常によくある 難易度: 中程度


結論

ジュニア AWS クラウドエンジニアの面接の準備には、主要なサービスとクラウドの概念を理解することが不可欠です。以下に焦点を当ててください。

  1. EC2: インスタンスタイプ、ライフサイクル、セキュリティ
  2. S3: ストレージクラス、バケットポリシー、バージョニング
  3. VPC: ネットワーキング、サブネット、セキュリティグループ
  4. IAM: ユーザー、ロール、ポリシー、最小特権
  5. 基本概念: リージョン、AZ、AMI

AWS コンソールと CLI を使用して、実践的な経験を積んでください。頑張ってください!

Newsletter subscription

実際に機能する週次のキャリアのヒント

最新の洞察をメールボックスに直接お届けします

次の面接は履歴書一つで決まる

数分でプロフェッショナルで最適化された履歴書を作成。デザインスキルは不要—証明された結果だけ。

私の履歴書を作成

この投稿を共有

50%速く採用される

プロフェッショナルなAI強化履歴書を使用する求職者は、標準的な10週間に比べて平均5週間で職を得ています。待つのをやめて、面接を始めましょう。