AWS Solutions Architect試験合格への実践的な学習ロードマップ

AWS Solutions Architect試験(Associate/Professional)の合格には、単なる知識暗記ではなく、実際のAWSサービス設計経験が不可欠です。本記事では、3ヶ月で確実に合格するための学習戦略、試験に出題される頻出サービスの深い理解、そして実務で即座に活用できるアーキテクチャ設計の原則を解説します。

AWS Solutions Architect試験の全体像と出題傾向

AWS Solutions Architect試験は、単なる選択肢問題ではなく、「どのようなアーキテクチャが最適か」という意思決定を問う試験です。AssociateレベルとProfessionalレベルでは難易度が大きく異なり、適切な準備方法も変わります。

AssociateレベルとProfessionalレベルの違い

実務経験1年未満の学習者はAssociateから始めることを強く推奨します。筆者の経験上、いきなりProfessionalに挑戦すると70%以上が落ちます。Associateは「サービスの基本的な使い分け」、Professionalは「複数サービスの組み合わせによるエンタープライズ設計」が焦点です。


flowchart TD
    A[AWS Solutions Architect試験] --> B[Associate Level]
    A --> C[Professional Level]
    
    B --> B1["学習期間: 1-2ヶ月
難易度: 中
出題: EC2/S3/RDS基礎
対象: 初学者"] C --> C1["学習期間: 3-4ヶ月
難易度: 高
出題: マルチリージョン設計
対象: 実務経験2年以上"] B1 --> D[Associateに合格] D --> E{進めるか?} E -->|Yes| C1 E -->|No| F[実務経験を積む]

学習段階別・具体的な対策方法

第1段階: AWSサービスの基礎理解(4週間)

「なぜそのサービスを選ぶのか」という根拠を理解することが最重要です。単に「EC2は仮想サーバー」と覚えるのではなく、「スケーラビリティが必要な場面ではなぜEC2ではなくLambdaを検討すべきか」という比較思考を身につけてください。

実務では以下のサービス間の選択がよく問われます:

  • コンピュート: EC2 vs Lambda vs Fargate vs Lightsail
  • ストレージ: EBS vs EFS vs S3 vs Glacier
  • データベース: RDS vs DynamoDB vs Redshift vs Neptune
  • キャッシング: ElastiCache vs DAX vs CloudFront

各選択の判断基準を整理したマトリックスを作成し、毎日15分確認することで、試験での意思決定が高速化します。筆者は以下の3つの質問で判断基準としています:


# サービス選択の3つの判断基準

1. スケーラビリティ要件
   - 自動スケーリング必須か? → Lambda / Auto Scaling
   - 固定リソースで十分か? → Lightsail
   
2. コスト効率
   - 24時間稼働が必須か? → EC2(オンデマンド)
   - 使用量が不規則か? → Lambda(従量課金)
   
3. 管理負荷
   - インフラ管理したくない → Fargate / Lambda
   - カスタマイズ必要 → EC2
  

第2段階: アーキテクチャ設計パターンの習得(3週間)

試験では「顧客の要件を満たす最適なアーキテクチャを選ぶ」という出題形式が大半です。以下の7つの標準パターンを理解し、実装できるようになれば、試験問題の70%以上に対応できます。

パターン1: 高可用性Webアプリケーション


graph LR
    A["ユーザー"] -->|Route 53| B["CloudFront"]
    B --> C["ALB"]
    C -->|AZ-A| D1["EC2 Instance A1"]
    C -->|AZ-B| D2["EC2 Instance B1"]
    
    D1 --> E["RDS Multi-AZ"]
    D2 --> E
    D1 --> F["ElastiCache"]
    D2 --> F
    
    style C fill:#ff9999
    style E fill:#99ccff
    style F fill:#99ff99
  

この構成が活躍する場面: eコマースサイト、SaaS型アプリケーション、ユーザー認証が必要なWebサービス

特に重要なポイント:

  • ALB(Application Load Balancer)はHTTP/HTTPSのパス・ホストベースルーティング対応
  • RDS Multi-AZは同期レプリケーション(RPO=0)で自動フェイルオーバー
  • ElastiCacheはセッション情報キャッシュに有効

パターン2: マイクロサービス+イベント駆動


graph LR
    A["API Gateway"] --> B1["Lambda: Auth"]
    A --> B2["Lambda: Order"]
    A --> B3["Lambda: Payment"]
    
    B1 --> C["EventBridge"]
    B2 --> C
    B3 --> C
    
    C -->|ユーザー登録| D["SQS"]
    C -->|注文完了| E["SNS"]
    
    D --> F["Lambda: EmailSender"]
    E --> G["Lambda: SMSSender"]
    E --> H["DynamoDB Streams"]
  

この構成が活躍する場面: 非同期処理が多い業務、複数マイクロサービス間の疎結合が必要な大規模システム

パターン3: ビッグデータ分析パイプライン


graph LR
    A["S3 Data Lake"] -->|Glue Jobs| B["ETL処理"]
    B --> C["S3 Processed Data"]
    C -->|Athena| D["SQL分析"]
    C -->|Redshift| E["DW分析"]
    E --> F["QuickSight"]
    D --> F
  

第3段階: 過去問演習と弱点補強(2週間)

AWSが提供する公式の練習問題(AWS認定資格ページ)に加えて、Udemy・A Cloud Guru・LinuxAcademyなどの問題集で最低200問以上解くことが必須です。

重要なのは「正解した問題」よりも「間違った問題」です。間違った問題について、以下の3点を毎回記録してください:


# 間違い分析テンプレート

問題ID: 123
出題サービス: RDS, Aurora, DynamoDB
間違えた理由: 
  - AuroraのRead Replicaはリージョン間で自動フェイルオーバー非対応
  - 正解は「Global Database」の使用
  
類似の間違いやすいポイント:
  - RDS Multi-AZ: 同一AZ内のフェイルオーバーのみ
  - Aurora Global Database: クロスリージョン対応、最大5秒の遅延
  - DynamoDB Global Tables: 複数リージョンの双方向レプリケーション
  

試験で頻出する5つのサービス深掘り解説

1. VPC(Virtual Private Cloud)- ネットワークの理解が合格の第一歩

試験ではVPCが必ず出題されます。特に以下の設計判断が問われます:

  • パブリックサブネットとプライベートサブネットの使い分け
  • NAT Gatewayが必要な条件の判定
  • VPN接続とAWS Direct Connect(専用線)の選択基準

実務では、セキュリティグループ(ステートフル)とネットワークACL(ステートレス)の違いが明確に理解できていないと、ネットワークの疎通トラブルが頻発します。以下の実装例を試してください:


# セキュリティグループの設定例(AWS CLI)

aws ec2 authorize-security-group-ingress \
  --group-id sg-0123456789abcdef0 \
  --protocol tcp \
  --port 443 \
  --cidr 0.0.0.0/0 \
  --region ap-northeast-1

# ネットワークACLの設定例(インバウンド)
# ルール番号 | タイプ | プロトコル | ポート | ソース    | 許可/拒否
# 100      | HTTP | TCP     | 80    | 0.0.0.0/0 | 許可
# 110      | HTTPS| TCP     | 443   | 0.0.0.0/0 | 許可
# 120      | SSH  | TCP     | 22    | 10.0.0.0/8| 許可
# *        | すべて| すべて  | すべて | 0.0.0.0/0 | 拒否
  

2. IAM(Identity and Access Management)- セキュリティの要

IAMの出題範囲は「ユーザー管理」から「クロスアカウントアクセス」まで広いです。試験では以下の3つのシナリオがよく出題されます:

シナリオA: 複数のAWSアカウント間でのリソースアクセス


# アカウントAのロール設定(アカウントB用)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT-B-ID:role/CrossAccountRole"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "unique-external-id"
        }
      }
    }
  ]
}
  

