データソースへの直接アクセスと Lambda データソース経由のプロキシのどちらかを選択する
AWS AppSync と APPSYNC_JS
ランタイムでは、AWS AppSync関数を使用してデータソースにアクセスすることで、カスタムビジネスロジックを実装する独自のコードを記述できます。これにより、追加の計算サービスやインフラストラクチャをデプロイしなくても、Amazon DynamoDB、Aurora Serverless、OpenSearch Service、HTTP API、その他の AWS のサービスなどのデータソースと簡単に直接やり取りできます。AWSAppSync では、Lambda データソースを設定することで AWS Lambda 関数を簡単に操作することもできます。Lambda データソースを使用すると、AWS Lambda のフルセット機能を使用して複雑なビジネスロジックを実行して GraphQL リクエストを解決できます。ほとんどの場合、ターゲットデータソースに直接接続された AWS AppSync 関数は、必要な機能をすべて提供します。APPSYNC_JS
ランタイムでサポートされていない複雑なビジネスロジックを実装する必要がある状況では、Lambda データソースをプロキシとして使用してターゲットデータソースとやり取りできます。
データソースの直接統合 | プロキシとしての Lambda データソース | |
ユースケース | AWS AppSync functions interact directly with API data sources. | AWS AppSync functions call Lambdas that interact with API data sources. |
Runtime | APPSYNC_JS (JavaScript) |
サポートされる Lambda ランタイム |
Maximum size of code | AWS AppSync 関数あたり 32,000 文字 | 50 MB (zip 圧縮済み、直接アップロード) |
External modules | 制限あり-APPSYNC_JS がサポートしている機能のみ | 可能 |
Call any AWS service | Yes - AWS AppSync HTTP データソースを使用中 | Yes - AWS SDK を使用中 |
Access to the request header | あり | はい |
Network access | いいえ | はい |
File system access | いいえ | はい |
Logging and metrics | はい | はい |
Build and test entirely within AppSync | はい | いいえ |
Cold start | なし | No - プロビジョニング済み同時実行 |
Auto-scaling | Yes - AWS AppSync による透過的な処理 | Yes - Lambda で設定されているとおり |
Pricing | 追加料金なし | Lambda の使用に対して課金 |
ターゲットデータソースと直接統合する AWS AppSync 関数は、次のような場合に理想的です。
-
Amazon DynamoDB、Aurora サーバーレス、OpenSearch サービスとのやり取り
-
HTTP API とのやりとりと受信ヘッダーの受け渡し
-
HTTP データソースを使用する AWS サービスとのやり取り (提供されたデータソースロールでリクエストに自動的に署名する AWS AppSync)
-
データソースにアクセスする前のアクセス制御の実装
-
リクエストに応答する前に、取得したデータをフィルター処理する。
-
リゾルバーパイプラインで AWS AppSync 関数を順次実行するシンプルなオーケストレーションの実装
-
クエリとミューテーションにおけるキャッシュ接続とサブスクリプション接続の制御。
Lambda データソースをプロキシとして使用する AWS AppSync 関数は、次のような場合に理想的です。
-
JavaScript または Velocity TL (VTL) 以外の言語を使用する
-
CPU またはメモリの調整と制御によるパフォーマンスの最適化
-
サードパーティ製ライブラリのインポートまたは
APPSYNC_JS
でサポートされていない機能の使用が必要 -
複数のネットワークリクエストを行ったり、クエリを実行するためにファイルシステムにアクセスしたりする
-
バッチ設定を使用してリクエストをバッチ処理する。