Как поставить элемент в aws DynamoDb с помощью aws Lambda с python

Используя python в AWS Lambda, как мне поместить/получить элемент из таблицы 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.

Ответ 1

Использование Boto3 (последний AWS SDK для Python)

Вы импортируете это с

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.

Ответ 2

полный пример:

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

Ответ 3

Использование последней версии 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'})

Если вы используете AWS, вы можете использовать этот пример кода, только вы должны дать разрешения для этой лямбда-функции, вы можете найти подробности в ссылке