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

Jor*_*dan 28 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');
    }
});
Run Code Online (Sandbox Code Playgroud)

我需要的只是python等价物.

omu*_*thu 36

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

你导入它

import boto3
Run Code Online (Sandbox Code Playgroud)

然后通过电话呼叫客户端

dynamodb = boto3.client('dynamodb')
Run Code Online (Sandbox Code Playgroud)

获取项目示例

dynamodb.get_item(TableName='fruitSalad', Key={'fruitName':{'S':'Banana'}})
Run Code Online (Sandbox Code Playgroud)

放项目示例

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

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

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

  • 任何想法如何将你在python中使用的实际字典转换为亚马逊的疯狂结构? (16认同)
  • RyanTuck如果您使用资源和表格,则没有必要,您可以使用您的词典.dynamodb = boto3.resource('dynamodb')table = dynamodb.Table(TableName)table.put_item({"fruitName":'banana'}) (8认同)
  • 瑞恩塔克的问题非常合法.当您需要使用attribute_not_exists ConditionExpression时,只能使用客户端而不是资源.所以当使用客户端时,你必须处理boto3低级客户端的愚蠢格式.... (2认同)

Eya*_* Ch 15

完整的例子:

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)
Run Code Online (Sandbox Code Playgroud)

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

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

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


sud*_*war 13

使用最新的AWS SDK

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'})
Run Code Online (Sandbox Code Playgroud)

如果您正在使用AWS,则可以使用此代码示例,只需要为此lambda函数授予权限,您可以在链接中找到详细信息


小智 7

您可以使用以下行在 DynamoDB 表中写入和读取:

首先导入boto3包

import boto3
Run Code Online (Sandbox Code Playgroud)

为 dynamoDB 创建对象

dynamodb = boto3.resource('dynamodb')
Run Code Online (Sandbox Code Playgroud)

选择您的特定表

table = dynamodb.Table("fruitSalad")
Run Code Online (Sandbox Code Playgroud)

写:

table.put_item(Item= {'fruitName': 'Banana'})
Run Code Online (Sandbox Code Playgroud)

读:

table.get_item(Key={'fruitName': 'Banana'})
Run Code Online (Sandbox Code Playgroud)