#やりたいこと
とりあえずAppSync上にGraphQL APIは構築したが、まずはローカルで試してみたいorデータを一括登録したいという場合があると思いますので、boto3を使ってローカル環境でAPIを叩けるようなコードを作成しました。
ぜひ、ご活用ください。
#ソースコード
from requests_aws4auth import AWS4Auth
from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport
import pprint
import openpyxl
import sys
import json
import random
args = sys.argv
#一時的な利用なのでソースコード内に記述していますが、なるべく環境変数にしましょう。※補足参照
auth = AWS4Auth(
"アクセスキー",
"シークレットアクセスキー",
"リージョン",
"appsync",
)
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
}
#graphqlのURL
transport = RequestsHTTPTransport(
url="https://xxxx.appsync-api.ap-northeast-1.amazonaws.com/graphql",
use_json=True,
headers=headers,
auth=auth
)
client = Client(transport=transport, fetch_schema_from_transport=True)
def create_data(params):
create = """
mutation CreateData(
$input: CreateDataInput!
$condition: ModelDataConditionInput
) {
createData(input: $input, condition: $condition) {
id
...
}
}
}
"""
try:
resp = client.execute(
gql(create), variable_values=json.dumps({"input": params}))
except:
pprint.pprint(resp)
def main();
params = {
id: 12345,
...
}
create_data(params)
if __name__ == "__main__":
main()
#補足
boto3を利用する際の認証情報に関しては以下をご参考ください。
公式:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html
Qiita:https://qiita.com/tsukamoto/items/00ec8ef7e9a4ce4fb0e9