@ito_tetsushi

東京・神奈川のサーバーレス / Web / モバイルアプリエンジニア

AWS CDKでAWS AppSyncを構築する方法(TypeScript版)

概要

AWS CDK(Cloud Development Kit)は、AWS上のリソースをPython / Java / .NET / TypeScriptを使って構築することができるフレームワークです。 AWS AppSyncはAWS上にGraphQLサーバーを構築することができるマネージドサービスです。 Amazon API Gatewayを使うことでREST APIを構築できますが、GraphQLのAPIを立てたい場合はAWS AppSyncを使います。

GraphQLには以下のような特徴があります。

  • 型指定されたスキーマ
  • 必要なフィールドのみ取得
  • サーバー側からの情報のプッシュ

動作確認

  • aws-cdk@1.6.1

AWS CDKのCLIをインストール

$ npm i -g aws-cdk

AWS CDKのプロジェクトを作成

# ディレクトリを作成
$ mkdir appsync

# ディレクトリに移動
$ cd appsync

# AWS CDKプロジェクトを作成
$ cdk init app --language=typescript

この時点でのディレクトリは以下のようになっています。

$ tree . -I node_modules
.
├── README.md
├── bin
│   └── appsync.ts
├── cdk.json
├── lib
│   └── appsync-stack.ts
├── package-lock.json
├── package.json
└── tsconfig.json

AWS AppSyncを構築するためのパッケージを追加する

AWS CDKでは、AWSの各リソースを構築するためのクラスはそれぞれ別パッケージとなっています。 次のコマンドでAWS AppSyncを構築するためのパッケージをインストールします。

$ npm i @aws-cdk/aws-appsync

AWS AppSyncを構築するコードを追加する

lib/appsync-stack.ts に以下のコードを追加します。

import cdk = require("@aws-cdk/core");

// 以下の行を追加
import appsync = require("@aws-cdk/aws-appsync");

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

    // 以下の行を追加
    new appsync.CfnGraphQLApi(this, "AppSyncAPI", {
      name: "MyAppSyncAPI",
      authenticationType: "API_KEY"
    });
  }
}

AWS CDKで構築したリソースをデプロイする

# TypeScriptをコンパイル
$ npx tsc

# リソースをデプロイ
$ cdk deploy

マネジメントコンソールにてAWS AppSyncのAPIが出来上がっているのが確認できます。

f:id:ito_tetsushi:20190902000056p:plain

リソースを削除する

# リソースを削除する
$ cdk destroy