在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等价物。
答案 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