Amazon Web Services ブログ

AWS AppSync – 6 つの新機能を加え本番提供開始

データ指向のウェブおよびモバイルアプリを構築し (または構築したいと思い)、リアルタイムの更新やオフライン作業の機能が必要な場合は、AWS AppSync を確認する必要があります。AWS re:Invent 2017 においてプレビュー形式で発表され、ここで詳しく説明されている AWS AppSync は、iOS、Android、JavaScript、および React Native アプリで使用するために設計されています。AWS AppSync は、アプリケーションでクラウドから必要とする正確なデータを要求することを容易にするオープンで標準化されたクエリー言語である GraphQL を中心に構築されています。

アプリケーション開発プロセスを簡素化し、合理化する次の新しい 6 つの機能を備えた AWS AppSync のプレビュー期間が終了し、一般利用可能になり、本番稼働の準備ができたことを発表できることをうれしく思います。

コンソールログアクセス – AWS AppSync コンソールの中から GraphQL クエリー、ミューテーション、サブスクリプションをテストするときに作成される CloudWatch Logs を確認することができるようになりました。

モックデータによるコンソール試験遂行 – 試験遂行の目的でコンソールにモックコンテキストオブジェクトを作成し、使用することができるようになりました。

サブスクリプションリゾルバ – すでにクエリに対して行い、リクエストを変更する方法と同様に、AWS AppSync サブスクリプションリクエストに対するリゾルバを作成することができるようになりました。

DynamoDB のバッチ GraphQL オペレーション – DynamoDB のバッチオペレーション (BatchGetItemBatchWriteItem) をリゾルバ機能の中の 1 つ以上のテーブルにわたって利用することができるようになりました。

CloudWatch サポート – AWS AppSync API へのコールをモニタリングするために、Amazon CloudWatch Metrics と CloudWatch Logs を使用できるようになりました。

CloudFormation サポートAWS CloudFormation テンプレートを使用して、スキーマ、データソース、リゾルバを定義することができるようになりました。

簡単な AppSync のレビュー
新しい機能を確認する前に、コンソールから始めて、AWS AppSync API を作成するプロセスを見直してみましょう。まず、[Create API(API の作成)] をクリックします。

API を入力し、(デモの目的で)サンプルスキーマを使用することにします。

スキーマは、GraphQL オブジェクトタイプのコレクションを定義します。各オブジェクトタイプには、次のオプションの引数をもつフィールドのセットがあります。

自分自身の API を作成している場合は、この時点でスキーマを入力します。サンプルを使用しているため、それを行う必要はありません。いずれの方法でも、[Create(作成)] をクリックして先に進みます。

GraphQL スキーマのタイプは、データに対するオペレーションのエントリポイントを定義します。特定のスキーマの代わりに保存されたすべてのデータは、これらのエントリポイントの 1 つから開始されるパスを使用してアクセスすることができなければなりません。コンソールは、次の通り自分の API のエンドポイントとキーを提供します。

また、ガイダンスとクローン作成できるフル機能のサンプルアプリのセットも提供します。

[Create(作成)] をクリックしたときに、AWS AppSync は自動的に、Amazon DynamoDB テーブルのペアを作成しました。それらを確認するために、[Data Sources(データソース)] をクリックします。

自分のスキーマを確認してから変更し、クエリーを発行し、自分の API の設定の編成を変更できます。

では、それぞれの新機能の概要を見てみましょう。

コンソールログアクセス
AWS AppSync コンソールはすでに、クエリーを発行し、結果を確認することを許可し、関連のログエントリへのアクセスを可能にします。エントリを確認するためには、ログを有効にし (以下に詳述)、LOGS を開き、チェックボックスをオンにする必要があります。新しいイベントを追加する簡単な変更クエリーを以下に示します。 クエリを入力し、矢印をクリックしてそれを試験します。

詳細な表示を確認するために、[VIEW IN CLOUDWATCH(CloudWatch で表示)] をクリックします。

詳細については、「リゾルバの試験とデバッグ」を参照してください。

