

El SDK AWS móvil para Xamarin ahora está incluido en. AWS SDK para .NET Esta guía hace referencia a la versión archivada del SDK para móviles para Xamarin.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Almacenar y recuperar datos con DynamoDB
<a name="getting-started-store-retrieve-data"></a>

 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) es un servicio de base de datos no relacional rentable y rápido, de alta disponibilidad y de alta escalabilidad. DynamoDB elimina las limitaciones tradicionales de escalabilidad del almacenamiento de datos y, al mismo tiempo, mantiene una baja latencia y un desempeño previsible.

En el tutorial siguiente se explica cómo integrar el modelo de persistencia de objetos de DynamoDB con su aplicación, que almacena objetos en DynamoDB.

## Configuración del proyecto
<a name="project-setup"></a>

### Requisitos previos
<a name="prerequisites"></a>

Debe seguir las instrucciones en [Setting Up the AWS Mobile SDK for .NET and Xamarin](setup.md) antes de comenzar este tutorial.

### Creación de una tabla de DynamoDB
<a name="create-a-dynamodb-table"></a>

Antes de leer y escribir datos en una base de datos de DynamoDB, debe crear una tabla. Al crear una tabla, debe especificar la clave principal. La clave principal se compone de un atributo de hash y un atributo de rango opcional. Para obtener más información sobre cómo se usan los atributos principales y de rango, consulte [Uso de las tablas](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html).

1. Vaya a la [consola de DynamoDB](https://console.aws.amazon.com/dynamodb/home) y, a continuación, haga clic en **Create Table (Crear tabla)**. Aparece el asistente para crear tablas.

1. Especifique el nombre de la tabla, el tipo de clave principal (Hash) y el nombre de atributo de ("Id"), tal como se muestra más abajo, y, a continuación, haga clic en **Continue (Continuar)**:  
![\[DynamoDB table creation interface showing table name, primary key type, and hash attribute configuration.\]](http://docs.aws.amazon.com/es_es/mobile/sdkforxamarin/developerguide/images/create-table.png)

1. Deje vacíos los campos de edición en la siguiente pantalla y haga clic en **Continue (Continuar)**.

1. Acepte los valores predeterminados de **Read Capacity Units (Unidades de capacidad de lectura)** y **Write Capacity Units (Unidades de capacidad de escritura)**. Haga clic en **Continue (Continuar)**.

1. En la pantalla siguiente escriba su dirección de correo electrónico en el cuadro de texto **Send notification to: (Enviar notificación a:)** y haga clic en **Continue (Continuar)**. Aparece la pantalla de revisión.

1. Haga clic en **Crear**. La tabla puede tardar unos minutos en crearse.

### Definición de permisos para DynamoDB
<a name="set-permissions-for-dynamodb"></a>

Para que el grupo de identidades obtenga acceso a Amazon DynamoDB, debe modificar los roles del grupo de identidades.

1. Vaya a la [consola de Identity and Access Management](https://console.aws.amazon.com/iam/home) y haga clic en **Roles** en el panel izquierdo. Busque el nombre del grupo de identidades; se mostrarán dos roles: uno para los usuarios autenticados y otro para los no autenticados.

1. Haga clic en el rol de los usuarios no autenticados (el nombre del grupo de identidades tendrá añadido el texto "unauth") y haga clic en **Create Role Policy (Crear política de rol)**.

1. Seleccione **Policy Generator (Generador de políticas)** y haga clic en **Select (Seleccionar)**.

1. En la página **Edit Permissions (Editar permisos)**, escriba la configuración que se muestra en la imagen siguiente. El nombre de recurso de Amazon (ARN) de una tabla de DynamoDB es parecido a `arn:aws:dynamodb:us-west-2:123456789012:table/Books` y se compone de la región en la que se encuentra la tabla, el número de cuenta de AWS del propietario y el nombre de la tabla con el formato `table/Books`. Para obtener más información sobre la especificación ARNs, consulte [Nombres de recursos de Amazon para DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingIAMWithDDB.html#ARN_Format).  
![\[Edit Permissions page for Amazon DynamoDB with Allow effect and ARN input field.\]](http://docs.aws.amazon.com/es_es/mobile/sdkforxamarin/developerguide/images/edit-permissions-dynamodb.png)

1. Haga clic en **Add Statement (Añadir declaración)** y, a continuación, en **Next Step (Siguiente paso)**. El asistente le mostrará la configuración generada.

1. Haga clic en **Apply Policy (Aplicar política)**.

### Añada NuGet un paquete para DynamoDB a su proyecto
<a name="add-nuget-package-for-dynamodb-to-your-project"></a>

Siga el paso 4 de las instrucciones de [Configuración del AWS Mobile SDK para .NET y Xamarin](setup.md) para añadir el paquete de DynamoDB NuGet a su proyecto.

## Inicialice AmazonDynamo DBClient
<a name="initialize-amazondynamodbclient"></a>

Transfiera su proveedor de credenciales de Amazon Cognito inicializado y su región al constructor y, a `AmazonDynamoDB` continuación, pase el cliente a Dynamo: DBContext

```
var client = new AmazonDynamoDBClient(credentials,region);
DynamoDBContext context = new DynamoDBContext(client);
```

## Crear una clase
<a name="create-a-class"></a>

Para escribir una fila en la tabla, defina una clase que contenga los datos de fila. La clase también debe contener propiedades que contengan los datos de atributo de la fila y se mapeará a la tabla de DynamoDB creada en la consola. La siguiente declaración de clase ilustra una clase de este tipo:

```
[DynamoDBTable("Books")]
public class Book
{
    [DynamoDBHashKey]    // Hash key.
    public int Id { get; set; }
    public string Title { get; set; }
    public string ISBN { get; set; }
    public int Price { get; set; }
    public string PageCount { get; set; }
    public string Author{ get; set; }
}
```

## Almacenamiento de un elemento
<a name="save-an-item"></a>

Para guardar un elemento, primero debe crear un objeto:

```
Book songOfIceAndFire = new Book()
{
    Id=1,
    Title="Game Of Thrones",
    ISBN="978-0553593716",
    Price=4,
    PageCount="819",
    Author="GRRM"
};
```

A continuación, guárdelo:

```
context.Save(songOfIceAndFire);
```

Para actualizar una fila, modifique la instancia de la clase `DDTableRow` y llame a `AWSDynamoObjectMapper.save()`, tal como se muestra más arriba.

## Recuperación de un elemento
<a name="retrieve-an-item"></a>

Recuperar un elemento con una clave principal:

```
Book retrievedBook = context.Load<Book>(1);
```

## Actualización de un elemento
<a name="update-an-item"></a>

Para actualizar un elemento:

```
Book retrievedBook = context.Load<Book>(1);
retrievedBook.ISBN = "978-0553593716";
context.Save(retrievedBook);
```

## Eliminación de un elemento
<a name="delete-an-item"></a>

Para eliminar un elemento:

```
Book retrievedBook = context.Load<Book>(1);
context.Delete(retrievedBook);
```

Para obtener más información sobre el acceso a DynamoDB desde una aplicación de Xamarin, consulte [Amazon DynamoDB](dynamodb.md).