¿Cómo puedo consultar AWS DynamoDB en python?

Soy bastante nuevo en NoSQL y estoy usando AWS DynamoDB. Lo estoy llamando desde AWS Lambda usando python 2.7 Estoy intentando recuperar un valor de un campo ‘order_number’.
Así es como se ve mi mesa (solo tiene un registro):
introduzca la descripción de la imagen aquí

clave de partición primaria: subscripción introduzca la descripción de la imagen aquí

y mi índice global secundario: order_number
introduzca la descripción de la imagen aquí

¿Mi configuración es correcta? Si es así dado el número de orden, ¿cómo recupero el registro usando python?
No puedo entender la syntax para hacerlo.

He intentado

response = table.get_item( Key = {'order_number': myordernumber} ) 

Pero me sale:
Se produjo un error (ValidationException) al llamar a la operación GetItem: el elemento clave proporcionado no coincide con el esquema: ClientError

DynamoDB no indexa automáticamente todos los campos de su objeto. De forma predeterminada, puede definir una clave de hash ( subscription_id en su caso) y, opcionalmente, una clave de rango y éstas se indexarán. Entonces, podrías hacer esto:

 response = table.get_item(Key={'subscription_id': mysubid}) 

y funcionará como se esperaba. Sin embargo, si desea recuperar un artículo basado en el order_number de order_number , tendría que usar una operación de scan que order_number todos los elementos de su tabla para encontrar el (los) objeto (s) con el valor correcto. Esta es una operación muy costosa. O puede crear un índice secundario global en su tabla que use order_number como la clave principal. Si lo hizo y llamó al nuevo índice order_number-index , podría consultar los objetos que coincidan con un número de pedido específico como este:

 from boto3.dynamodb.conditions import Key, Attr response = table.query( IndexName='order_number-index', KeyConditionExpression=Key('order_number').eq(myordernumber)) 

DynamoDB es una base de datos muy rápida, escalable y eficiente, pero requiere mucha reflexión sobre los campos en los que podría querer buscar y cómo hacerlo de manera eficiente.

La buena noticia es que ahora puede agregar GSI a una tabla existente. Anteriormente, habría tenido que eliminar su tabla y comenzar de nuevo.

Asegúrese de que ha importado esto:

 from boto3.dynamodb.conditions import Key, Attr 

Si no lo tienes, seguro que obtendrás el error. Está en los ejemplos de documentación .

Gracias a @altoids por el comentario anterior ya que esta es la respuesta correcta para mí. Quería llamar la atención con una respuesta “formal”.