繁体   English   中英

boto3 dynamodb put_item() 错误只接受关键字参数

[英]boto3 dynamodb put_item() error only accepts keyword arguments

我在 lambda 函数中使用 boto3 将信息写入 dynamodb 表。

我收到错误put_item() only accepts keyword arguments

在网上搜索,我发现这个错误可能意味着我没有匹配 dynamodb 分区键,但在我看来我做的一切都是正确的。

谁能帮我找出错误? 对不起,这是我第一次使用 aws。

这是我的 lambda 函数

import json, boto3

def updateDynamo(Item):
    dynamodb = boto3.resource('dynamodb', region_name = 'eu-central-1')
    table = dynamodb.Table('userInformations')
    response = table.put_item(Item)
    return response

def lambda_handler(event, context):

    userAttributes = event["request"]["userAttributes"]
    email = userAttributes["email"]
    name = userAttributes["name"]
    Item = {
        "email": email,
        "name" : name
    }

    response = updateDynamo(Item)


    print(email, name)
    
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

这是我正在使用的测试事件:

{
  "version": "string",
  "triggerSource": "string",
  "region": "AWSRegion",
  "userPoolId": "string",
  "userName": "string",
  "callerContext": {
    "awsSdkVersion": "string",
    "clientId": "string"
 },
  "request": {
    "userAttributes": {
      "email": "testemail@gmail.com",
      "name": "test user"
    }
  },
  "response": {}
}

我的表有email (所有字符都是小写)作为分区键。

put_item只需要关键字参数。 这意味着,在您的情况下,而不是:

response = table.put_item(Item)

应该有

response = table.put_item(Item=Item)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM