2015-11-05 26 views
11

在AWS使用Python LAMBDA,我怎么把/从Dynamodb表如何使用AWS DynamoDb把一个项目在AWS拉姆达与蟒蛇

得到一个项目在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'); 
       } 
      }); 

所有我需要的是蟒蛇相当于

回答

14

使用Boto3(最新AWS SDK的Python)

获取项目例如

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

+3

任何想法如何转换,你会在Python中使用到亚马逊的疯狂结构的实际字典? –

+0

为什么你需要从普通的json转换为(amazon方式)dynamodb json格式? – omuthu

+3

RyanTuck如果你使用资源和表,它不是必要的,你可以使用你的字典。 dynamodb = boto3.resource('dynamodb') table = dynamodb.Table(TableName) table.put_item({“fruitName”:'banana'}) –

6

完整的例子:

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