我的 AWS Lambda 根据此答案调用 DynamoDB:https ://stackoverflow.com/a/33649402/495455
import json
import boto3
client = boto3.resource('dynamodb')
table = client.Table("DS-Users")
def lambda_handler(event, context):
UserName = event['UserName']
Email = event['Email']
Score = event['Score']
Mobile = event['Mobile']
CountryId = event['CountryId']
Level = event['Level']
Magic = event['Magic']
table.put_item(Item={'UserName':{'S':UserName},'Email':{'S':Email},'Score':{'N':Score},'Level':{'N':Level},'Mobile':{'S':Mobile},'Magic':{'S':Magic}})
return {
'statusCode': 200,
'body': json.dumps(event)
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
一个或多个参数值无效:预期用户名的类型不匹配:S 实际:M
研究错误会得到一些无法解决上述错误的答案:
1) https://github.com/awslabs/dynamodb-document-js-sdk/issues/17
错误是说 DynamoDB 需要 uuid 的字符串,但它得到了其他东西。根据来自 dynamodb 文档的这一点,S 是 dynamodb 的字符串,正如 raymolin 所说,M 是地图(如对象或模型)。因此,发送的 uuid 不能是字符串,而是模型/对象/映射。一旦修复,这应该可以正常工作。
2) https://forums.aws.amazon.com/thread.jspa?threadID=248424
问题在于我分配给 lambda 执行的 IAM 角色的权限。
我很难过,因为 UserName 是一个字符串,我在集成请求映射模板中强制执行它: …