AWS Lambda 関数から AWS AppSync に Mutation する [Python版]

こんにちは、広野です。

以前、以下の記事で AWS AppSync に Mutation をかける AWS Lambda 関数コードを以下の記事内で紹介していたのですが、Node.js で書いたものでした。先日 Node.js 16 が EoL になったことを受けて、AWS Lambda 関数を Python 3.12 で書き換えたので書き残しておきます。

AWS Lambda 関数コード

前置きなしでいきなりコード紹介に入ります。

mutation で渡す値は架空のものです。

import boto3
import json
import requests
from requests_aws_sign import AWSV4Sign
session = boto3.session.Session()
credentials = session.get_credentials()
auth = AWSV4Sign(credentials, 'ap-northeast-1', 'appsync') #AppSyncがデプロイされているリージョンを指定

def lambda_handler(event, context):
  try:
    endpoint = 'AppSyncEndpointUrl' #AppSyncのURLを指定
    headers = {'Content-Type': 'application/json'}
    query = """
      mutation updateJobstatus(
        $serviceiduser: String!,
        $datetime: String!,
        $url1: String,
        $url2: String,
        $status: String
      ) {
        updateJobstatus(input: {
          serviceiduser: $serviceiduser,
          datetime: $datetime,
          url1: $url1,
          url2: $url2,
          status: $status
        }) {
          serviceiduser
        }
      }
    """
    variables = {
      'serviceiduser': 'xxxxxxxx',
      'datetime': 'xxxxxxxx',
      'url1': 'xxxxxxxx',
      'url2': 'xxxxxxxx',
      'status': 'xxxxxxxx'
    }
    payload = {'query': query, 'variables': variables}
    result = requests.post(endpoint, auth=auth, json=payload, headers=headers).json()
    if 'errors' in result:
      print(result['errors'])
  except Exception as error:
    print(error)
    result = {'errors': [{'message': str(error)}]}

AWS AppSync は受けた Mutation を実行してよいのかどうか、実行元 (AWS Lambda 関数) から送られてきた IAM 情報と照合します。そのため、送信時に Signature V4 という仕組みを使用して情報を署名化し、リクエストのヘッダーに入れる処理が必要になります。

以下、前提事項です。

詳細な AWS AppSync 関連設定情報は、繰り返しになりますが以下の参考記事をご覧下さい。

まとめ

いかがでしたでしょうか。

AWS AppSync を使用しているアプリでアプリ外から画面更新させたいときには AWS Lambda 関数からの Mutation が必要となるケースが多いと思います。

本記事が皆様のお役に立てれば幸いです。

著者について
広野 祐司

AWS サーバーレスアーキテクチャと React を使用して社内向け e-Learning アプリ開発とコンテンツ作成に勤しんでいます。React でアプリを書き始めたら、快適すぎて他の言語には戻れなくなりました。近年は社内外への AWS 技術支援にも従事しています。AWS サービスには AWS が考える IT 設計思想が詰め込まれているので、そこを理解できると他のことにも活かせるので、いつも AWS を通して勉強させて頂いてまます。
取得資格:AWS 認定は15資格、IT サービスマネージャ、ITIL v3 Expert 等
2020 - 2025 Japan AWS Top Engineer 受賞
2022 - 2025 AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS AppSync Events / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWSアプリケーション開発クラウドソリューションデータベース
シェアする
タイトルとURLをコピーしました