aws amplifyのAPIをpythonで実行
amplifyを使っていますが、amplify initしたプロジェクト以外でも使えるのか気になっていましたが、pythonのプログラムでも使いたくなったため、調べてみました。
サンプルコード
iamを利用したauth付きのサンプル
import json from requests_aws4auth import AWS4Auth from gql import gql, Client from gql.transport.requests import RequestsHTTPTransport class ApiManager(object): def get_client(self): auth = AWS4Auth( <AWS_IAM_KEY>, <AWS_IAM_SECRET>, "ap-northeast-1", "appsync", ) headers = { "Accept": "application/json", "Content-Type": "application/json", } transport = RequestsHTTPTransport( url=<AWS_APPSYNC_URL>, use_json=True, headers=headers, auth=auth ) client = Client(transport=transport, fetch_schema_from_transport=True) return client def query_get(self, id): client = self.get_client() query = """ query GetUser($id: ID!) { getUser(id: $id) { id name createdAt updatedAt } } """ params = {"id": id} resp = client.execute(gql(query), variable_values=json.dumps(params)) if len(resp["getUser"]) > 0: return resp["getUser"] return False
AWS_IAM_KEY, AWS_IAM_SECRET,AWS_APPSYNC_URLは自分の環境に合わせて変更します。
api自体はAppSyncを利用しているため、AppSyncをHTTPで実行している感じですね。
参考
参考のソースをクラスにしただけです。これがないと作れなかったです。ありがたいです。