シナリオB: 一時的な認証情報の発行(STS: Security Token Service)


# AWS CLIで一時認証情報を取得

aws sts assume-role \
  --role-arn arn:aws:iam::123456789012:role/MyRole \
  --role-session-name my-session \
  --duration-seconds 3600

# 結果から Credentials を抽出して環境変数に設定
export AWS_ACCESS_KEY_ID=ASIAJ...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...
  

3. S3(Simple Storage Service)- ストレージの中核

S3は単なる「ファイル保管場所」ではなく、複数のユースケースに対応する多機能サービスです。試験では以下の機能が出題されやすいです:

  • アクセス制御: バケットポリシー vs ACL
  • ストレージクラス: Standard vs IA vs Glacier vs Deep Archive
  • バージョニング: 意図しない上書き防止
  • ライフサイクルポリシー: 自動的にコスト最適化
  • CloudFront連携: グローバルコンテンツ配信

実務では、ストレージクラスの選択によるコスト差が月数十万円単位になります。筆者が実装した例:


# S3ライフサイクルポリシーの実装例

{
  "Rules": [
    {
      "Id": "OptimizeCost",
      "Status": "Enabled",
      "Transitions": [
        {
          "Days": 30,
          "StorageClass": "STANDARD_IA"  # 30日後に低頻度アクセスクラスへ
        },
        {
          "Days": 90,
          "StorageClass": "GLACIER"      # 90日後にアーカイブクラスへ
        },
        {
          "Days": 365,
          "StorageClass": "DEEP_ARCHIVE" # 1年後に深層アーカイブへ
        }
      ],
      "Expiration": {
        "Days": 2555  # 7年後に削除
      }
    }
  ]
}

