Mam stół dynamodb, który musi zostać przekonwertowany na format JSON i udostępniany przez odpowiedź API przy użyciu środowiska Pythona / Boto3 / Aws-Lambda.

userMetrics[
{
  "userid": 1234567890,  ==> key
  "likemetrics": 0,
  "lasttimestamp": 1604553995
},
{
  "userid": 1234567891,  ==> key
  "likemetrics": 0,
  "lasttimestamp": 1604553998
}]

Próbuję skopiować całą tabelę DYNAMODB do formatu JSON za pomocą przykładów wymienionych w Formatowanie danych dynamodb do normalnego JSON w AWS LAMBDA ale błąd twarzy w sprawie wykonania jako

{
"errorMessage": "'dynamodb.Table' object has no attribute 'items'",
"errorType": "AttributeError",
"stackTrace":[
"  File \"/var/task/lambda_function.py\", line 75, in lambda_handler\n    'usermetrics': json.dumps(from_dynamodb_to_json(dydb_userTable))\n",
"  File \"/var/task/lambda_function.py\", line 7, in from_dynamodb_to_json\n    return {k: d.deserialize(value=v) for k, v in item.items()}\n"
]
}

Moja implementacja kodu lambda:

import json
import boto3
from boto3.dynamodb.types import TypeDeserializer, TypeSerializer

def from_dynamodb_to_json(item):
    d = TypeDeserializer()
    return {k: d.deserialize(value=v) for k, v in item.items()}

dydb = boto3.resource('dynamodb')
dydb_userTable = dydb.Table('userMetrics')

def lambda_handler(event, context):
        return {
            'statusCode': 200,
            'usermetrics': json.dumps(from_dynamodb_to_json(dydb_userTable))
        }
0
Murukz-userm 22 listopad 2020, 11:49

1 odpowiedź

Najlepsza odpowiedź

Table (dydb_userTable w swoim kodzie) obiekt nie ma items, którego szukasz. Musisz zadzwonić do metody na tej tabeli, która pobiera elementy dla Ciebie, takich jak dydb_userTable.scan() lub dydb_userTable.query().

Odniesienie: HTTPS: //boto3.amazonaws. COM / V1 / Dokumentacja / API / Ostatnia / Referencja / Usługi / Dynamodb.HTML # Tabela

1
Noel Llevares 22 listopad 2020, 21:26