[リゾルバ] - 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

必須: いいえ

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 オペレーションタイプです。例えば、QueryMutation、または 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; }