Как поставить элемент в 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, вы можете использовать этот пример кода, только вы должны дать разрешения для этой лямбда-функции, вы можете найти подробности в ссылке