ここでは、Pythonを使って、AWSのAppSyncからデータを取得する方法を紹介します。

Photo by Chris Ried on Unsplash
普段はNode.jsを使っているため、Amplifyなどを利用することで容易にデータを取得することができるのですが、Pythonの場合、Amplifyのようなライブラリが用意されておらず、一般的なGraphqlのライブラリを使って、データを取得する必要があります。
目次
前提条件
まず、今回、紹介するにあたって、DynamoDBのテーブル作成やAppSyncとDynamoDBの連携については、紹介する対象の外とします。今回は、AWSの開発者ガイドにある事例と同じ環境が構築されているものとします。
構築環境
次に構築環境は、Mac OSX 10.14.4、Python 3.7.3の環境で動作確認を行いました。
さらに、今回利用したPythonのライブラリとそのバージョンは、gql 0.1.0、requests 2.21.0を利用しました。requestsについては、gqlライブラリ内で利用されているのみですが、依存関係にあるライブラリがpipでインストールした時に、自動的にインストールされなかったため、手動でインストールしました。もしかしたら、将来的には不要になるかもしれません。
また、今回、AppSyncの認証方法は、API_KEYを利用することにしました。
実現方法
それでは、実現方法を紹介します。コードは次に示すようになります。
from gql import gql, Client from gql.transport.requests import RequestsHTTPTransport # AppSyncのエンドポイントのURL ENDPOINT="https://xxxxxx.appsync-api.ap-northeast-1.amazonaws.com/graphql" # AppSyncのAPI KEY API_KEY="da2-xxxxxxxx" _headers = { "Content-Type": "application/graphql", "x-api-key": API_KEY, } _transport = RequestsHTTPTransport( headers=_headers, url=ENDPOINT, use_json=True, ) client = Client( transport=_transport, fetch_schema_from_transport=True, ) query = gql(""" { allPost { Post { id title } } } """) print(client.execute(query))
特に難しい部分はなく、通常のGraphQLのリクエストのヘッダ部にAppSyncの認証情報を埋め込むことでデータを取得することが可能になります。
参考サイト