データソースへの直接アクセスと Lambda データソース経由のプロキシのどちらかを選択する - AWS AppSync

データソースへの直接アクセスと 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 でサポートされていない機能の使用が必要

  • 複数のネットワークリクエストを行ったり、クエリを実行するためにファイルシステムにアクセスしたりする

  • バッチ設定を使用してリクエストをバッチ処理する。