モックデータによるコンソールの試験遂行
試験遂行の目的で、リゾルバの 1 つに渡されるコンソールにコンテキストオブジェクトを作成できるようになりました。次のとおり、自分のスキーマに testResolver 項目を追加します。

次に、スキーマページの左側にそれを見つけ、[Attach(添付)] をクリックします。

私はデータソース (これは試験であり、実際のソースにはアクセスされません) を選択し、[Put item] マッピングテンプレートを使用します。

次に、[Select test context(試験コンテキストの選択)] をクリックし、[Create New Context(新規コンテキストの作成)] を選択し、[Save(保存)] をクリックします (ご覧の通り、試験コンテキストには、クエリからの引数と共に、結果の各フィールドに返される値を含みます)。

新しいリゾルバを保存した後で、リクエストと応答を確認するために、[Test(試験)] をクリックします。

サブスクリプションリゾルバ
AWS AppSync アプリケーションは、 @aws_subscribe GraphQL スキーマ指令を使用し、サブスクリプションタイプを定義してデータソースへの変更を監視します。AWS AppSync クライアント SDK は、MQTT over Websockets を使用して AWS AppSync に接続し、各変更の後でアプリケーションが通知されます。サブスクリプションフィールドにリゾルバ (GraphQL ペイロードを基礎のストレージシステムで必要なプロトコルに変換する) を添付して、クライアントが接続を試みたときに、権限の確認を実行できるようになりました。これにより、クエリー、変更、およびサブスクリプション全体にわたり、同じ細かい権限ルーチンを実行できるようになります。

本機能の詳細については、「リアルタイムデータ」をお読みください。

バッチ GraphQL オペレーション
リゾルバは、領域内の 1 つ以上のテーブルにわたる DynamoDB バッチオペレーションを利用できるようになりました。 これにより、単一のクエリーでキーのリストを使用し、複数のテーブルを読み込み、複数のテーブルにレコードを一括で書き込み、複数のテーブルにわたって関連するレコードを条件付きで書き込みまたは削除することができます。

この機能を使用するためには、テーブルにアクセスするために使用する IAM ロールは DynamoDB の BatchGetItem および BatchPutItem 機能にアクセスを付与する必要があります。

詳細については、「DynamoDB バッチ リゾルバ」チュートリアルをお読みください。

CloudWatch Logs サポート
API リクエストを CloudWatch Logs に記録するように、AWS AppSync に指示することができるようになりました。[Settings(設定)] と [Enable logs(ログを有効にする)] をクリックして、IAM ロールとログレベルを選択できます。

CloudFormation サポート
AWS AppSync リソースを定義するために、テンプレートで次の CloudFormation リソースタイプを使用できます。

AWS::AppSync::GraphQLApi – データソース (Amazon Elasticsearch Service ドメインまたは DynamoDB テーブル) の観点で、AppSync API を定義します 。

AWS::AppSync::ApiKey – データソースにアクセスするために必要なアクセスキーを定義します。

AWS::AppSync::GraphQLSchema – GraphQL スキーマを定義します。

AWS::AppSync::DataSource – データソースを定義します。

AWS::AppSync::Resolver – スキーマとデータソースを参照することによりリゾルバを定義し、リクエストのマッピングテンプレートを含みます。

YAML フォームの簡単なスキーマ定義は次のとおりです。

  AppSyncSchema:
    Type: "AWS::AppSync::GraphQLSchema"
    DependsOn:
      - AppSyncGraphQLApi
    Properties:
      ApiId: !GetAtt AppSyncGraphQLApi.ApiId
      Definition: |
        schema {
          query: Query
          mutation: Mutation
        }
        type Query {
          singlePost(id: ID!): Post
          allPosts: [Post]
        }
        type Mutation {
          putPost(id: ID!, title: String!): Post
        }
        type Post {
          id: ID!
          title: String!
        }

今すぐ利用可能
これらの新機能はすでに利用可能であり、今すぐ使用開始できます!興味をひくブログ記事やその他のリソースがいくつかあります。

Jeff;