У меня есть лямбда-функция, которая увеличивает значение в таблице DynamoDB. Когда я возвращаю ответ, он возвращает атрибут вместе с метаданными ответа. Я ищу способ просто вернуть обновленное значение.
Вот код:
import boto3
import json
import decimal
class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)
def lambda_handler(event, context):
dynamodb = boto3.client('dynamodb')
response = dynamodb.update_item(
TableName = 'siteVisits',
Key={
'siteUrl':{'S':"https://example.com/"}
},
UpdateExpression='SET visits = visits + :inc',
ExpressionAttributeValues={
':inc': {'N': '1'}
},
ReturnValues="UPDATED_NEW"
)
return {
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps(response)
}
И вот ответ:
{
"Attributes": {
"visits": {
"N": "61"
}
},
"ResponseMetadata": {
"RequestId": "XXXXXXXX",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"server": "Server",
"date": "Wed, 27 May 2020 14:55:10 GMT",
"content-type": "application/x-amz-json-1.0",
"content-length": "36",
"connection": "keep-alive",
"x-amzn-requestid": "XXXXX",
"x-amz-crc32": "4132370019"
},
"RetryAttempts": 0
}
}
Я просто хотите вернуть ценность посещений. Как мне выполнить sh это? Спасибо!