- フロントエンドのウェブとモバイル›
- AWS AppSync›
- よくある質問
AWS AppSync のよくある質問
AppSync GraphQL
開始にあたり GraphQL について知っておく必要はありますか?
いいえ、AWS AppSync は自動的にすべての API、スキーマをセットアップし、データソースを数秒でデータモデルに入力できるシンプルな UI ビルダーに接続します。クライアントアプリケーションで、すぐにエンドポイントの使用を開始できます。コンソールは、アプリケーションが完全に機能するよう、多数のサンプルスキーマとデータソースも提供しています。
AWS AppSync で使用できるデータソースはどのようなものですか?
AWS AppSync は、Amazon DynamoDB、AWS Lambda、Amazon OpenSearch Service のテーブル、関数、ドメインなどの新規または既存の AWS リソースと、GraphQL スキーマで使用することができます。HTTP API を提供するデータソースやサービスに接続することができます。AWS AppSync では、JavaScript で書かれたリゾルバとのインタラクションを設定することができます。
AWS AppSync のビジネスロジックを記述するにはどうすればよいですか?
GraphQL リクエストは「リゾルバ」として実行されるため、メッセージ形式は、AWS AppSync と統合するさまざまな AWS のサービスに適した形に変換する必要があります。例えば、あるフィールドの GraphQL クエリは、Amazon DynamoDB、AWS Lambda、Amazon OpenSearch Service 向けにそれぞれ固有の形式に変換する必要があります。AWS AppSync では、JavaScript を使用してリゾルバのカスタムロジックを書き、カスタム AppSync JavaScript ランタイム上でコードを実行することができます。これにより、受信したリクエストをどのように変換してデータソースとやりとりするか、また、データソースからのレスポンスをどのように GraphQL レスポンスにマッピングして返すべきかを定義することができます。
自分の JavaScript コードの動作を検証するにはどうすればよいですか?
コードの動作は、コンソールから直接確認することができます。コンソールからは、モックデータを使用して、データソースとやりとりすることなく、リゾルバの評価をテストすることができます。AppSync は、モックデータを使用して JavaScript コードを評価するために使用できるリモート API も提供しています。これらの API は AWS CLI や AWS SDK から利用することができます。これにより、お気に入りのテストフレームワーク内でリゾルバを評価し、ユニットテストを実行することができます。また、コンソールのクエリエディタを使用して、GraphQL クエリ、ミューテーション、サブスクリプションをテストし、各リクエストのログデータをリアルタイムでライブストリーミングすることができます。
データソースに直接アクセスするために JavaScript リゾルバを使用すべきですか? あるいは、Lambda データソースを使用してビジネスロジックを処理すべきでしょうか?
JavaScript リゾルバを使えば、独自のビジネスロジックを実装した独自のコードを書いて、データソースにアクセスすることができます。これにより、Amazon DynamoDB、Amazon Aurora Serverless、Amazon OpenSearch Service、HTTP API、およびその他の AWS サービスなどのデータソースと、追加のコンピューティングサービスやインフラストラクチャをデプロイすることなく、簡単に直接やりとりすることができます。また、AWS AppSync は、Lambda データソースを設定することで、AWS Lambda 関数と簡単にやりとりすることができます。Lambda データソースを使用すると、AWS Lambda のフルセット機能を使用して複雑なビジネスロジックを実行し、GraphQL リクエストを解決することができます。ほとんどの場合、ターゲットデータソースに直接接続された AppSync 関数で、必要なすべての機能が提供されます。JavaScript リゾルバがサポートしない複雑なビジネスロジックを実装する必要がある状況では、Lambda データソースをプロキシとして使用して、ターゲットデータソースとやりとりすることができます。
AWS AppSync は API フェデレーションをサポートしていますか?
はい。API フェデレーションは AWS AppSync の Merged API 機能によってサポートされています。Merged API は、さまざまなサービスまたはデータソースを表す複数のソース GraphQL API から構成された単一の GraphQL API です。Merged API を使用すると、単一の API スキーマをデータコンシューマーに提供できます。また関連するデータドメインに最も精通しているチームがサブスキーマを独立して進化させることができます。単一の AppSync API の開発を共有するチームの場合、Merged API 機能を使用すると、独立して運用しながらシームレスにコラボレーションできます。
AWS AppSync AWS は既存の AWS リソースと併用できますか?
はい。AWS AppSync では GraphQL スキーマを使用して、Amazon DynamoDB、AWS Lambda、Amazon OpenSearch Service の既存のテーブル、関数、ドメインを使用できます。AWS AppSync なら、既存の AWS リソースを使ってデータソースを作成し、マッピングテンプレートを使用して相互作用を設定できます。
AWS AppSync ではデータがどのように保護されますか?
保管中のアプリケーションデータはお客様の AWS アカウントに保存され、AWS AppSync サービス内には保存されません。AWS AppSync では、AWS Identity and Access Management (IAM) や Amazon Cognito ユーザープールなどを使用したセキュリティコントロールによって、アプリケーションからこのデータへのアクセスを保護できます。さらに、認証されたリクエスト用にユーザーコンテキストを引き渡すことができるため、AWS AppSync のマッピングテンプレートを使用して、リソースに対するきめ細かなアクセスコントロールロジックを実行できます。
AWS AppSync ではデータをリアルタイムに作成できますか?
はい。AWS AppSync では、どのようなデータソースについてもサブスクリプションがサポートされているため、突然の変化が発生したときは、over WebSockets を使用して、イベントストリームをサブスクライブしているクライアントにその結果をすぐに引き継ぐことができます。
AWS AppSync で複雑なクエリを実行するにはどうすればよいですか?
AWS AppSync で利用できるデータソースでは、GraphQL を使用することで、Amazon DynamoDB、Amazon OpenSearch Service、AWS Lambda によって提供される機能を最大限活用できます。インデックス作成や条件チェックといった機能によって、DynamoDB から包括的な結果が返されます。あいまい検索、位置情報検索などの Amazon OpenSearch Service のユースケースもアプリケーションで利用できます。さらに、Lambda を使用した連続的なリクエストやバッチリクエストによって、Amazon Aurora などの他のソースからもデータを返すことができます。
AWS AppSync はどの AWS リージョンで利用できますか?
AWS AppSync は世界のさまざまなリージョンでご利用いただけます。詳細については、AWS リージョン表をご覧ください。
既存の Amazon DynamoDB テーブルをインポートできますか?
AWS AppSync は、テーブルのキースキーマとインデックスの推論を含む既存の DynamoDB テーブルから GraphQL スキーマを自動で生成できます。インポートが完了すると、GraphQL クエリ、ミューテーション、サブスクリプションを使用できます。コーディングは不要です。また AppSync は、GraphQL タイプから DynamoDB 属性に、非キー属性を「オートマップ」します。
AWS AppSync でデータベースを作成できますか?
お客様は手動で、またはコンソールを使用して GraphQL スキーマを作成できます。AWS AppSync では、自動的に Amazon DynamoDB テーブルをプロビジョニングし、適切なインデックスを付与します。さらに、データソースが「GraphQL リゾルバ」に接続されるため、お客様はアプリケーションコードとデータ構造に集中して作業できます。
アプリケーションを AppSync API に接続するためにどのクライアントを使用できますか?
HTTP または GraphQL クライアントを使用して、AppSync の GraphQL API に接続できます。AppSync バックエンドに接続するために最適化された Amplify クライアントを使用することを強くお勧めします。アプリケーションのユースケースに応じて、いくつかのオプションがあります。
- DynamoDB データソースの場合、Amplify クライアントの DataStore カテゴリを使用します。最高の開発者体験および組み込みの競合検出と解決を提供します。
- オフライン要件がないシナリオの非 DynamoDB データソースの場合、Amplify クライアントの API (GraphQL) カテゴリを使用します。
- オフライン要件があるシナリオの非 DynamoDB データソースの場合は、AppSync SDK を使用します。
自分の AppSync GraphQL エンドポイントにアクセスするために独自のドメイン名を使用できますか?
AWS AppSync では、お客様の AWS AppSync API でカスタムドメイン名を使用して、GraphQl エンドポイントとリアルタイムエンドポイントにアクセスすることができます。AppSync でカスタムドメイン名を作成するには、所有するドメイン名を提供し、ドメインをカバーする有効な AWS Certificate Manager (ACM) 証明書を示すだけです。カスタムドメイン名を作成すると、アカウントで利用可能な AppSync API にドメイン名を関連付けることができます。AppSync が提供するドメイン名にマッピングするように DNS レコードを更新した後、新しい GraphQL エンドポイントとリアルタイムエンドポイントを使用するようにアプリケーションを設定することができます。アプリケーションを更新しなくても、カスタムドメインの API アソシエーションをいつでも変更できます。AppSync がカスタムドメインエンドポイントでリクエストを受信すると、関連する API にルーティングして処理します。
AppSync でプライベート API を作成することはできますか?
はい。AWS AppSync はプライベート API をサポートしています。プライベート API を使用すると、Amazon 仮想プライベートクラウド (VPC) からのみアクセスできる GraphQL API を作成できます。
AppSync Events
イベントとは何ですか?
「イベント」は、発生とそのコンテキストを表すデータレコードです。イベントは、イベントプロデューサー (ソース) から関心のあるイベントコンシューマーにルーティングされます。AppSync Events を使用すると、デベロッパーは HTTP プロトコルと JSON 形式を使用してイベントを発行できます。サブスクライブは WebSocket チャネルを介して行われます。
チャネルとは何ですか?
チャネルはルーティングの概念です。イベントの論理的な宛先です。パブリッシャーは次のように言うことができます:「イベントをルーティングすべき場所はここです」。 サブスクライバーはは次のように言うことができます:「到達するイベントをモニタリングするルートはここです」。
名前空間とは
名前空間は、その中に存在するチャネルによって共有される機能を定義するために使用される論理構造です。例えば、Event API のために複数の認可モードを定義し、名前空間で特定のモードをアタッチできます (例: 名前空間 /chat で IAM_AUTH モードのみを許可)。
イベントが発行される際にイベントを変換する必要があります。何か方法はありますか?
はい。必要なのは、onPublish 関数を指定するイベントハンドラーをアタッチすることだけです。そのハンドラーで、変換ロジックを実装します。
イベントハンドラーとは何ですか?
イベントハンドラーを使用すると、API のランタイム動作を定義できます。イベントハンドラーはオプションで、システムイベントに応じて実行されるロジックを提供します。
既存の名前空間にイベントハンドラーをアタッチできます。onSubscribe ハンドラーは、クライアントが名前空間内のチャネルをサブスクライブするたびに呼び出されます。サブスクリプションを認可し、フィルターを適用できます。onPublish ハンドラーは、名前空間内のチャネルに発行されたイベントのために呼び出されます。サブスクライブしたクライアントに転送される前にイベントを変換できます。onPublish ハンドラーでは、null を返すだけでメッセージをドロップできます。
AWS AppSync のお客様の詳細はこちら
- 選択