# コスト比較(月額、1TBあたり)
# Standard:      $23.55
# Standard-IA:   $12.80 (45%削減)
# Glacier:       $4.00  (83%削減)
# Deep Archive:  $1.00  (96%削減)
  

4. RDS(Relational Database Service)- データベース運用の自動化

RDSは「マネージドデータベース」という特性上、試験では「AWS側で自動で対応してくれること」と「手動で対応する必要があること」の区別が問われます。


graph TD
    A["RDS構成検討"] --> B{高可用性
必須か?} B -->|Yes| C{クロスリージョン
対応必須か?} B -->|No| D["Single-AZ
シンプル構成"] C -->|Yes| E["Aurora Global Database
最大5秒遅延"] C -->|No| F["Multi-AZ
同期レプリケーション"] D --> G["コスト最小
ただし可用性低"] E --> H["クロスリージョン対応
RPO≒0"] F --> I["自動フェイルオーバー
ダウンタイム<1分"]

重要な判断ポイント:

  • Multi-AZ: RDS標準機能、同一リージョン内の別AZへの同期レプリケーション
  • Read Replica: スケールアップ用、非同期レプリケーション、手動フェイルオーバー
  • Aurora Global Database: リージョン間での自動レプリケーション、最大5秒の遅延、災害復旧用

5. Lambda - サーバーレス設計のポイント

Lambdaは「コードを実行するだけ」と思われることが多いですが、試験では以下の制約を理解する必要があります:


# Lambda の重要な制約と考慮事項

制約1: 実行時間の上限
  - 最大15分(900秒)
  - 長時間処理はStep Functionsで複数Lambdaに分割

制約2: コールドスタート
  - 初回呼び出しは1-2秒の遅延
  - 対策: プロビジョニング済みコンカレンシー、Lambda SnapStart

制約3: メモリとCPU
  - 128MB~10,240MB
  - CPUは自動割り当て(メモリ量に比例)
  
制約4: ストレージ
  - 一時ストレージ(/tmp)は最大10GB
  - 永続化はS3またはDynamoDB

実装例: 大容量ファイル処理の分割
  S3トリガー → Lambda-A(分割) → SQS → Lambda-B(処理) → 結果をDynamoDBに保存
  

試験で頻出するハマりポイント3選

ハマりポイント1: VPC Endpointの存在を忘れる

「EC2からS3へアクセスする際、NAT Gatewayが必須」と思っている方が多いですが、VPC Endpointを使えばNAT Gatewayなしで直接アクセス可能です。試験では「コスト最適化」という条件でこの選択が出題されます。


# 間違った設計: コスト過剰
EC2(プライベートサブネット)
  ↓
NAT Gateway(月額$30+通信費)
  ↓
S3

# 正解: コスト最適化
EC2(プライベートサブネット)
  ↓
VPC Endpoint Gateway(無料)
  ↓
S3
  

ハマりポイント2: DynamoDBのスケーラビリティを誤解する

「DynamoDBは無限スケール」という情報が広がっていますが、実際には「パーティションキーの設計が不適切だと、ホットパーティションが発生してスケーラビリティが失われる」という制限があります。


# 悪い例: ホットパーティション発生
パーティションキー: "Country"(日本が90%のトラフィック)
  → 日本のパーティションに集中
  → スケーリング効果なし

# 良い例: 均等分散
パーティションキー: "UserId"(ユーザーIDごと)
  → 複数パーティションに分散
  → 効率的なスケーリング
  

ハマりポイント3: CloudFrontキャッシュの動作を理解していない

「CloudFrontを使えば全員に同じコンテンツを配信」と思いがちですが、クエリストリングやクッキーが異なるとキャッシュキーが変わります。試験では「ユーザーごとに異なるコンテンツを配信」という条件下での判断が出題されます。


# CloudFront キャッシュキーの構成

URLが同じでも以下が異なるとキャッシュ別
  - クエリストリング: ?user_id=123 vs ?user_id=456
  - クッキー: session_id=AAA vs session_id=BBB
  - HTTPヘッダ: Accept-Language: ja vs en

対策: オリジンシールドの使用
  CloudFront → Origin Shield(キャッシュレイヤー)→ オリジン
  複数CDNエッジからの同じコンテンツ要求をOrigin Shield で統合
  

模擬試験と本番試験の対策の違い

模擬試験で70%以上得点できていても、本番試験では落ちることがあります。理由は「本番試験は時間管理が厳しい」という点です。以下の対策を実施してください:

  • 時間配分: 65問を130分(1問2分)で解く。最後に15分の見直し時間を確保
  • 難問をスキップ: 3分考えても分からない問題は後回しに(試験ソフトにマーク機能あり)
  • 選択肢の消去法: 「最適な選択肢」ではなく「最悪な選択肢」から除外

試験合格後、実務で活かすための実装演習

試験合格は出発点です。以下の実装演習を試験合格後1ヶ月以内に行うことで、実務での即戦力化が実現します。

演習1: マルチリージョン高可用性WebアプリケーションのIaC実装


# Terraform による Infrastructure as Code(IaC)例

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  alias  = "primary"
  region = "ap-northeast-1"
}

