AWS認定資格 WEB問題集&徹底解説

クラウドプラクティショナー

AWS AppSync の概要と試験出題ポイントは?

AWSサービスの一つであるAWS AppSyncはどんな内容なのでしょうか?また、AWS認定資格のクラウドプラクティショナー(CLF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

AWS AppSync 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

AWS AppSyncは、セキュアでサーバーレスなGraphQL APIとPub/Sub APIを構築するフルマネージドサービスです。 クライアントは単一のGraphQLエンドポイントから必要なデータだけを取得でき、AppSyncがDynamoDB、Lambda、OpenSearch Service、HTTPエンドポイント、RDS系データソースなどへの接続をリゾルバーで仲介します。

試験では、モバイル/Webアプリで複数データソースを統合したい、リアルタイム更新を配信したい、CognitoやIAMでAPIアクセスを制御したい、というシナリオでAppSyncを選びます。 REST API中心の設計はAPI Gateway、フロントエンド開発体験まで含める場合はAmplifyと比較します。

2. 主な特徴と機能

2.1 GraphQL API

GraphQLスキーマで型、Query、Mutation、Subscriptionを定義し、クライアントが必要なフィールドだけを問い合わせます。 REST APIで発生しやすい過剰取得/不足取得を抑え、モバイルアプリやSPAの通信効率を高めます。

2.2 リゾルバーとデータソース

AppSyncリゾルバーはGraphQLフィールドとデータソースを結び付けます。 JavaScript/TypeScriptリゾルバーやVTLマッピングテンプレートを使い、DynamoDBのGetItem/Query、Lambda呼び出し、HTTP API連携などを実装します。

2.3 リアルタイム更新とAppSync Events

GraphQL Subscriptionにより、Mutationで変更されたデータをWebSocket経由でクライアントへプッシュできます。 また、AppSync EventsによりWebSocketベースのPub/Sub APIを構築でき、チャット、通知、ライブダッシュボードなどに向きます。

2.4 認証・認可方式

APIキー、IAM、Amazon Cognito User Pools、OpenID Connect、Lambdaオーソライザーをサポートします。 スキーマやフィールド単位で複数認可モードを使い分け、公開API、ログインユーザー向けAPI、管理者向け操作を分離できます。

2.5 キャッシュ、ログ、トレーシング

サーバーサイドキャッシュにより低レイテンシー化し、CloudWatch Logs、メトリクス、AWS X-Rayでリクエスト、エラー、リゾルバー処理を分析できます。 キャッシュは低遅延とコスト削減に有効ですが、更新頻度と整合性要件を確認します。

2.6 Private API、WAF、Merged APIs

Private APIでVPC内からのアクセスに制限したり、AWS WAFでAPIを保護したりできます。 Merged APIsを使うと、複数チームが管理するGraphQL APIを統合し、フェデレーションに近い構成を取れます。

3. アーキテクチャおよび技術要素

  1. GraphQLスキーマでQuery、Mutation、Subscription、型、認可ルールを定義する。
  2. フィールドごとにリゾルバーを設定し、DynamoDB、Lambda、HTTP、OpenSearch Serviceなどのデータソースへ接続する。
  3. クライアントはCognito、IAM、APIキーなどで認証し、AppSyncエンドポイントへGraphQLリクエストを送る。
  4. AppSyncがリゾルバーを実行し、必要なデータだけを結合してGraphQLレスポンスを返す。
  5. SubscriptionやAppSync Eventsを使う場合、WebSocket接続を通じてリアルタイムイベントを配信する。
  6. CloudWatch Logs、X-Ray、メトリクス、WAFログでAPIの健全性とセキュリティを監視する。

AppSyncはAPI層をサーバーレス化しますが、データモデル、認可、リゾルバー、キャッシュ整合性、スロットリングは設計が必要です。 特にDynamoDBと組み合わせる場合、GraphQLクエリがアクセスパターンに合うようテーブル設計を行います。

4. セキュリティと認証・認可

  • 認証モード: APIキー、IAM、Cognito User Pools、OpenID Connect、Lambdaオーソライザーから要件に合う方式を選ぶ。
  • フィールド単位認可: スキーマディレクティブやリゾルバーで、ユーザー属性やグループに応じたアクセスを制御する。
  • IAM最小権限: AppSyncのサービスロールには、対象データソースに必要な操作だけを許可する。
  • Private API: インターネット公開を避けたいAPIは、VPCエンドポイント経由のプライベートアクセスを検討する。
  • AWS WAF: 悪意あるリクエスト、ボット、過剰なアクセスからGraphQL APIを保護する。
  • 監査: CloudTrail、CloudWatch Logs、X-Ray、データソース側ログを組み合わせて調査できるようにする。
  • APIキー管理: APIキーは簡易認証や開発用途に限定し、有効期限とローテーションを管理する。

5. 料金形態

AWS AppSyncは主にAPIリクエスト、リアルタイムメッセージ、キャッシュ、関連データソースの利用量で課金を考えます。

  • GraphQL操作: Query、Mutationなどのリクエスト数に応じて課金される。
  • リアルタイム: SubscriptionやPub/Subの接続、メッセージ配信、更新量を考慮する。
  • キャッシュ: AppSyncキャッシュを有効化すると、キャッシュノード分の料金が発生する。
  • データソース: DynamoDB、Lambda、OpenSearch Service、RDS、CloudWatch Logsなどは各サービスで課金される。
  • 最適化: 必要なフィールドだけ取得し、N+1リゾルバー、過剰なSubscription、不要ログを抑える。

6. よくあるアーキテクチャ・設計パターン

  • サーバーレスGraphQL API: AppSync + DynamoDB + Cognitoで、認証付きWeb/モバイルAPIを構築する。
  • リアルタイムアプリ: SubscriptionやAppSync Eventsでチャット、通知、共同編集、ライブスコアを配信する。
  • 複数データソース統合: DynamoDB、Lambda、HTTP API、OpenSearch Serviceを単一GraphQLスキーマにまとめる。
  • Amplify連携: Amplifyでフロントエンドと認証/データ機能を作成し、AppSyncをAPI層として利用する。
  • 企業向けPrivate API: Private API、IAM、WAF、CloudWatchで社内アプリ向けGraphQL APIを保護する。
  • Merged APIs: 複数チームが管理するGraphQL APIを統合し、スキーマ所有を分散する。

7. 設定・デプロイ手順(ハンズオン例)

  1. AppSyncコンソールでGraphQL APIを作成し、認証方式を選択する。
  2. GraphQLスキーマにQuery、Mutation、Subscription、型を定義する。
  3. DynamoDB、Lambda、HTTPなどのデータソースを登録し、IAMロールを設定する。
  4. JavaScript/TypeScriptまたはVTLでリゾルバーを作成し、フィールドとデータソースを接続する。
  5. Cognito/IAM/APIキーなどの認可をテストし、必要に応じてフィールド単位の制御を追加する。
  6. SubscriptionやAppSync Eventsを設定し、WebSocketでリアルタイム配信を確認する。
  7. CloudWatch Logs、X-Ray、WAF、キャッシュ、アラームを有効化し、性能とセキュリティを確認する。

8. 試験で問われやすいポイント

8.1 サービス選択

  • Q: AWS AppSyncは何を構築するサービス?
    A: サーバーレスなGraphQL APIとリアルタイムPub/Sub APIを構築するサービス。
  • Q: REST APIを中心に構築したい場合の代表サービスは?
    A: Amazon API Gateway。AppSyncはGraphQLとリアルタイム連携が中心。
  • Q: フロントエンド開発、ホスティング、認証、APIをまとめて扱うサービスは?
    A: AWS Amplify。AppSyncはAmplifyのAPI層として利用されることが多い。

8.2 GraphQLとリアルタイム

  • Q: GraphQLでクライアントが得られる利点は?
    A: 必要なフィールドだけを取得でき、複数データソースを単一APIで扱えること。
  • Q: AppSyncでリアルタイム更新を実現する代表機能は?
    A: GraphQL SubscriptionとAppSync Events。
  • Q: AppSyncのリゾルバーの役割は?
    A: GraphQLフィールドとDynamoDB、Lambda、HTTPなどのデータソースを接続すること。

8.3 認証と料金

  • Q: AppSyncの主な認証方式は?
    A: APIキー、IAM、Cognito User Pools、OpenID Connect、Lambdaオーソライザー。
  • Q: 社内用途でインターネット公開を避けたいGraphQL APIには何を検討する?
    A: AppSync Private APIとVPCエンドポイント。
  • Q: AppSyncの主な課金要素は?
    A: GraphQLリクエスト、リアルタイムメッセージ、キャッシュ、関連データソースの利用量。