2015-11-05 24 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