如何使用aws Lambda和python将一个Item放在aws DynamoDb中

时间:2015-11-05 02:24:12

标签: python-2.7 amazon-dynamodb aws-lambda

在AWS Lambda中使用python,如何从DynamoDB表中放置/获取项目?

在Node.js中,这将是:

dynamodb.getItem({
    "Key": {"fruitName" : 'banana'},
    "TableName": "fruitSalad"
}, function(err, data) {
    if (err) {
        context.fail('Incorrect username or password');
    } else {
        context.succeed('yay it works');
    }
});

我需要的只是python等价物。

4 个答案:

答案 0 :(得分:31)

使用Boto3 (最新的适用于python的AWS开发工具包)

您可以使用

导入它
import boto3

然后通过

致电客户
dynamodb = boto3.client('dynamodb')

获取项目示例

dynamodb.get_item(TableName='fruitSalad', Key={'fruitName':{'S':'Banana'}})

放置项目示例

dynamodb.put_item(TableName='fruitSalad', Item={'fruitName':{'S':'Banana'},'key2':{'N':'value2'}})

' S'表示字符串值,' N'是一个数值

有关其他数据类型,请参阅http://boto3.readthedocs.org/en/latest/reference/services/dynamodb.html#DynamoDB.Client.put_item

答案 1 :(得分:13)

完整示例:

import boto3

def lambda_handler(event, context):

    client = boto3.client('dynamodb')

    for record in event['Records']:
        # your logic here...
        try:
            client.update_item(TableName='dynamo_table_name', Key={'hash_key':{'N':'value'}}, AttributeUpdates={"some_key":{"Action":"PUT","Value":{"N":'value'}}}) 
        except Exception, e:
            print (e)

请注意,您需要决定何时使用' update_item'或者' put_item'。

使用' update_item'确保只有一个具有相同散列/范围的记录。如果记录存在,它可以更新此记录,否则它将创建它

http://boto3.readthedocs.org/en/latest/reference/services/dynamodb.html#DynamoDB.Client.update_item

答案 2 :(得分:6)

使用最新的AWS开发工具包

import boto3

def lambda_handler(event, context):
    # this will create dynamodb resource object and
    # here dynamodb is resource name
    client = boto3.resource('dynamodb')

    # this will search for dynamoDB table 
    # your table name may be different
    table = client.Table("dynamoDB")
    print(table.table_status)

    table.put_item(Item= {'id': '34','company':  'microsoft'})

如果您正在使用AWS,则可以使用此代码示例,只有您必须授予此lambda函数的权限,您才能在link中找到详细信息

答案 3 :(得分:1)

我是 Lucid-Dynamodb 的作者,它是 AWS DynamoDB 的极简包装器。它涵盖了所有 Dynamodb 操作。

更新项目中的现有属性: https://github.com/dineshsonachalam/Lucid-Dynamodb