[リゾルバ] - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

[リゾルバ]

GraphQL API のフィールドのリゾルバーを設定します。AWS Serverless Application Model (AWS SAM) は、JavaScript パイプラインリゾルバーをサポートしています。

構文

AWS Serverless Application Model (AWS SAM) テンプレートでこのエンティティを宣言するには、以下の構文を使用します。

YAML

OperationType: LogicalId: Caching: CachingConfig CodeUri: String FieldName: String InlineCode: String MaxBatchSize: Integer Pipeline: List Runtime: Runtime Sync: SyncConfig

プロパティ

Caching

キャッシュが有効になっているリゾルバーのキャッシュ構成です。

タイプ: CachingConfig

必須: いいえ

CloudFormation との互換性: このプロパティは、AWS::AppSync::Resolver リソースの CachingConfig プロパティに直接渡されます。

CodeUri

リゾルバー関数コードの Amazon Simple Storage Service (Amazon S3) URI、またはローカルフォルダへのパスです。

ローカルフォルダへのパスを指定する場合、CloudFormation では、最初にファイルを Amazon S3 にアップロードしてからデプロイする必要があります。AWS SAM CLI を使用することで、この処理を円滑化することができます。詳細については、「デプロイ時に AWS SAM でローカルファイルをアップロードする方法」を参照してください。

CodeUri または InlineCode のどちらも指定されていない場合、AWS SAM は、リクエストを最初のパイプライン関数にリダイレクトし、最後のパイプライン関数からレスポンスを受け取る InlineCode を生成します。

タイプ: 文字列

必須: いいえ

CloudFormation との互換性: このプロパティは、AWS::AppSync::Resolver リソースの CodeS3Location プロパティに直接渡されます。

FieldName

リゾルバーの名前です。このプロパティを指定して、LogicalId 値を上書きします。

タイプ: 文字列

必須: いいえ

CloudFormation との互換性: このプロパティは、AWS::AppSync::Resolver リソースの FieldName プロパティに直接渡されます。

InlineCode

リクエスト関数とレスポンス関数が含まれるリゾルバーコードです。

CodeUri または InlineCode のどちらも指定されていない場合、AWS SAM は、リクエストを最初のパイプライン関数にリダイレクトし、最後のパイプライン関数からレスポンスを受け取る InlineCode を生成します。

タイプ: 文字列

必須: いいえ

CloudFormation との互換性: このプロパティは、AWS::AppSync::Resolver リソースの Code プロパティに直接渡されます。

LogicalId

リゾルバーの一意の名前です。GraphQL スキーマでは、リゾルバーが使用されるフィールド名が、リゾルバー名と一致する必要があります。LogicalId にも、それと同じフィールド名を使用してください。

タイプ: 文字列

必須: はい

CloudFormation との互換性: このプロパティは AWS SAM に固有であり、CloudFormation に同等のものはありません。

MaxBatchSize

BatchInvoke オペレーションの単一の AWS Lambda 機能に送信されるリゾルバーリクエスト入力の最大数を指定します。

タイプ: 整数

必須: いいえ

CloudFormation との互換性: このプロパティは、AWS::AppSync::Resolver リソースの MaxBatchSize プロパティに直接渡されます。

OperationType

リゾルバーに関連付けられている GraphQL オペレーションタイプです。例えば、QueryMutation、または Subscription などです。単一の OperationType 内にある LogicalId で、複数のリゾルバーをネストすることができます。

タイプ: 文字列

必須: はい

CloudFormation との互換性: このプロパティは、AWS::AppSync::Resolver リソースの TypeName プロパティに直接渡されます。

Pipeline

パイプランリゾルバーにリンクされている関数。リスト内の論理 ID で関数を指定します。

タイプ: リスト

必須: はい

CloudFormation との互換性: このプロパティは AWS SAM に固有であり、CloudFormation に同等のものはありません。これは、AWS::AppSync::Resolver リソースの PipelineConfig プロパティに似ています。

Runtime

パイプラインリゾルバーまたは関数のランタイムです。使用する名前とバージョンを指定します。

タイプ: Runtime

必須: はい

CloudFormation との互換性: このプロパティは AWS SAM に固有であり、CloudFormation に同等のものはありません。これは、AWS::AppSync::Resolver リソースの Runtime プロパティに似ています。

Sync

リゾルバーの同期構成について説明します。

リゾルバーが呼び出されたときに、どの競合検出戦略および解決戦略を使用するかを指定します。

Type: SyncConfig

必須: いいえ

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; }