provider "aws" {
  alias  = "secondary"
  region = "us-east-1"
}

# Primary Region: EC2 + RDS Multi-AZ
resource "aws_instance" "web_primary" {
  provider      = aws.primary
  ami           = data.aws_ami.ubuntu.id
  instance_type = "t3.medium"
  
  tags = {
    Name = "web-primary-ap-northeast-1"
  }
}

resource "aws_db_instance" "primary" {
  provider             = aws.primary
  identifier           = "mydb-primary"
  engine              = "mysql"
  engine_version      = "8.0"
  instance_class      = "db.t3.micro"
  allocated_storage   = 20
  multi_az            = true  # 高可用性有効
  skip_final_snapshot = false
}

# Secondary Region: Read Replica
resource "aws_db_instance" "secondary" {
  provider          = aws.secondary
  replicate_source_db = aws_db_instance.primary.identifier
  instance_class    = "db.t3.micro"
  
  depends_on = [aws_db_instance.primary]
}
  

演習2: ServerlessアプリケーションのSAM(Serverless Application Model)デプロイ


# AWS SAM テンプレート例(template.yaml)

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Parameters:
  Environment:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - staging
      - prod

Globals:
  Function:
    Timeout: 30
    Runtime: python3.11
    Environment:
      Variables:
        ENV: !Ref Environment
        TABLE_NAME: !Ref DynamoDBTable

Resources:
  ApiGateway:
    Type: AWS::Serverless::Api
    Properties:
      StageName: !Ref Environment

  OrderFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub 'order-${Environment}'
      CodeUri: src/
      Handler: order.lambda_handler
      Runtime: python3.11
      Events:
        CreateOrder:
          Type: Api
          Properties:
            RestApiId: !Ref ApiGateway
            Path: /orders
            Method: POST
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref DynamoDBTable
        - SQSSendMessagePolicy:
            QueueName: !GetAtt OrderQueue.QueueName

  DynamoDBTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: !Sub 'orders-${Environment}'
      BillingMode: PAY_PER_REQUEST  # オンデマンド課金
      AttributeDefinitions:
        - AttributeName: OrderId
          AttributeType: S
        - AttributeName: CreatedAt
          AttributeType: S
      KeySchema:
        - AttributeName: OrderId
          KeyType: HASH
        - AttributeName: CreatedAt
          KeyType: RANGE

  OrderQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Sub 'orders-${Environment}'
      VisibilityTimeout: 300

# デプロイコマンド
# sam build
# sam deploy --guided
  

AWS公式リソースの活用方法

試験合格には、AWSの公式リソースの正確な理解が不可欠です。以下のリソースを活用してください:

よくある質問

A: 可能ですが、学習効率を最大化する必要があります。筆者の経験上、「講座動画を見て、その日のうちに手で過去問を3問解く」というサイクルを毎日繰り返すことで、1日30分でも3ヶ月で合格レベルに到達します。重要なのは「継続性」です。

A: 実務経験に応じて判断してください。Associateの知識だけではProfessionalの60%以上の問題に対応できません。最低2年の実務経験か、Associateの知識を深掘りした3-4ヶ月の学習期間が必要です。給与・キャリア面でAssociateでも十分な場合は、実務経験を積むことをお勧めします。

A: 試験にはCloudFormationが出題されるため、CloudFormationの基本理解は必須です。ただし、実務ではTerraformのほうが複数クラウドに対応でき、使いやすいというメリットがあります。試験対策ではCloudFormation、実装ではTerraformという使い分けが現実的です。

A: AWS認定試験の受験料は150ドル(Associateの場合)です。14日以内の再受験は禁止、2回目以降の再受験は14日間の待機期間が必要です。筆者の推奨は「初回合格までは1回で、初回不合格なら最低2週間のギャップを設けて再度対策」です。

まとめ

K
AWS・Python・生成AIを専門とするソフトウェアエンジニア。AI・クラウド・開発ワークフローの実践ガイドを執筆しています。詳しく見る →