Utilisation de python dans AWS Lambda, comment puis-je placer/obtenir un élément d'une table DynamoDB?
Dans Node.js, ce serait quelque chose comme:
dynamodb.getItem({
"Key": {"fruitName" : 'banana'},
"TableName": "fruitSalad"
}, function(err, data) {
if (err) {
context.fail('Incorrect username or password');
} else {
context.succeed('yay it works');
}
});
Tout ce dont j'ai besoin, c'est l'équivalent python.
Utilisation de Boto3 (Le dernier kit SDK AWS pour python)
Vous l'importez avec
import boto3
Puis appelez le client via
dynamodb = boto3.client('dynamodb')
Obtenir un exemple d'article
dynamodb.get_item(TableName='fruitSalad', Key={'fruitName':{'S':'Banana'}})
Exemple d'article mis
dynamodb.put_item(TableName='fruitSalad', Item={'fruitName':{'S':'Banana'},'key2':{'N':'value2'}})
"S" indique une valeur de chaîne, "N" est une valeur numérique
Pour les autres types de données, voir http://boto3.readthedocs.org/en/latest/reference/services/dynamodb.html#DynamoDB.Client.put_item
exemple complet:
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)
veuillez noter que vous devez décider quand utiliser 'update_item' ou 'put_item'.
avec 'update_item', vous vous assurez de n'avoir qu'un seul enregistrement avec le même hash/range. si l'enregistrement existe, il peut mettre à jour cet enregistrement, sinon il le créera
http://boto3.readthedocs.org/fr/latest/reference/services/dynamodb.html#DynamoDB.Client.update_item
Utilisation du dernier kit de développement logiciel 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'})
Si vous utilisez AWS, vous pouvez utiliser cet exemple de code, vous êtes le seul à devoir donner des autorisations pour cette fonction lambda. Vous pouvez trouver des détails dans lien