AWS認定資格 WEB問題集&徹底解説
クラウドプラクティショナー
AWSサービスの一つであるAWS AppSyncはどんな内容なのでしょうか?また、AWS認定資格のクラウドプラクティショナー(CLF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
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. アーキテクチャおよび技術要素
- GraphQLスキーマでQuery、Mutation、Subscription、型、認可ルールを定義する。
- フィールドごとにリゾルバーを設定し、DynamoDB、Lambda、HTTP、OpenSearch Serviceなどのデータソースへ接続する。
- クライアントはCognito、IAM、APIキーなどで認証し、AppSyncエンドポイントへGraphQLリクエストを送る。
- AppSyncがリゾルバーを実行し、必要なデータだけを結合してGraphQLレスポンスを返す。
- SubscriptionやAppSync Eventsを使う場合、WebSocket接続を通じてリアルタイムイベントを配信する。
- 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. 設定・デプロイ手順(ハンズオン例)
- AppSyncコンソールでGraphQL APIを作成し、認証方式を選択する。
- GraphQLスキーマにQuery、Mutation、Subscription、型を定義する。
- DynamoDB、Lambda、HTTPなどのデータソースを登録し、IAMロールを設定する。
- JavaScript/TypeScriptまたはVTLでリゾルバーを作成し、フィールドとデータソースを接続する。
- Cognito/IAM/APIキーなどの認可をテストし、必要に応じてフィールド単位の制御を追加する。
- SubscriptionやAppSync Eventsを設定し、WebSocketでリアルタイム配信を確認する。
- 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リクエスト、リアルタイムメッセージ、キャッシュ、関連データソースの利用量。