背景
AWS(Lambda)において、HTTPを通してユーザ入力フォーム情報をAPI Gatewayに通して、
その情報をDynamoDBにユーザ名・メールアドレスを登録する簡易サーバレスappを作っています。
ただ、それらを実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Response: { "errorMessage": "Syntax error in module 'lambda_function'" } Request ID: "64db0245-8fb0-4252-aa39-ae5552889679" Function logs: START RequestId: 64db0245-8fb0-4252-aa39-ae5552889679 Version: $LATEST Syntax error in module 'lambda_function': invalid syntax (lambda_function.py, line 59) END RequestId: 64db0245-8fb0-4252-aa39-ae5552889679 REPORT RequestId: 64db0245-8fb0-4252-aa39-ae5552889679 Duration: 0.48 ms Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 43 MB Init Duration: 1.03 ms
該当のソースコード
Python3
1import json 2import boto3 3import urllib.parse 4import time 5import decimal 6 7# Dynamo DB obj 8dynamodb = boto3.resource("dynamodb") 9 10# update seq num 11def next_seq(table, tablename): 12 response = table.update_item( 13 Key={ 14 "tablename" : tablename 15 }, 16 UpdateExpression="set seq = seq + :val", 17 ExpressionAttributeValues={ 18 ":val":1 19 }, 20 ReturnValues="UPDATED_NEW" 21 ) 22 return response["Attributes"]["seq"] 23 24def lambda_handler(event, context): 25 try: 26 # get seq data 27 seqtable = dynamodb.Table("sequence") 28 nextseq = next_seq(seqtable, "user") 29 print(f"nextseq:{nextseq}") 30 31 # get data from form 32 param = urllib.parse.parse_qs(event["body"]) 33 username = param["username"][0] 34 email = param["email"][0] 35 36 # get IP of Client 37 host = event["requestContext"]["identity"]["sourceIp"] 38 39 # get TimeStamp UNIX 40 now = time.time() 41 42 # regist to user TABLE 43 usertable = dynamodb.Table("user") 44 usertable.put_item( 45 Item={ 46 "id" : nextseq, 47 "username":username, 48 "email":email, 49 "accepted_at":decimal.Decimal(str(now)), 50 "host":host 51 } 52 ) 53 #JSON形式の戻り値を設定する 54 return { 55 "statusCode":200, 56 "headers":{ 57 "content-type" : "text/html" 58 }, 59 "body":"<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>Error!</body></html>" 60 } 61 62 except: 63 import traceback 64 traceback.print_exc() 65 return{ 66 "statusCode":500, 67 "headers":{ 68 "content-type":"text/html" 69 }, 70 "body":"<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body>Error!</body></html>" 71 }
補足情報(FW/ツールのバージョンなど)
エラー情報がSyntax Errorなので、文法上の構造が問題だと思うのですが、、
なぜか見つかりません。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/19 10:30