HaneCa

独り立ちへ向けた長い道

PythonでAWS AppSync経由でDynamoDBのデータを取得する方法

投稿日: 2019年5月14日
Photo by Chris Ried on Unsplash

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

Photo by Chris Ried on Unsplash

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の認証情報を埋め込むことでデータを取得することが可能になります。

参考サイト

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください