翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
[リゾルバ]
GraphQL API の フィールドにリゾルバーを設定します。 AWS Serverless Application Model (AWS SAM) は JavaScript パイプラインリゾルバーをサポートします。
構文
AWS Serverless Application Model (AWS SAM) テンプレートでこのエンティティを宣言するには、次の構文を使用します。
YAML
OperationType:LogicalId: Caching:CachingConfigCodeUri:StringFieldName:StringInlineCode:StringMaxBatchSize:IntegerPipeline:ListRuntime:RuntimeSync:SyncConfig
プロパティ
- Caching
- 
					キャッシュが有効になっているリゾルバーのキャッシュ構成です。 タイプ: CachingConfig 必須: いいえ AWS CloudFormation 互換性: このプロパティは、 AWS::AppSync::ResolverリソースのCachingConfigプロパティに直接渡されます。
- CodeUri
- 
					リゾルバー関数コードの Amazon Simple Storage Service (Amazon S3) URI、またはローカルフォルダへのパスです。 ローカルフォルダへのパスを指定する場合、 AWS CloudFormation はデプロイ前にファイルを最初に Amazon S3 にアップロードする必要があります。 AWS SAM CLI を使用することで、この処理を円滑化することができます。詳細については、「がデプロイ時にローカルファイル AWS SAM をアップロードする方法」を参照してください。 CodeUriまたは のいずれも指定InlineCodeされていない場合、 AWS SAM はリクエストを最初のパイプライン関数にInlineCodeリダイレクトし、最後のパイプライン関数からレスポンスを受け取る を生成します。型: 文字列 必須: いいえ AWS CloudFormation 互換性: このプロパティは、 AWS::AppSync::ResolverリソースのCodeS3Locationプロパティに直接渡されます。
- FieldName
- 
					リゾルバーの名前です。このプロパティを指定して、 LogicalId値を上書きします。型: 文字列 必須: いいえ AWS CloudFormation 互換性: このプロパティは、 AWS::AppSync::ResolverリソースのFieldNameプロパティに直接渡されます。
- InlineCode
- 
					リクエスト関数とレスポンス関数が含まれるリゾルバーコードです。 CodeUriまたは のいずれも指定InlineCodeされていない場合、 AWS SAM はリクエストを最初のパイプライン関数にInlineCodeリダイレクトし、最後のパイプライン関数からレスポンスを受け取る を生成します。型: 文字列 必須: いいえ AWS CloudFormation 互換性: このプロパティは、 AWS::AppSync::ResolverリソースのCodeプロパティに直接渡されます。
- LogicalId
- 
					リゾルバーの一意の名前です。GraphQL スキーマでは、リゾルバーが使用されるフィールド名が、リゾルバー名と一致する必要があります。 LogicalIdにも、それと同じフィールド名を使用してください。型: 文字列 必須: はい AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のプロパティはありません。 
- MaxBatchSize
- 
					BatchInvokeオペレーションの単一の AWS Lambda 機能に送信されるリゾルバーリクエスト入力の最大数を指定します。タイプ: 整数 必須: いいえ AWS CloudFormation 互換性: このプロパティは、 AWS::AppSync::ResolverリソースのMaxBatchSizeプロパティに直接渡されます。
- OperationType
- 
					リゾルバーに関連付けられている GraphQL オペレーションタイプです。例えば、 Query、Mutation、またはSubscriptionなどです。単一のOperationType内にあるLogicalIdで、複数のリゾルバーをネストすることができます。型: 文字列 必須: はい AWS CloudFormation 互換性: このプロパティは、 AWS::AppSync::ResolverリソースのTypeNameプロパティに直接渡されます。
- Pipeline
- 
					パイプランリゾルバーにリンクされている関数。リスト内の論理 ID で関数を指定します。 タイプ: リスト 必須: はい AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。これは、 AWS::AppSync::ResolverリソースのPipelineConfigプロパティに似ています。
- Runtime
- 
					パイプラインリゾルバーまたは関数のランタイムです。使用する名前とバージョンを指定します。 タイプ: Runtime 必須: はい AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のプロパティはありません。これは、 AWS::AppSync::ResolverリソースのRuntimeプロパティに似ています。
- Sync
- 
					リゾルバーの同期構成について説明します。 リゾルバーが呼び出されたときに、どの競合検出戦略および解決戦略を使用するかを指定します。 タイプ: SyncConfig 必須: いいえ AWS CloudFormation 互換性: このプロパティは、 AWS::AppSync::ResolverリソースのSyncConfigプロパティに直接渡されます。
例
AWS SAM 生成されたリゾルバー関数コードを使用し、フィールドを変数として保存する
以下は、この例の GraphQL スキーマです。
schema { query: Query mutation: Mutation } type Query { getPost(id: ID!): Post } type Mutation { addPost(author: String!, title: String!, content: String!): Post! } type Post { id: ID! author: String title: String content: String }
テンプレートのスニペットを次に示します AWS SAM 。
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyGraphQLApi: Type: AWS::Serverless::GraphQLApi Properties: ... Functions: preprocessPostItem: ... createPostItem: ... Resolvers: Mutation: addPost: Runtime: Name: APPSYNC_JS Version: 1.0.0 Pipeline: - preprocessPostItem - createPostItem
 AWS SAM テンプレートでは、 CodeUriまたは を指定しませんInlineCode。デプロイ時に、 はリゾルバーの次のインラインコード AWS SAM を自動的に生成します。
export function request(ctx) { return {}; } export function response(ctx) { return ctx.prev.result; }
このデフォルトリゾルバーコードは、リクエストを最初のパイプライン関数にリダイレクトし、最後のパイプライン関数からレスポンスを受け取ります。
最初のパイプライン関数では、提供された args フィールドを使用してリクエストオブジェクトを解析し、変数を作成することができます。作成後、関数内でこれらの変数を使用できます。以下は、preprocessPostItem 関数の例です。
import { util } from "@aws-appsync/utils"; export function request(ctx) { const author = ctx.args.author; const title = ctx.args.title; const content = ctx.args.content; // Use variables to process data } export function response(ctx) { return ctx.result; }