0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AppSyncでの開発の流れメモ

Posted at

開発時流れ

AWS CDKを使ってTypeScriptでAppSync APIを追加する方法は以下の手順で行います。

必要なパッケージのインストール:

まず、@aws-cdk/aws-appsyncパッケージをインストールしてください。

npm install @aws-cdk/aws-appsync

CDKスタックの作成:

libディレクトリ内に新しいスタックファイル(例: appsync-cdk-app-stack.ts)を作成し、必要なモジュールをインポートします。

import * as cdk from 'aws-cdk-lib';
import * as appsync from 'aws-cdk-lib/aws-appsync';

AppSync APIの追加:

スタッククラス内でAppSync APIを作成します。GraphQL Endpoint自体の定義をします。
以下の例では、schema.graphqlファイルからスキーマを読み込んでいます。

export class AppsyncCdkAppStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // AppSync APIの作成
    const api = new appsync.GraphqlApi(this, 'api', {
      name: 'myApi',
      schema: appsync.Schema.fromAsset(path.join(__dirname, 'schema.graphql')),
    });
  }
}

データソースとリゾルバの追加:

必要に応じて、データソースとリゾルバをAPIに追加できます。
データソースとリゾルバは、AWS AppSyncでGraphQL APIを構築する際に重要な役割を果たします。データソースは、APIがアクセスするデータの場所を定義し、リゾルバは、クライアントからのGraphQLクエリやミューテーションに対して実際にデータを取得・操作する方法を指定します
データソースは、DynamoDB、RDS、Amazon Elasticsearch Service、HTTPエンドポイントなど、さまざまなデータストレージやサービスに対応しています。

リゾルバは、クライアントからのリクエストをデータソースにマッピングし、その結果をクライアントに返す役割を果たします。それぞれのリゾルバは特定のデータソース(例えば、DynamoDBテーブルやLambda関数など)と関連付けられ、そのデータソースからデータを取得したり、データを変更したりします。

パイプラインは、複数のリゾルバ(これをリゾルバ関数とも呼びます)を一連のステップとして組み合わせたものです。各リゾルバ関数は順番に実行され、一つの関数の出力が次の関数の入力となります。これにより、複数のデータソースからデータを取得し結合したり、複雑なデータ操作や変換を行ったりすることが可能になります。

したがって、パイプラインリゾルバを使用することで、単一のリクエストで複数のデータソースを操作し、それらの結果を組み合わせてクライアントに返すことができます。これは、より複雑なデータ取得や操作を可能にします。
以下は、DynamoDBテーブルをデータソースとして追加し、リゾルバを作成する例です。

import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';

// DynamoDBテーブルの作成
const table = new dynamodb.Table(this, 'MyTable', {
  partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },
});

// データソースの追加
const dataSource = api.addDynamoDbDataSource('MyDataSource', table);

// リゾルバの追加
dataSource.createResolver({
  typeName: 'Query',
  fieldName: 'getItem',
  requestMappingTemplate: appsync.MappingTemplate.dynamoDbGetItem('id', 'id'),
  responseMappingTemplate: appsync.MappingTemplate.dynamoDbResultItem(),
});

デプロイ:

最後に、CDKアプリケーションをデプロイします。

cdk deploy

これで、AWS CDKとTypeScriptを使用してAppSync APIを追加する方法が完了しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?