

 AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestehende Kunden von AWS Cloud9 können den Dienst weiterhin wie gewohnt nutzen. [Weitere Informationen](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Amazon DynamoDB-Tutorial für AWS Cloud9
<a name="sample-dynamodb"></a>

In diesem Tutorial können Sie eine AWS Cloud9 Entwicklungsumgebung für die Arbeit mit Amazon DynamoDB einrichten.

DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankservice. Sie können mit DynamoDB eine Datenbanktabelle erstellen, mit der eine beliebige Datenmenge gespeichert und abgerufen werden kann und der Anforderungsdatenverkehr verarbeitet werden kann. DynamoDB verteilt die Daten und den Datenverkehr für die Tabelle automatisch auf eine ausreichende Anzahl von Servern, um die angegebene Anforderungskapazität und die Menge der gespeicherten Daten zu verarbeiten und dabei eine konsistente und schnelle Leistung beizubehalten. Weitere Informationen finden Sie auf der [Website unter Amazon DynamoDB](https://aws.amazon.com/dynamodb/). AWS 

Die Erstellung dieses Beispiels kann dazu führen, dass Ihr AWS Konto belastet wird. Dies umfasst mögliche Kosten für Services wie Amazon EC2 und DynamoDB. Weitere Informationen finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/) und [Amazon DynamoDB – Preise](https://aws.amazon.com/dynamodb/pricing/).

Informationen zu zusätzlichen AWS Datenbankangeboten finden Sie auf der [Website unter Amazon Relational Database Service (RDS)](https://aws.amazon.com/rds/) ElastiCache, [Amazon](https://aws.amazon.com/elasticache/) [und Amazon Redshift](https://aws.amazon.com/redshift/). AWS Weitere Informationen finden Sie auch unter[AWS Database Migration Service](https://aws.amazon.com/dms/) auf der AWS -Website.
+  [Voraussetzungen](#sample-dynamodb-prereqs) 
+  [Schritt 1: Installieren und Konfigurieren der AWS CLI, der AWS CloudShell oder beider in Ihrer Umgebung](#sample-dynamodb-cli-setup) 
+  [Schritt 2: Erstellen einer Tabelle](#sample-dynamodb-create-table) 
+  [Schritt 3: Hinzufügen eines Elements zur Tabelle](#sample-dynamodb-add-item) 
+  [Schritt 4: Hinzufügen von mehreren Elementen zur Tabelle](#sample-dynamodb-add-items) 
+  [Schritt 5: Erstellen eines globalen sekundären Indexes](#sample-dynamodb-create-index) 
+  [Schritt 6: Abrufen von Elementen aus der Tabelle](#sample-dynamodb-get-items) 
+  [Schritt 7: Bereinigen](#sample-dynamodb-clean-up) 

## Voraussetzungen
<a name="sample-dynamodb-prereqs"></a>

Bevor Sie dieses Beispiel verwenden, stellen Sie sicher, dass Ihre Einrichtung die folgenden Anforderungen erfüllt:
+ **Sie müssen über eine bestehende AWS Cloud9 EC2-Entwicklungsumgebung verfügen.** Bei diesem Beispiel wird davon ausgegangen, dass Sie bereits eine EC2-Umgebung eingerichtet haben, die mit einer Amazon-EC2-Instance verbunden ist, die Amazon Linux oder Ubuntu Server ausführt. Wenn Sie ein andere Art von Umgebung oder ein anderes Betriebssystem verwenden, müssen Sie die Anweisungen dieses Beispiels zum Einrichten zugehöriger Tools möglicherweise anpassen. Weitere Informationen finden Sie unter [Schaffung einer Umgebung in AWS Cloud9](create-environment.md).
+ **Sie haben die AWS Cloud9 IDE für die bestehende Umgebung bereits geöffnet.** Wenn Sie eine Umgebung AWS Cloud9 öffnen, wird die IDE für diese Umgebung in Ihrem Webbrowser geöffnet. Weitere Informationen finden Sie unter [Öffnen einer Umgebung in AWS Cloud9](open-environment.md).

## Schritt 1: Installieren und konfigurieren Sie die AWS CLI AWS CloudShell, die oder beide in Ihrer Umgebung
<a name="sample-dynamodb-cli-setup"></a>

In diesem Schritt verwenden Sie die AWS Cloud9 IDE, um das AWS CLI, das oder beide in Ihrer Umgebung zu installieren und zu konfigurieren AWS CloudShell, sodass Sie Befehle für die Interaktion mit DynamoDB ausführen können. Anschließend verwenden Sie die AWS CLI , um einen grundlegenden DynamoDB-Befehl auszuführen, um Ihre Installation und Konfiguration zu testen.

1. Um die Verwaltung der Anmeldeinformationen für das AWS CLI oder das einzurichten AWS CloudShell und das AWS CLI AWS CloudShell, das oder beide in Ihrer Umgebung zu installieren, folgen Sie den Schritten 1 und 2 im [AWS CloudShell Beispiel AWS CLI und](sample-aws-cli.md) kehren Sie dann zu diesem Thema zurück. Wenn Sie das AWS CLI AWS CloudShell, das oder beide bereits in Ihrer Umgebung installiert und konfiguriert haben, müssen Sie dies nicht erneut tun.

1. Testen Sie die Installation und Konfiguration der AWS CLI AWS-Shell oder beider, indem Sie den **`list-tables`**DynamoDB-Befehl von einer Terminalsitzung in Ihrer Umgebung aus ausführen, um Ihre vorhandenen DynamoDB-Tabellen aufzulisten, falls vorhanden. Um eine neue Terminalsitzung zu starten, wählen Sie in der Menüleiste **Window (Fenster)**, **New Terminal (Neues Terminal)** aus.

   ```
   aws dynamodb list-tables # For the AWS CLI.
   dynamodb list-tables     # For the aws-shell.
   ```
**Anmerkung**  
In diesem Beispiel, lassen Sie `aws` aus jedem Befehl aus, der mit `aws` beginnt, wenn Sie die aws-shell verwenden. Führen Sie den Befehl ** `aws-shell` ** aus, um die aws-shell zu starten. Führen Sie den Befehl ** `.exit` ** oder ** `.quit` ** aus, um die aws-shell nicht mehr zu verwenden.

   Wenn dieser Befehl erfolgreich ist, gibt er ein `TableNames`-Array mit einer Liste vorhandener DynamoDB-Tabellen zurück, die Sie eventuell bereits haben. Wenn Sie noch über keine DynamoDB-Tabellen verfügen, ist das `TableNames`-Array leer.

   ```
   {
     "TableNames": []
   }
   ```

   Wenn Sie DynamoDB-Tabellen haben, enthält das `TableNames`-Array eine Liste der Tabellennamen.

## Schritt 2: Erstellen einer Tabelle
<a name="sample-dynamodb-create-table"></a>

In diesem Schritt erstellen Sie eine Tabelle in DynamoDB und geben den Namen, das Layout, den einfachen Primärschlüssel und Datendurchsatz in den Einstellungen an.

Diese Beispieltabelle namens `Weather` enthält Informationen über Wettervorhersagen für einige Städte in den USA. Die Tabelle enthält die folgenden Arten von Informationen (in DynamoDB wird jede Information als ein *Attribut* bezeichnet):
+ Erforderliche eindeutige Stadt-ID (`CityID`)
+ Erforderliches Vorhersagedatum (`Date`)
+ Name der Stadt (`City`)
+ Name des Bundesstaats (`State`)
+ Vorhersage-Wetterbedingungen (`Conditions`)
+ Vorhersagetemperaturen (`Temperatures`)
  + Vorhersage hoch, in Fahrenheit (`HighF`)
  + Vorhersage niedrig, in Fahrenheit (`LowF`)

Um die Tabelle zu erstellen, führen Sie in einer Terminalsitzung in der AWS Cloud9 IDE den DynamoDB-Befehl **`create-table`**aus.

```
aws dynamodb create-table \
--table-name Weather \
--attribute-definitions \
  AttributeName=CityID,AttributeType=N AttributeName=Date,AttributeType=S \
--key-schema \
  AttributeName=CityID,KeyType=HASH AttributeName=Date,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
```

In diesem Befehl gilt Folgendes:
+  `--table-name` stellt den Tabellennamen (`Weather` in diesem Beispiel) dar. Tabellennamen müssen in jeder AWS Region Ihres AWS Kontos eindeutig sein.
+  `--attribute-definitions` stellt die Attribute dar, die zum eindeutigen Identifizieren der Tabellenelemente verwendet werden. Jedes dieser Tabellenelemente wird eindeutig durch eine Kombination aus einem numerischen `ID`-Attribut und einem `Date`-Attribut, das als formatierte ISO-8601-Zeichenfolge dargestellt wird, identifiziert.
+  `--key-schema` stellt das Schlüsselschema der Tabelle dar. Diese Tabelle verfügt über den zusammengesetzten Primärschlüssel aus `CityID` und `Date`. Das bedeutet, dass alle Elemente der Tabelle einen `CityID`-Attributwert und einen `Date`-Attributwert haben müssen, aber keine zwei Elemente in der Tabelle können den gleichen `CityID`-Attributwert und `Date`-Attributwert haben.
+  `--provisioned-throughput` stellt die Lese- und Schreib-Kapazität der Tabelle dar. DynamoDB erlaubt bis zu fünf „Strongly Consistent“-Lesevorgänge pro Sekunde für Elemente mit bis zu 4 KB oder bis zu fünf „Eventually Consistent“-Lesevorgänge pro Sekunde für Elemente mit bis zu 4 KB. DynamoDB erlaubt auch bis zu fünf Schreibvorgänge pro Sekunde für Elemente von bis zu 1 KB.
**Anmerkung**  
Wenn Sie einen höheren bereitgestellten Durchsatz festlegen, kann dies zu zusätzlichen Gebühren für Ihr AWS Konto führen.  
Weitere Informationen zu diesen und anderen DynamoDB-Befehlen finden Sie unter [dynamodb](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html) in der *AWS CLI Befehlsreferenz*.

Wenn dieser Befehl erfolgreich ist, werden zusammenfassende Informationen zur neuen Tabelle angezeigt, die erstellt wird. Um zu bestätigen, dass die Tabelle erfolgreich erstellt wurde, führen Sie den DynamoDB-Befehl ** `describe-table` ** aus, wobei Sie den Namen der Tabelle angeben (`--table-name`).

```
aws dynamodb describe-table --table-name Weather
```

Wenn die Tabelle erfolgreich erstellt ist, ändert sich der `TableStatus`-Wert von `CREATING` zu `ACTIVE`. Fahren Sie nicht mit weiteren Schritten fort, bis die Tabelle erfolgreich erstellt wurde.

## Schritt 3: Hinzufügen eines Elements zu einer Tabelle
<a name="sample-dynamodb-add-item"></a>

In diesem Schritt fügen Sie der Tabelle, die Sie gerade erstellt haben, ein Element hinzu.

1. Erstellen Sie eine Datei mit dem Namen `weather-item.json` und dem folgenden Inhalt. (Um eine neue Datei zu erstellen, wählen Sie in der Menüleiste **File (Datei)**, **New File (Neue Datei)** aus. Um die Datei zu speichern, wählen Sie **File (Datei)**, **Save (Speichern)** aus.

   ```
   {
     "CityID": { "N": "1" },
     "Date": { "S": "2017-04-12" },
     "City": { "S": "Seattle" },
     "State": { "S": "WA" },
     "Conditions": { "S": "Rain" },
     "Temperatures": { "M": {
         "HighF": { "N": "59" },
         "LowF": { "N": "46" }
       }
     }
   }
   ```

   In diesem Code stellt `N` einen Attributwert dar, der eine Zahl ist. `S` ist ein Zeichenkettenattributwert. `M` ist ein Map-Attribut, das eine Menge von Attribut-Wert-Paaren ist. Sie müssen den Datentyp eines Attribut immer angeben, wenn Sie mit Elementen arbeiten. Weitere verfügbare Attribut-Datentypen finden Sie unter [Datentypen](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes) im *Entwicklerhandbuch für Amazon DynamoDB*.

1. Führen Sie den DynamoDB-Befehl ** `put-item` ** aus, wobei Sie den Namen der Tabelle (`--table-name`) und den Pfad zum JSON-formatierten Element (`--item`) angeben.

   ```
   aws dynamodb put-item \
   --table-name Weather \
   --item file://weather-item.json
   ```

   Wenn der Befehl erfolgreich ist, wird er ohne Fehler ausgeführt, und keine Bestätigungsmeldung wird angezeigt.

1. Um den aktuellen Inhalt der Tabelle zu prüfen, führen Sie den DynamoDB-Befehl ** `scan` ** aus, wobei Sie den Namen der Tabelle angeben (`--table-name`).

   ```
   aws dynamodb scan --table-name Weather
   ```

   Wenn der Befehl erfolgreich ist, werden zusammenfassende Informationen zu der Tabelle und zum Element, das Sie gerade hinzugefügt haben, angezeigt.

## Schritt 4: Hinzufügen von mehreren Elementen zu einer Tabelle
<a name="sample-dynamodb-add-items"></a>

In diesem Schritt fügen Sie einige weitere Elemente zur Tabelle `Weather` hinzu.

1. Erstellen Sie eine Datei mit dem Namen `more-weather-items.json` und dem folgenden Inhalt.

   ```
   {
     "Weather": [
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "1" },
             "Date": { "S": "2017-04-13" },
             "City": { "S": "Seattle" },
             "State": { "S": "WA" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "52" },
                 "LowF": { "N": "43" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "1" },
             "Date": { "S": "2017-04-14" },
             "City": { "S": "Seattle" },
             "State": { "S": "WA" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "49" },
                 "LowF": { "N": "43" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "2" },
             "Date": { "S": "2017-04-12" },
             "City": { "S": "Portland" },
             "State": { "S": "OR" },
             "Conditions": { "S": "Thunderstorms" },
             "Temperatures": { "M": {
                 "HighF": { "N": "59" },
                 "LowF": { "N": "43" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "2" },
             "Date": { "S": "2017-04-13" },
             "City": { "S": "Portland" },
             "State": { "S": "OR" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "51" },
                 "LowF": { "N": "41" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "2" },
             "Date": { "S": "2017-04-14" },
             "City": { "S": "Portland" },
             "State": { "S": "OR" },
             "Conditions": { "S": "Rain Showers" },
             "Temperatures": { "M": {
                 "HighF": { "N": "49" },
                 "LowF": { "N": "39" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "3" },
             "Date": { "S": "2017-04-12" },
             "City": { "S": "Portland" },
             "State": { "S": "ME" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "59" },
                 "LowF": { "N": "40" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "3" },
             "Date": { "S": "2017-04-13" },
             "City": { "S": "Portland" },
             "State": { "S": "ME" },
             "Conditions": { "S": "Partly Sunny" },
             "Temperatures": { "M": {
                 "HighF": { "N": "54" },
                 "LowF": { "N": "37" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "3" },
             "Date": { "S": "2017-04-14" },
             "City": { "S": "Portland" },
             "State": { "S": "ME" },
             "Conditions": { "S": "Mostly Sunny" },
             "Temperatures": { "M": {
                 "HighF": { "N": "53" },
                 "LowF": { "N": "37" }
               }
             }
           }
         }
       }
     ]
   }
   ```

   In diesem Code definieren acht `Item`-Objekte die acht Elemente, die der Tabelle hinzugefügt werden sollen, ähnlich wie bei dem einzelnen Element, das im vorherigen Schritt definiert wurde. Wenn Sie allerdings den DynamoDB-Befehl ** `batch-write-item` ** im nächsten Schritt ausführen, müssen Sie ein JSON-formatiertes Objekt angeben, das alle `Item`-Objekte in einem enthaltenden `PutRequest`-Objekt umfasst. Anschließend müssen Sie die `PutRequest`-Objekte in einem übergeordneten Array mit demselben Namen wie die Tabelle aufnehmen.

1. Führen Sie den DynamoDB-Befehl ** `batch-write-item` ** aus, wobei Sie den Pfad zu den JSON-formatierten Elementen angeben, die hinzugefügt werden sollen (`--request-items`).

   ```
   aws dynamodb batch-write-item \
   --request-items file://more-weather-items.json
   ```

   Wenn der Befehl erfolgreich ist, wird die folgende Nachricht angezeigt, in der bestätigt wird, dass die Elemente erfolgreich hinzugefügt wurden.

   ```
   {
     "UnprocessedItems": {}
   }
   ```

1. Um den aktuellen Inhalt der Tabelle zu bestätigen, führen Sie den DynamoDB-Befehl ** `scan` ** erneut aus.

   ```
   aws dynamodb scan --table-name Weather
   ```

   Wenn der Befehl erfolgreich ist, werden nun neun Elemente angezeigt.

## Schritt 5: Erstellen eines globalen sekundären Indexes
<a name="sample-dynamodb-create-index"></a>

Das Ausführen des DynamoDB-Befehls ** `scan` **, um Informationen über die Elemente zu erhalten, kann langsam sein, vor allem, wenn die Tabelle größer wird oder wenn die Informationen, die Sie abrufen möchten, komplex sind. Sie können einen oder mehrere sekundäre Indizes hinzufügen, um die Dinge zu beschleunigen und das Abrufen von Informationen zu erleichtern. In diesem Schritt erfahren Sie mehr über zwei Arten von sekundären Indizes, die DynamoDB genau zu diesem Zweck unterstützt. Diese werden als *lokaler sekundärer Index* und als *globaler sekundärer Index* bezeichnet. Dann erstellen Sie einen globalen sekundären Index.

Um diese sekundären Index-Typen nachzuvollziehen, müssen Sie Primärschlüssel kennen, die die Elemente einer Tabelle eindeutig identifizieren. DynamoDB unterstützt einen *einfachen Primärschlüssel* oder einem *zusammengesetzten Primärschlüssel*. Ein einfacher Primärschlüssel hat ein einzelnes Attribut und dieser Attributwert muss für jedes Element in der Tabelle eindeutig sein. Dieses Attribut wird auch als *Partitions-Schlüssel* (oder *Hash-Attribut*) bezeichnet, das DynamoDB für eine Partition von Elementen verwenden kann, damit der Zugriff schneller erfolgt. Eine Tabelle kann auch über einen zusammengesetzten Primärschlüssel verfügen, der zwei Attribute enthält. Das erste Attribut ist der Partitionsschlüssel und das zweite ist ein *Sortierschlüssel* (auch bekannt als *Bereichsattribut*). In einer Tabelle mit einem zusammengesetzten Primärschlüssel, können zwei Elemente denselben Partitions-Schlüsselwert haben, aber sie können auch den gleichen Sortierschlüssel-Wert haben. Die Tabelle `Weather` verfügt über einen zusammengesetzten Primärschlüssel.

Ein lokaler sekundärer Index hat denselben Partitionsschlüssel wie die Tabelle selbst, der Indextyp kann jedoch einen anderen Sortierschlüssel haben. Ein globaler sekundärer Index kann einen Partitionsschlüssel und einen Sortierschlüssel haben, die sich beide von der Tabelle selbst unterscheiden können.

Beispielsweise können Sie bereits den Primärschlüssel für den Zugriff auf `Weather`-Elemente über `CityID` verwenden. Für den Zugriff auf `Weather`-Elemente über `State` können Sie einen lokalen sekundären Index mit einem Partitionsschlüssel `CityID` (es muss der gleiche wie für die Tabelle selbst sein) und einen Sortierschlüssel `State` erstellen. Für den Zugriff auf `Weather`-Elemente über `City` können Sie einen globalen sekundären Index mit einem Partitionsschlüssel `City` und einem Sortierschlüssel `Date` erstellen.

Sie können lokale sekundäre Indizes nur beim Erstellen einer Tabelle erstellen. Da die `Weather`-Tabelle bereits vorhanden ist, können Sie keine lokalen sekundären Indizes zu ihr hinzufügen. Sie können jedoch globale sekundäre Indizes hinzufügen. Üben Sie nun das Hinzufügen.

**Anmerkung**  
Das Erstellen sekundärer Indizes kann zu zusätzlichen Gebühren in Ihrem AWS -Konto führen.

1. Erstellen Sie eine Datei mit dem Namen `weather-global-index.json` und dem folgenden Inhalt.

   ```
   [
     {
       "Create": {
         "IndexName": "weather-global-index",
         "KeySchema": [
           {
             "AttributeName": "City",
             "KeyType": "HASH"
           },
           {
             "AttributeName": "Date",
             "KeyType": "RANGE"
           }
         ],
         "Projection": {
           "ProjectionType": "INCLUDE",
           "NonKeyAttributes": [
             "State",
             "Conditions",
             "Temperatures"
           ]
         },
         "ProvisionedThroughput": {
           "ReadCapacityUnits": 5,
           "WriteCapacityUnits": 5
         }
       }
     }
   ]
   ```

   Infos zu diesem Code:
   + Der Name des globalen sekundären Indexes lautet `weather-global-index`.
   + Das `City`-Attribut ist der Partitionsschlüssel (Hash-Attribut) und das `Date`-Attribut ist der Sortierschlüssel (Bereichsattribut).
   +  `Projection` definiert die Attribute, die standardmäßig (zusätzlich zu dem Hash-Attribut und jedem Bereichsattribut) für jedes Element abgerufen werden, das mit einer Tabellensuchanfrage übereinstimmt, die diesen Index verwendet. In diesem Beispiel werden die Attribute `State`, `Conditions`, `HighF` (Teil von `Temperatures`) und `LowF` (auch ein Teil von `Temperatures`) (sowie die Attribute `City` und `Date`) für jedes übereinstimmende Element abgerufen.
   + Ähnlich wie bei Tabellen muss ein globaler sekundärer Index die Einstellungen für bereitgestellten Durchsatz definieren.
   + Die Einstellungen `IndexName`, `KeySchema`, `Projection` und `ProvisionedThroughput` müssen in einem `Create`-Objekt vorhanden sein, das den zu erstellenden globalen sekundären Index definiert, wenn Sie den DynamoDB-Befehl ** `update-table` ** im nächsten Schritt ausführen.

1. Ausführen von DynamoDB-Befehl ** `update-table` **.

   ```
   aws dynamodb update-table \
   --table-name Weather \
   --attribute-definitions \
     AttributeName=City,AttributeType=S AttributeName=Date,AttributeType=S \
   --global-secondary-index-updates file://weather-global-index.json
   ```

   In diesem Befehl gilt Folgendes:
   +  `--table-name` ist der Name der zu aktualisierenden Tabelle.
   +  `--attribute-definitions` sind die Attribute, die in den Index aufgenommen werden sollen. Der Partitionsschlüssel wird immer an erster Stelle aufgeführt und alle Sortierschlüssel kommen an zweiter Stelle.
   +  `--global-secondary-index-updates` ist der Pfad zu der Datei, die den globalen sekundären Index definiert.

   Wenn dieser Befehl erfolgreich ist, werden zusammenfassende Informationen zum neuen globalen sekundären Index angezeigt, der erstellt wird. Um zu bestätigen, dass der globale sekundäre Index erfolgreich erstellt wurde, führen Sie den DynamoDB-Befehl ** `describe-table` ** aus, wobei Sie den Namen der Tabelle angeben (`--table-name`).

   ```
   aws dynamodb describe-table --table-name Weather
   ```

   Wenn der globale sekundäre Index erfolgreich erstellt wurde, wird der `TableStatus`-Wert von `UPDATING` in `ACTIVE` geändert und der `IndexStatus`-Wert ändert sich von `CREATING` in `ACTIVE`. Fahren Sie nicht mit weiteren Schritten fort, bis der globale sekundäre Index erfolgreich erstellt wurde. Dies kann mehrere Minuten dauern.

## Schritt 6: Abrufen von Elementen aus der Tabelle
<a name="sample-dynamodb-get-items"></a>

Es gibt zahlreiche Möglichkeiten, um Elemente aus Tabellen abzurufen. In diesem Schritt erhalten Sie Elemente mit dem Primärschlüssel der Tabelle, indem Sie die anderen Attribute der Tabelle verwenden und mit dem globalen sekundären Index.

### So rufen Sie ein einzelnes Element aus einer Tabelle basierend auf dem primären Schlüsselwert des Elements ab
<a name="w2aac31c21c25b5"></a>

Wenn Sie den Primärschlüssel-Wert eines Elements kennen, können Sie das entsprechende Element abrufen, indem Sie den DynamoDB-Befehl ** `get-item` **, ** `scan` **, oder ** `query` ** ausführen. Im Folgenden sind die wichtigsten Unterschiede in diesen Befehlen erläutert:
+  ** `get-item` ** gibt einen Satz an Attributen für das Element mit dem gegebenen Primärschlüssel zurück.
+  ** `scan` ** gibt eines oder mehrere Elemente und Elementattribute zurück, indem auf jedes Element in einer Tabelle oder einen sekundären Index zugegriffen wird.
+  ** `query` ** findet Elemente auf der Basis von Primärschlüsselwerten. Sie können jede Tabelle oder jeden sekundären Index, die bzw. der über einen zusammengesetzten Primärschlüssel verfügt, abfragen (einen Partitionsschlüssel und einen Sortierschlüssel).

In diesem Beispiel wird gezeigt, wie Sie die Befehle verwenden können, um das Element mit dem `CityID`-Attributwert `1` und dem `Date`-Attributwert `2017-04-12` abzurufen.

1. Zum Ausführen des DynamoDB-Befehls ** `get-item` ** geben Sie den Namen der Tabelle (`--table-name`), den primären Schlüsselwert (`--key`) und die Attributwerte für das anzuzeigende Element (`--projection-expression`) an. Da `Date` ein reserviertes Schlüsselwort in DynamoDB ist, müssen Sie auch einen Alias für den `Date`-Attributwert angeben (`--expression-attribute-names`). (`State` ist ebenfalls ein reserviertes Schlüsselwort, daher sehen Sie in späteren Schritten auch hier einen Alias dafür).

   ```
   aws dynamodb get-item \
   --table-name Weather \
   --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }' \
   --projection-expression \
     "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \
   --expression-attribute-names '{ "#D": "Date" }'
   ```

   In diesem und anderen Befehlen fügen Sie zum Anzeigen aller Attribute des Elements `--projection-expression` nicht ein. Da Sie `--projection-expression` in diesem Beispiel nicht einschließen, müssen Sie auch `--expression-attribute-names` nicht einschließen.

   ```
   aws dynamodb get-item \
   --table-name Weather \
   --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }'
   ```

1. Zum Ausführen des DynamoDB-Befehls ** `scan` ** geben Sie Folgendes an:
   + Der Name der Tabelle (`--table-name`).
   + Die auszuführende Suche (`--filter-expression`).
   + Die zu verwendenden Suchkriterien (`--expression-attribute-values`).
   + Die Arten von Attributen, die für das übereinstimmende Element angezeigt werden sollen (`--select`).
   + Die Attribute für das anzuzeigende Element (`--projection-expression`).
   + Wenn eines Ihrer Attribute reservierte Schlüsselwörter in DynamoDB verwendet, werden Aliase für diese Attribute angegeben (`--expression-attribute-names`).

   ```
   aws dynamodb scan \
   --table-name Weather \
   --filter-expression "(CityID = :cityID) and (#D = :date)" \
   --expression-attribute-values \
     '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \
   --select SPECIFIC_ATTRIBUTES \
   --projection-expression \
     "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \
   --expression-attribute-names '{ "#D": "Date" }'
   ```

1. Zum Ausführen des DynamoDB-Befehls ** `query` ** geben Sie Folgendes an:
   + Der Name der Tabelle (`--table-name`).
   + Die auszuführende Suche (`--key-condition-expression`).
   + In der Suche zu verwendenden Attributwerte (`--expression-attribute-values`).
   + Die Arten von Attributen, die für das übereinstimmende Element angezeigt werden sollen (`--select`).
   + Die Attribute für das anzuzeigende Element (`--projection-expression`).
   + Wenn eines Ihrer Attribute reservierte Schlüsselwörter in DynamoDB verwendet, werden Aliase für diese Attribute angegeben (`--expression-attribute-names`).

   ```
   aws dynamodb query \
   --table-name Weather \
   --key-condition-expression "(CityID = :cityID) and (#D = :date)" \
   --expression-attribute-values \
     '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \
   --select SPECIFIC_ATTRIBUTES \
   --projection-expression \
     "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \
   --expression-attribute-names '{ "#D": "Date" }'
   ```

   Beachten Sie, dass der ** `scan` **-Befehl alle neun Elemente benötigt, um das Ergebnis abzurufen, während der ** `query` **-Befehl nur zum Scannen von einem Element benötigt wird.

### So rufen Sie mehrere Elemente aus einer Tabelle basierend auf den primären Schlüsselwerten des Elements ab
<a name="w2aac31c21c25b7"></a>

Wenn Sie die Primärschlüssel-Werte des Elements kennen, können Sie entsprechende Elemente abrufen, indem Sie den DynamoDB-Befehl ** `batch-get-item` ** ausführen. In diesem Beispiel wird gezeigt, wie Sie die Befehle abrufen können, die den `CityID`-Attributwert `3` und `Date`-Attributwert `2017-04-13` oder `2017-04-14` enthalten können.

Führen Sie den DynamoDB-Befehl ** `batch-get-item` ** aus, indem Sie den Pfad zu einer Datei mit der Beschreibung des abzurufenden Elements (`--request-items`) angeben.

```
aws dynamodb batch-get-item --request-items file://batch-get-item.json
```

Für dieses Beispiel gibt der Code in der `batch-get-item.json`-Datei an, in der `Weather`-Tabelle nach Elemente mit einer `CityID` von `3` und einem `Date` von `2017-04-13` oder `2017-04-14` zu suchen. Für jedes gefundene Element werden die Attributwerte für `City`, `State`, `Date` und `HighF` (Teil von `Temperatures`) angezeigt, wenn sie vorhanden sind.

```
{
  "Weather" : {
    "Keys": [
      {
        "CityID": { "N": "3" },
        "Date": { "S": "2017-04-13" }
      },
      {
        "CityID": { "N": "3" },
        "Date": { "S": "2017-04-14" }
      }
    ],
    "ProjectionExpression": "City, #S, #D, Temperatures.HighF",
    "ExpressionAttributeNames": { "#S": "State", "#D": "Date" }
  }
}
```

### So rufen Sie alle übereinstimmenden Elemente aus einer Tabelle ab
<a name="w2aac31c21c25b9"></a>

Wenn Sie etwas über die Werte der Elemente in der Tabelle wissen, können Sie entsprechende Elemente abrufen, indem Sie den DynamoDB-Befehl ** `scan` ** ausführen. In diesem Beispiel wird gezeigt, wie Sie die Daten abrufen können, wenn der `Conditions`-Attributwert `Sunny` enthält und der `HighF`-Attributwert (Teil von `Temperatures`) größer als `53` ist.

Führen Sie den DynamoDB-Befehl** `scan` ** aus und geben Sie Folgendes an:
+ Der Name der Tabelle (`--table-name`).
+ Die auszuführende Suche (`--filter-expression`).
+ Die zu verwendenden Suchkriterien (`--expression-attribute-values`).
+ Die Arten von Attributen, die für das übereinstimmende Element angezeigt werden sollen (`--select`).
+ Die Attribute für das anzuzeigende Element (`--projection-expression`).
+ Wenn eines Ihrer Attribute reservierte Schlüsselwörter in DynamoDB verwendet, werden Aliase für diese Attribute angegeben (`--expression-attribute-names`).

```
aws dynamodb scan \
--table-name Weather \
--filter-expression \
  "(contains (Conditions, :sun)) and (Temperatures.HighF > :h)" \
--expression-attribute-values \
  '{ ":sun": { "S" : "Sunny" }, ":h": { "N" : "53" } }' \
--select SPECIFIC_ATTRIBUTES \
--projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \
--expression-attribute-names '{ "#S": "State", "#D": "Date" }'
```

### So rufen Sie alle übereinstimmenden Elemente aus einem globalen sekundären Index ab
<a name="w2aac31c21c25c11"></a>

Um mit einem globalen sekundären Index zu suchen, verwenden Sie die DynamoDB-Befehl ** `query` **. In diesem Beispiel wird gezeigt, wie Sie den sekundären Index `weather-global-index` verwenden, um die Vorhersagebedingungen für Städte mit dem Namen `Portland` für die Daten `2017-04-13` und `2017-04-14` zu erhalten.

Führen Sie den DynamoDB-Befehl** `query` ** aus und geben Sie Folgendes an:
+ Der Name der Tabelle (`--table-name`).
+ Den Namen des globalen sekundären Indexes (`--index-name`).
+ Die auszuführende Suche (`--key-condition-expression`).
+ In der Suche zu verwendenden Attributwerte (`--expression-attribute-values`).
+ Die Arten von Attributen, die für das übereinstimmende Element angezeigt werden sollen (`--select`).
+ Wenn eines Ihrer Attribute reservierte Schlüsselwörter in DynamoDB verwendet, werden Aliase für diese Attribute angegeben (`--expression-attribute-names`).

```
aws dynamodb query \
--table-name Weather \
--index-name weather-global-index \
--key-condition-expression "(City = :city) and (#D between :date1 and :date2)" \
--expression-attribute-values \
  '{ ":city": { "S" : "Portland" }, ":date1": { "S": "2017-04-13" }, ":date2": { "S": "2017-04-14" } }' \
--select SPECIFIC_ATTRIBUTES \
--projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \
--expression-attribute-names '{ "#S": "State", "#D": "Date" }'
```

## Schritt 7: Bereinigen
<a name="sample-dynamodb-clean-up"></a>

Um zu verhindern, dass Ihr AWS Konto weiterhin belastet wird, nachdem Sie dieses Beispiel nicht mehr verwendet haben, sollten Sie die Tabelle löschen. Durch das Löschen der Tabelle wird auch der globale sekundäre Index gelöscht. Sie sollten Ihre Umgebung ebenfalls löschen.

Um die Tabelle zu löschen, führen Sie den DynamoDB-Befehl ** `delete-table` ** aus, wobei Sie den Namen der Tabelle angeben (`--table-name`).

```
aws dynamodb delete-table --table-name Weather
```

Wenn der Befehl erfolgreich ist, werden Informationen über die Tabelle angezeigt, einschließlich des `TableStatus`-Werts von `DELETING`.

Um zu bestätigen, dass die Tabelle erfolgreich gelöscht wurde, führen Sie den DynamoDB-Befehl ** `describe-table` ** aus, wobei Sie den Namen der Tabelle angeben (`--table-name`).

```
aws dynamodb describe-table --table-name Weather
```

Wenn die Tabelle erfolgreich gelöscht wurde, wird eine Meldung mit dem Satz `Requested resource not found` angezeigt.

Weitere Informationen zum Löschen Ihrer Umgebung finden Sie unter [Löschen einer Umgebung](delete-environment.md).