
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で実行している感じですね。
参考
参考のソースをクラスにしただけです。これがないと作れなかったです。ありがたいです。