Получить атрибут из DynamoDB с помощью Python Lambda - PullRequest
0 голосов
/ 27 мая 2020

У меня есть лямбда-функция, которая увеличивает значение в таблице 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 это? Спасибо!

...