使用 boto3 实现的 lambda 函数更新 DynamoDB table 的值

Updating the value of DynamoDB table with boto3 implemented lambda function

我正在尝试使用我的 API 方法来更新 table 的内容。

我设置了以下 lambda 代码:

def lambda_handler(event, context):
    param = event['queryStringParameters']['employeID']
     name = event['queryStringParameters']['employeName']
    dynamodb = boto3.resource('dynamodb', region_name="us-east-1")
    table = dynamodb.Table('api_demo_employe')
    
    response = table.update_item(
        Key = {
            'employeID' : param
        }
        
        )

我需要弄清楚如何使用更新变量设置 UpdateExpression、ConditionExpression、ExpressionAttributeValues

谁能帮我解决这个问题?

会是这样的:

response = table.update_item(TableName=table, 
                             ReturnValues='UPDATED_NEW',
                             Key={'employeID': {'S': param}},
                             ExpressionAttributeValues={':f': {'S': update['some_param']},
                                                     ':limit': {'N': '500'}},
                             UpdateExpression='SET some_field = :f',
                             ConditionExpression='some_other_field > :limit'
                            )

当然这只是一个例子——你的具体表现取决于你想做什么。我在猜测你的数据类型。 'S' 用于字符串,但对于其他数据类型还有其他选项。您在 ExpressionAttributeValues 中定义替换变量,然后根据需要在 UpdateExpressionConditionExpression 中引用这些变量。

有关所有选项的完整详细信息,请访问 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.update_item。您需要查看这些选项并查看其中的优秀示例,了解如何执行不同的操作。

我在@Shawn 回答的帮助下尝试了这个

 response = table.update_item(
    Key = {
        'employeID' : param
    },
    ExpressionAttributeValues = {
    
        ':f': name
    },
    UpdateExpression = 'SET employeName = :f'
    
    )

成功了。