

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.

# Kinesis-Datenstreams erstellen und verwalten
<a name="working-with-streams"></a>

Amazon Kinesis Data Streams übernimmt eine große Menge von Daten in Echtzeit, speichert diese dauerhaft und stellt sie für den Verbrauch zur Verfügung. Die von Kinesis Data Streams gespeicherte Dateneinheit wird als *Datensatz* bezeichnet. Ein *Datenstream* repräsentiert eine Gruppe von Datensätzen. Die Datensätze in einem Daten-Stream werden auf Shards verteilt.

Ein *Shard* hat eine Sequenz von Datensätzen in einem Stream. Sie dient als Basisdurchsatzeinheit eines Kinesis Data Streams. Ein Shard unterstützt 1 MB/s und 1000 Datensätze pro Sekunde für *Schreibvorgänge* und 2 MB/s für *Lesevorgänge*, sowohl im On-Demand-Modus als auch im Bereitstellungsmodus. Die Shard-Limits sorgen für eine vorhersehbare Leistung und erleichtern so die Entwicklung und den Betrieb eines äußerst zuverlässigen Datenstreaming-Workflows. 

In diesem Abschnitt erfahren Sie, wie Sie den Kapazitätsmodus für den Stream festlegen und wie Sie einen Stream entweder mit oder erstellen. AWS-Managementkonsole APIs Anschließend können Sie weitere Aktionen für den Stream ausführen. 

**Topics**
+ [Wählen Sie den richtigen Modus zum Streamen](how-do-i-size-a-stream.md)
+ [Erstellen Sie einen Stream mit dem AWS-Managementkonsole](how-do-i-create-a-stream.md)
+ [Erstellen Sie einen Stream mit dem APIs](kinesis-using-sdk-java-create-stream.md)
+ [Aktualisieren Sie einen Stream](updating-a-stream.md)
+ [Auflisten von Streams](kinesis-using-sdk-java-list-streams.md)
+ [Shards auflisten](kinesis-using-sdk-java-list-shards.md)
+ [Löschen Sie einen Stream](kinesis-using-sdk-java-delete-stream.md)
+ [Einen Stream erneut teilen](kinesis-using-sdk-java-resharding.md)
+ [Ändern Sie den Aufbewahrungszeitraum für Daten](kinesis-extended-retention.md)
+ [Kennzeichnen Sie Ihre Amazon Kinesis Data Streams Streams-Ressourcen](tagging.md)
+ [Umgang mit großen Datensätzen](large-records.md)
+ [Führen Sie Resilienztests durch mit AWS Fault Injection Service](kinesis-fis.md)

# Wählen Sie den richtigen Modus zum Streamen
<a name="how-do-i-size-a-stream"></a>

In den folgenden Themen wird erklärt, wie Sie den besten Modus für Ihre Anwendung auswählen und bei Bedarf zwischen den Modi wechseln können.

**Topics**
+ [Was sind die verschiedenen Modi in Kinesis Data Streams?](#diff-modes-kds)
+ [Funktionen und Anwendungsfälle im On-Demand-Standardmodus](#ondemandmode)
+ [Funktionen und Anwendungsfälle des Advantage-Modus auf Abruf](#ondemand-advantage-mode)
+ [Funktionen und Anwendungsfälle im Bereitstellungsmodus](#provisionedmode)
+ [Wechseln Sie zwischen den Modi](#switchingmodes)

## Was sind die verschiedenen Modi in Kinesis Data Streams?
<a name="diff-modes-kds"></a>

Ein Modus bestimmt, wie die Kapazität eines Datenstroms verwaltet wird und wie Ihnen die Nutzung Ihres Datenstroms in Rechnung gestellt wird. In Amazon Kinesis Data Streams können Sie **On-Demand-Standard**, **On-Demand-Advantage** und **Bereitgestellt** als Modus für Ihre Datenstreams wählen.
+ **On-Demand-Standard** — Datenstreams mit einem On-Demand-Modus erfordern keine Kapazitätsplanung und werden automatisch skaliert, um Gigabytes an Schreib- und Lesedurchsatz pro Minute zu bewältigen. Im On-Demand-Modus verwaltet Kinesis Data Streams die Shards automatisch, um den erforderlichen Durchsatz bereitzustellen.
+  **Vorteil auf Abruf** — Ein Modus auf Kontoebene, der mehr Funktionen ermöglicht und eine einfachere Preisstruktur für On-Demand-Streams bietet. In diesem Modus können Sie die Schreibdurchsatzkapazität eines Streams jederzeit proaktiv erhöhen. **Bei der Preisgestaltung gibt es keine feste Gebühr mehr pro Stream, und die Nutzung von Datenaufnahme, Datenabruf und verlängerter Aufbewahrung für alle On-Demand-Streams ist mindestens 60% niedriger als bei On-Demand-Standard.** 
+ **Bereitgestellt** — Für Datenstreams mit einem Bereitstellungsmodus müssen Sie die Anzahl der Shards für den Datenstrom angeben. Die Gesamtkapazität eines Datenstroms ist die Summe der Kapazitäten der einzelnen Shards. Sie können die Anzahl der Shards in einem Datenstream nach Bedarf erhöhen oder verringern.

Sie können Kinesis Data Streams verwenden `PutRecord` und `PutRecords` APIs in jedem Modus Daten in Ihre Datenströme schreiben. Zum Abrufen von Daten unterstützen alle drei Modi Standardverbraucher, die die `GetRecords` API verwenden, und Enhanced Fan-Out (EFO) -Verbraucher, die die API verwenden. `SubscribeToShard`

Alle Funktionen von Kinesis Data Streams, einschließlich Aufbewahrungsmodus, Verschlüsselung, Überwachungsmetriken und andere, werden sowohl für den On-Demand-Modus als auch für den Bereitstellungsmodus unterstützt. Kinesis Data Streams bietet eine hohe Beständigkeit und Verfügbarkeit sowohl im On-Demand-Modus als auch im Bereitstellungsmodus.

## Funktionen und Anwendungsfälle im On-Demand-Standardmodus
<a name="ondemandmode"></a>

Datenströme im On-Demand-Modus erfordern keine Kapazitätsplanung und werden automatisch skaliert, sodass sie einen Schreib- und Lesedurchsatz von mehreren Gigabyte pro Minute verarbeiten können. Der On-Demand-Modus vereinfacht die Aufnahme und Speicherung großer Datenmengen bei niedriger Latenz, da er die Bereitstellung und Verwaltung von Servern, Speicher oder Durchsatz überflüssig macht. Sie können Milliarden von Datensätzen pro Tag aufnehmen, ohne dass der Betrieb beeinträchtigt wird.

Der On-Demand-Modus ist ideal, um den Anforderungen eines stark variablen und unvorhersehbaren Anwendungsverkehrs gerecht zu werden. Sie müssen diese Workloads nicht mehr für Spitzenkapazitäten bereitstellen, was bei geringer Auslastung zu höheren Kosten führen kann. Der On-Demand-Modus eignet sich für Workloads mit unvorhersehbaren und stark variablen Datenverkehrsmustern. 

Im On-Demand-Kapazitätsmodus zahlen Sie pro GB geschriebener und gelesener Daten aus Ihren Datenströmen. Sie müssen nicht angeben, wie viel Lese- und Schreibdurchsatz Sie von Ihrer Anwendung erwarten. Kinesis Data Streams passt sich sofort an Ihre Workloads an, wenn diese ansteigen oder sinken. Weitere Informationen finden Sie unter [Amazon Kinesis Data Streams – Preise](https://aws.amazon.com/kinesis/data-streams/pricing/).

Ein Datenstrom im On-Demand-Modus ermöglicht bis zu doppelt so viel wie den Spitzenschreibdurchsatz, der in den letzten 30 Tagen beobachtet wurde. Wenn der Schreibdurchsatz Ihres Datenstroms einen neuen Höchstwert erreicht, skaliert Kinesis Data Streams die Kapazität des Datenstroms automatisch. Zum Beispiel, wenn Ihr Datenstrom einen Schreibdurchsatz hat, der zwischen 10 MB/s und 40% MB/s, then Kinesis Data Streams ensures that you can easily burst to double your previous peak throughput, or 80 MB/s. If the same data stream sustains a new peak throughput of 50 MB/s, Kinesis Data Streams ensures that there is enough capacity to ingest 100 MB/s des Schreibdurchsatzes variiert. Eine Drosselung des Schreibvorgangs kann jedoch auftreten, wenn Ihr Datenverkehr innerhalb von 15 Minuten auf mehr als das Doppelte des vorherigen Spitzenwerts ansteigt. Sie müssen diese gedrosselten Anfragen erneut versuchen.

Die aggregierte Lesekapazität eines Datenstroms im On-Demand-Modus steigt proportional zum Schreibdurchsatz. Auf diese Weise wird sichergestellt, dass Verbraucheranwendungen immer über einen ausreichenden Lesedurchsatz verfügen, um eingehende Daten in Echtzeit zu verarbeiten. Der Schreibdurchsatz ist mindestens doppelt so hoch wie beim Lesen von Daten mit der `GetRecords`-API. Wir empfehlen, dass Sie eine Verbraucheranwendung mit der `GetRecord`-API verwenden, damit sie genügend Spielraum hat, um aufzuholen, wenn die Anwendung sich von einer Ausfallzeit erholen muss. Es wird empfohlen, die Funktion Erweitertes Rundsenden von Kinesis Data Streams für Szenarien zu verwenden, in denen mehr als eine Verbraucheranwendung hinzugefügt werden muss. Erweitertes Rundsenden unterstützt das Hinzufügen von bis zu 20 Verbraucheranwendungen zu einem Datenstream mithilfe der `SubscribeToShard`-API, wobei jede Verbraucheranwendung über einen eigenen Durchsatz verfügt. 

### Behandeln Sie Ausnahmen beim Lese- und Schreibdurchsatz
<a name="hotshards"></a>

Im On-Demand-Modus (genau wie im Modus für bereitgestellte Kapazität) müssen Sie für jeden Datensatz einen Partitionsschlüssel angeben, um Daten in Ihren Datenstream zu schreiben. Kinesis Data Streams verwendet Ihre Partitionsschlüssel, um Daten auf Shards zu verteilen. Kinesis Data Streams überwacht den Verkehr für jeden Shard. Wenn der eingehende Datenverkehr 500 KB/s pro Shard überschreitet, wird der Shard innerhalb von 15 Minuten aufgeteilt. Die Hash-Schlüsselwerte des übergeordneten Shards werden gleichmäßig auf die untergeordneten Shards verteilt.

 Wenn der eingehende Datenverkehr das Doppelte des vorherigen Spitzenwertes übersteigt, kann es für etwa 15 Minuten zu Lese- oder Schreibausfällen kommen, selbst wenn die Daten gleichmäßig auf die Shards verteilt sind. Wir empfehlen, dass Sie alle derartigen Anfragen erneut versuchen, damit alle Datensätze ordnungsgemäß in Kinesis Data Streams gespeichert werden. 

Es kann zu Lese- und Schreibausnahmen kommen, wenn Sie einen Partitionsschlüssel verwenden, der zu einer ungleichmäßigen Datenverteilung führt, und die einem bestimmten Shard zugewiesenen Datensätze dessen Grenzwerte überschreiten. Im On-Demand-Modus passt sich der Datenstrom automatisch an ungleichmäßige Datenverteilungsmuster an, es sei denn, ein einzelner Partitionsschlüssel überschreitet die Grenzwerte für einen MB/s Durchsatz von 1 Shard und 1000 Datensätze pro Sekunde. 

Im On-Demand-Modus teilt Kinesis Data Streams die Shards gleichmäßig auf, wenn ein Anstieg des Datenverkehrs festgestellt wird. Hash-Schlüssel, die einen höheren Anteil des eingehenden Datenverkehrs an einen bestimmten Shard weiterleiten, werden jedoch nicht erkannt und isoliert. Wenn Sie stark ungleichmäßige Partitionsschlüssel verwenden, erhalten Sie möglicherweise weiterhin Schreibausnahmen. Für solche Anwendungsfälle empfehlen wir, den Modus für bereitgestellte Kapazität zu verwenden, der granulare Shard-Splits unterstützt.

## Funktionen und Anwendungsfälle des Advantage-Modus auf Abruf
<a name="ondemand-advantage-mode"></a>

On-Demand-Vorteil ist eine Einstellung auf Kontoebene, die mehr Funktionen freischaltet und eine andere Preisstruktur für alle On-Demand-Streams in der Region bietet. In diesem Modus behalten On-Demand-Streams ihre Funktionalität bei und skalieren die Kapazität weiterhin automatisch auf der Grundlage der tatsächlichen Datennutzung. Wenn Sie die Schreibdurchsatzkapazität eines Streams proaktiv erhöhen möchten, können Sie den Warmdurchsatz konfigurieren. Wenn Ihr Datenstream beispielsweise einen Schreibdurchsatz zwischen 10 MB/s und 40 hat, MB/s, you can expect it to handle up to 80MB/s of instant throughput increases without throttling. However, if you forecast an upcoming event to peak around 200MB/s of traffic, you can configure the stream with a warm throughput of 200MB/s um sicherzustellen, dass die Kapazität verfügbar ist, wenn der Datendurchsatz eintrifft. Bei Verwendung eines warmen Durchsatzes fallen keine zusätzlichen Kosten an.

Ein weiterer Vorteil des On-Demand-Advantage-Modus besteht darin, dass On-Demand-Streams zu einer einfacheren Preisstruktur übergehen. Wenn der Modus aktiviert ist, fallen für das Konto keine festen Gebühren pro Stream mehr an, und Sie müssen sich nur noch um die Datenaufnahme, den Datenabruf und die optionalen Gebühren für die erweiterte Aufbewahrung kümmern. Für jede Preisdimension gibt es zudem einen erheblichen Preisnachlass im Vergleich zur entsprechenden Dimension in On-Demand-Standard. Weitere Informationen finden Sie unter [Amazon Kinesis Data Streams – Preise](https://aws.amazon.com/kinesis/data-streams/pricing/).

Für erweiterte Fan-Out-Datenabrufe fällt im Vergleich zu den Standarddatenabrufen in diesem Modus auch kein Aufpreis an. Darüber hinaus können Sie im On-Demand-Advantage-Modus bis zu 50 Verbraucher pro Stream registrieren, um das erweiterte Fan-Out zu nutzen. Durch die Aktivierung von On-Demand Advantage ist das Konto verpflichtet, mindestens 25% MiB/s of data ingest and 25MiB/s der Daten aus allen On-Demand-Streams abzurufen. Für Konten, die die Mindestnutzungsanforderungen erfüllen, überprüft die Kinesis Data Streams Streams-Konsole, ob die Nutzungsmuster Ihres Kontos für den **On-Demand-Advantage-Modus** geeignet sind.

Wenn die Datennutzung Ihres Kontos unter den Anforderungen liegt, wird Ihnen die Differenz als Fehlbetrag in Rechnung gestellt, es wird jedoch immer noch derselbe ermäßigte Tarif berechnet. Wenn Sie On-Demand Advantage aktivieren, müssen Sie außerdem mindestens 24 Stunden warten, bis Sie den Modus deaktivieren können. Insgesamt ist On-Demand Advantage die beste Methode, um mit Kinesis Data Streams zu streamen, wenn Sie eine konsistente Durchsatznutzung haben, die der Mindestverpflichtung nahe oder darüber liegt, viele Fan-Out-Nutzer benötigen oder mit Hunderten von Datenströmen arbeiten. 

## Funktionen und Anwendungsfälle im Bereitstellungsmodus
<a name="provisionedmode"></a>

Im Bereitstellungsmodus können Sie, nachdem Sie den Datenstream erstellt haben, Ihre Shard-Kapazität mithilfe der oder der AWS-Managementkonsole API dynamisch nach oben oder unten skalieren. [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html) Sie können Aktualisierungen vornehmen, während eine Produzenten- oder Konsumentenanwendung von Kinesis Data Streams Daten in den Stream schreibt oder aus dem Stream liest. 

Der Bereitstellungsmodus eignet sich für vorhersehbaren Datenverkehr mit leicht zu prognostizierenden Kapazitätsanforderungen. Sie können den Bereitstellungsmodus verwenden, wenn Sie eine genaue Kontrolle darüber haben möchten, wie Daten auf Shards verteilt werden. 

Mit einem Bereitstellungsmodus müssen Sie die Anzahl der Shards für den Datenstrom angeben. Zum Festlegen der Größe eines Datenstroms mit dem Bereitstellungsmodus benötigen Sie die folgenden Eingabewerte:
+ Die durchschnittliche Größe des Datensatzes, der in den Stream geschrieben wird, in Kilobyte (KB), gerundet auf das nächste ganze Kilobyte (`average_data_size_in_KB`).
+ Die Anzahl der Datensätze, die pro Sekunde in den Stream geschrieben bzw. daraus gelesen werden (`records_per_second`).
+ Die Anzahl der Verbraucher, die Anwendungen von Kinesis Data Streams sind, die gleichzeitig und unabhängig voneinander Daten aus dem Stream konsumieren (`number_of_consumers`).
+ Die Bandbreite für eingehende Schreiboperationen in KB (`incoming_write_bandwidth_in_KB`). Diese ist gleich `average_data_size_in_KB` multipliziert mit `records_per_second`.
+ Die Bandbreite für ausgehende Leseoperationen in KB (`outgoing_read_bandwidth_in_KB`). Diese ist gleich `incoming_write_bandwidth_in_KB` multipliziert mit `number_of_consumers`.

Sie können die Anzahl der Shards (`number_of_shards`), die der Stream benötigt, mit den Eingabewerte in der folgenden Formel berechnen.

```
number_of_shards = ceiling(max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048))
```

Im Bereitstellungsmodus kann es immer noch zu Ausnahmen beim Lese- und Schreibdurchsatz kommen, wenn Sie Ihren Datenstrom nicht für den Spitzendurchsatz konfigurieren. In diesem Fall müssen Sie Ihren Datenstrom manuell skalieren, um den Datenverkehr zu bewältigen. 

Es kann auch zu Lese- und Schreibausnahmen kommen, wenn Sie einen Partitionsschlüssel verwenden, der zu einer ungleichmäßigen Datenverteilung führt, und die einem Shard zugewiesenen Datensätze dessen Grenzwerte überschreiten. Um dieses Problem im Bereitstellungsmodus zu beheben, identifizieren Sie solche Shards und teilen Sie sie manuell auf, um Ihren Datenverkehr besser zu bewältigen. Weitere Informationen finden Sie unter [Resharding eines Streams](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-resharding.html). 

## Wechseln Sie zwischen den Modi
<a name="switchingmodes"></a>

Für jeden Datenstrom in Ihrem AWS-Konto können Sie innerhalb von 24 Stunden zweimal zwischen dem On-Demand-Modus und dem Bereitstellungsmodus wechseln. Der Wechsel zwischen den Modi verursacht keine Unterbrechungen Ihrer Anwendungen, die diesen Datenstrom verwenden. Sie können weiterhin in diesen Datenstrom schreiben und aus ihm lesen. *Wenn Sie zwischen den Modi wechseln, entweder von On-Demand-Modus zu Bereitgestellt oder von Bereitgestellt zu On-Demand-Modus, wird der Status des Streams auf Aktualisierung gesetzt.* Sie müssen warten, bis der Status des Datenstroms den Status *Aktiv* erreicht hat, bevor Sie seine Eigenschaften erneut ändern können.

Wenn Sie vom Bereitstellungs- zum On-Demand-Kapazitätsmodus wechseln, behält Ihr Datenstrom zunächst die Shard-Anzahl bei, die er vor der Umstellung hatte. Ab diesem Zeitpunkt überwacht Kinesis Data Streams Ihren Datenverkehr und skaliert die Anzahl der Shards dieses On-Demand-Datenstroms in Abhängigkeit von Ihrem Schreibdurchsatz. Wenn Sie vom On-Demand-Modus in den Bereitstellungsmodus wechseln, behält Ihr Datenstream zunächst auch die Shard-Anzahl bei, die er vor der Umstellung hatte. Ab diesem Zeitpunkt sind Sie jedoch dafür verantwortlich, die Shard-Anzahl dieses Datenstroms zu überwachen und anzupassen, um Ihrem Schreibdurchsatz gerecht zu werden.

Sie können vom **On-Demand-Standardmodus zum **On-Demand-Advantage-Modus**** wechseln, indem Sie eine Einstellung auf Kontoebene aktivieren. Wenn diese Option aktiviert ist, verpflichtet sich das Konto, mindestens 25% MiB/s of data ingest and 25MiB/s des Datenabrufs in allen On-Demand-Streams in der Region zu nutzen. Nach der Aktivierung müssen Sie mindestens 24 Stunden warten, bevor Sie **On-Demand Advantage** deaktivieren können. Sie können die Änderung jedoch jederzeit beantragen. Wenn Sie von **On-Demand-Advantage** zu **On-Demand-Standard** wechseln möchten, müssen Sie zunächst alle für Demand-Streams konfigurierten warmen Durchsatz entfernen.

# Erstellen Sie einen Stream mit dem AWS-Managementkonsole
<a name="how-do-i-create-a-stream"></a>

Sie können einen Stream mithilfe der Konsole von Kinesis Data Streams, der API von Kinesis Data Streams oder der AWS Command Line Interface (AWS CLI) erstellen.

**So erstellen Sie einen Datenstrom mit der Konsole**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Kinesis-Konsole unter [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis).

1. Erweitern Sie in der Navigationsleiste die Regionsauswahl und wählen Sie eine Region aus.

1. Klicken Sie auf **Create data stream (Daten-Stream erstellen)**.

1. Geben Sie auf der Seite **Kinesis-Stream erstellen** einen Namen für Ihren Datenstrom ein und wählen Sie dann entweder den Kapazitätsmodus **On-Demand** oder **Bereitgestellt**. Der Modus **On-Demand** ist standardmäßig ausgewählt. Weitere Informationen finden Sie unter [Wählen Sie den richtigen Modus zum Streamen](how-do-i-size-a-stream.md).

   Im Modus **On-Demand** können Sie dann **Kinesis-Stream erstellen** wählen, um Ihren Datenstrom zu erstellen. Im Modus **Bereitgestellt** müssen Sie dann die Anzahl der benötigten Shards angeben und dann **Kinesis-Stream erstellen** auswählen.

   Auf der Seite **Kinesis streams (Kinesis-Streams)** wird für den Wert **Status** des Streams **Creating (Erstellen)** angezeigt, während der Stream erstellt wird. Sobald der Stream verwendet werden kann, ändert sich der Wert von **Status** in **Active (Aktiv)**.

1. Wählen Sie den Namen des Streams aus. Auf der Seite **Stream Details (Stream-Details)** wird eine Zusammenfassung der Stream-Konfiguration zusammen mit Überwachungsinformationen angezeigt.

**So erstellen Sie einen Stream mit der Kinesis-Data-Streams-API**
+ Weitere Informationen zum Erstellen eines Streams mit der API von Kinesis Data Streams finden Sie unter [Erstellen Sie einen Stream mit dem APIs](kinesis-using-sdk-java-create-stream.md).

**Um einen Stream mit dem zu erstellen AWS CLI**
+ Informationen zum Erstellen eines Streams mit dem AWS CLI finden Sie im Befehl [create-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/create-stream.html).

# Erstellen Sie einen Stream mit dem APIs
<a name="kinesis-using-sdk-java-create-stream"></a>

Führen Sie die folgenden Schritte aus, um Ihren Kinesis-Datenstrom zu erstellen.

## Den Kinesis Data Streams Streams-Client erstellen
<a name="kinesis-using-sdk-java-create-client"></a>

Bevor Sie mit Kinesis-Datenströmen arbeiten können, müssen Sie ein Client-Objekt erstellen. Der folgende Java-Code instanziiert einen Client-Builder und verwendet ihn zum Festlegen der Region, der Anmeldeinformationen und der Client-Konfiguration. Anschließend erstellt er ein Client-Objekt. 

```
AmazonKinesisClientBuilder clientBuilder = AmazonKinesisClientBuilder.standard();
        
clientBuilder.setRegion(regionName);
clientBuilder.setCredentials(credentialsProvider);
clientBuilder.setClientConfiguration(config);
        
AmazonKinesis client = clientBuilder.build();
```

Weitere Informationen finden Sie unter [Regionen und Endpunkte der Kinesis Data Streams](https://docs.aws.amazon.com/general/latest/gr/rande.html#ak_region) im *Allgemeine AWS-Referenz*.

## Erstellen Sie den Stream
<a name="kinesis-using-sdk-java-create-the-stream"></a>

Nachdem Sie Ihren Kinesis Data Streams Streams-Client erstellt haben, können Sie einen Stream mithilfe der Konsole oder programmgesteuert erstellen. Um einen Stream programmgesteuert zu erstellen, instanziieren Sie ein `CreateStreamRequest` Objekt und geben Sie einen Namen für den Stream an. Wenn Sie den Bereitstellungsmodus verwenden möchten, geben Sie die Anzahl der Shards an, die der Stream verwenden soll.
+ **On-Demand-Modus**:

  ```
  CreateStreamRequest createStreamRequest = new CreateStreamRequest();
  createStreamRequest.setStreamName( myStreamName );
  ```
+ **Bereitgestellt**:

  ```
  CreateStreamRequest createStreamRequest = new CreateStreamRequest();
  createStreamRequest.setStreamName( myStreamName );
  createStreamRequest.setShardCount( myStreamSize );
  ```

Der Streamname bezeichnet den Stream. Der Name ist auf das AWS Konto beschränkt, das von der Anwendung verwendet wird. Er ist auch nach Region beschränkt. Das heißt, zwei Streams in zwei verschiedenen AWS Konten können denselben Namen haben, und zwei Streams in demselben AWS Konto, aber in zwei verschiedenen Regionen können denselben Namen haben, aber nicht zwei Streams auf demselben Konto und in derselben Region.

Der Durchsatz des Streams hängt von der Anzahl der Shards ab. Für einen höheren bereitgestellten Durchsatz benötigen Sie mehr Shards. Mehr Shards erhöhen auch die Kosten, die für den Stream AWS anfallen. Weitere Informationen zum Berechnen einer ausreichenden Anzahl von Shards für Ihre Anwendung finden Sie unter [Wählen Sie den richtigen Modus zum Streamen](how-do-i-size-a-stream.md).

 Nachdem Sie das `createStreamRequest` Objekt konfiguriert haben, erstellen Sie einen Stream, indem Sie die `createStream` Methode auf dem Client aufrufen. Warten Sie nach dem Aufrufen von `createStream`, bis der Stream den Status `ACTIVE` erreicht hat, bevor Sie eine Operation auf dem Stream ausführen. Rufen Sie die `describeStream`-Methode auf, um den Status des Streams zu überprüfen. Allerdings löst `describeStream` eine Ausnahme aus, wenn der Stream nicht existiert. Aus diesem Grund müssen Sie den Aufruf `describeStream` in einen `try/catch`-Block einschließen. 

```
client.createStream( createStreamRequest );
DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest();
describeStreamRequest.setStreamName( myStreamName );

long startTime = System.currentTimeMillis();
long endTime = startTime + ( 10 * 60 * 1000 );
while ( System.currentTimeMillis() < endTime ) {
  try {
    Thread.sleep(20 * 1000);
  } 
  catch ( Exception e ) {}
  
  try {
    DescribeStreamResult describeStreamResponse = client.describeStream( describeStreamRequest );
    String streamStatus = describeStreamResponse.getStreamDescription().getStreamStatus();
    if ( streamStatus.equals( "ACTIVE" ) ) {
      break;
    }
    //
    // sleep for one second
    //
    try {
      Thread.sleep( 1000 );
    }
    catch ( Exception e ) {}
  }
  catch ( ResourceNotFoundException e ) {}
}
if ( System.currentTimeMillis() >= endTime ) {
  throw new RuntimeException( "Stream " + myStreamName + " never went active" );
}
```

# Aktualisieren Sie einen Stream
<a name="updating-a-stream"></a>

Sie können die Details eines Streams mithilfe der Konsole von Kinesis Data Streams, der API von Kinesis Data Streams oder der AWS CLI aktualisieren.

**Anmerkung**  
Sie können die serverseitige Verschlüsselung für vorhandene Streams oder für vor kurzem erstellte Streams aktivieren.

## Verwenden der Konsole
<a name="update-stream-console"></a>

**So aktualisieren Sie einen Daten-Stream mit der Konsole**

1. Öffnen Sie die Amazon Kinesis Kinesis-Konsole unter [https://console.aws.amazon.com/kinesis/](https://console.aws.amazon.com/kinesis/).

1. Erweitern Sie in der Navigationsleiste die Regionsauswahl und wählen Sie eine Region aus.

1. Wählen Sie den Namen des Streams in der Liste. Auf der Seite **Stream Details (Stream-Details)** werden eine Zusammenfassung der Stream-Konfiguration und Überwachungsinformationen angezeigt.

1. Wählen Sie auf der Registerkarte **Konfiguration** die Option **Kapazitätsmodus bearbeiten** aus, um für einen Datenstrom zwischen den Modi On-Demand-Kapazität und Bereitgestellte Kapazität zu wechseln. Weitere Informationen finden Sie unter [Wählen Sie den richtigen Modus zum Streamen](how-do-i-size-a-stream.md).
**Wichtig**  
Für jeden Datenstream in Ihrem AWS Konto können Sie innerhalb von 24 Stunden zweimal zwischen dem On-Demand-Modus und dem Bereitstellungsmodus wechseln.

1. Um für einen Datenstrom im Bereitstellungsmodus die Anzahl der Shards zu bearbeiten, wählen Sie auf der Registerkarte **Konfiguration** die Option **Bereitgestellte Shards bearbeiten** aus und geben Sie dann eine neue Shard-Anzahl ein.

1. Wählen Sie zum Aktivieren der serverseitigen Verschlüsselung von Datensätzen die Option **Edit (Bearbeiten)** im Abschnitt **Server-side encryption (Serverseitige Verschlüsselung)** aus. Wählen Sie einen KMS-Schlüssel aus, der als Masterschlüssel für die Verschlüsselung verwendet werden soll, oder nutzen Sie den Standard-Masterschlüssel **aws/kinesis**, der von Kinesis verwaltet wird. Wenn Sie die Verschlüsselung für einen Stream aktivieren und Ihren eigenen AWS KMS Masterschlüssel verwenden, stellen Sie sicher, dass Ihre Producer- und Consumer-Anwendungen Zugriff auf den von Ihnen verwendeten AWS KMS Masterschlüssel haben. Informationen zum Zuweisen von Berechtigungen zu Anwendungen für den Zugriff auf einen benutzergenerierten AWS KMS -Schlüssel finden Sie unter [Berechtigungen zur Verwendung von benutzergenerierten KMS-Schlüsseln](permissions-user-key-KMS.md).

1. Zum Bearbeiten des Datenaufbewahrungszeitraums wählen Sie die Option **Edit (Bearbeiten)** im Abschnitt **Data retention period (Datenaufbewahrungszeitraum)** aus und geben dann den neuen Zeitraum ein.

1. Wenn Sie benutzerdefinierte Metriken in Ihrem Konto aktiviert haben, wählen Sie die Option **Edit (Bearbeiten)** im Abschnitt **Shard level metrics (Metriken auf Shard-Ebene)** aus und geben anschließend Metriken für Ihren Stream an. Weitere Informationen finden Sie unter [Überwachen Sie den Amazon Kinesis Data Streams Streams-Service mit Amazon CloudWatch](monitoring-with-cloudwatch.md).

## Verwenden der API
<a name="update-stream-api"></a>

Informationen zum Aktualisieren von Stream-Details mit der API finden Sie unter den folgenden Methoden:
+ [AddTagsToStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_AddTagsToStream.html)
+ [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)
+ [DisableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DisableEnhancedMonitoring.html)
+ [EnableEnhancedMonitoring](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_EnableEnhancedMonitoring.html)
+ [IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html)
+ [RemoveTagsFromStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RemoveTagsFromStream.html)
+ [StartStreamEncryption](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_StartStreamEncryption.html)
+ [StopStreamEncryption](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_StopStreamEncryption.html)
+ [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html)

## Verwenden Sie den AWS CLI
<a name="update-stream-cli"></a>

Informationen zum Aktualisieren eines Streams mit dem AWS CLI finden Sie in der [Kinesis CLI-Referenz.](https://docs.aws.amazon.com/cli/latest/reference/kinesis/index.html) 

# Auflisten von Streams
<a name="kinesis-using-sdk-java-list-streams"></a>

Streams sind auf das AWS Konto beschränkt, das mit den AWS Anmeldeinformationen verknüpft ist, die zur Instanziierung des Kinesis Data Streams Streams-Clients verwendet wurden, sowie auf die für den Client angegebene Region. In einem AWS -Konto könnten viele Streams gleichzeitig aktiv sein. Sie können Ihre Streams in der Konsole von Kinesis Data Streams oder programmgesteuert auflisten. Der Code in diesem Abschnitt zeigt, wie Sie alle Streams für Ihr Konto auflisten. AWS 

```
ListStreamsRequest listStreamsRequest = new ListStreamsRequest();
listStreamsRequest.setLimit(20); 
ListStreamsResult listStreamsResult = client.listStreams(listStreamsRequest);
List<String> streamNames = listStreamsResult.getStreamNames();
```

In diesem Codebeispiel wird zuerst eine neue Instance von `ListStreamsRequest` erstellt und die zugehörige `setLimit`-Methode aufgerufen, um festzulegen, dass maximal 20-Streams für die einzelnen Aufrufe von `listStreams` zurückgegeben werden sollen. Wenn Sie keinen Wert für `setLimit` festlegen, gibt Kinesis Data Streams eine Anzahl von Streams kleiner oder gleich der Anzahl im Konto zurück. Der Code übergibt `listStreamsRequest` anschließend an die `listStreams`-Methode des Clients. Der Rückgabewert `listStreams` wird in einem `ListStreamsResult`-Objekt gespeichert. Der Code ruft die `getStreamNames`-Methode auf diesem Objekt auf und speichert den zurückgegebenen Stream-Namen in der Liste `streamNames`. Beachten Sie, dass Kinesis Data Streams möglicherweise weniger Streams zurückgibt als durch das angegebene Limit festgelegt, selbst wenn es mehr Streams als die im Konto und in der Region gibt. Um sicherzustellen, dass alle Streams abgerufen werden, verwenden Sie die `getHasMoreStreams`-Methode, wie im nächsten Codebeispiel beschrieben. 

```
while (listStreamsResult.getHasMoreStreams()) 
{
    if (streamNames.size() > 0) {
      listStreamsRequest.setExclusiveStartStreamName(streamNames.get(streamNames.size() - 1));
    }
    listStreamsResult = client.listStreams(listStreamsRequest);
    streamNames.addAll(listStreamsResult.getStreamNames());
}
```

Dieser Code ruft die `getHasMoreStreams`-Methode für `listStreamsRequest` auf, um zu überprüfen, ob zusätzlich zu den im ersten Aufruf von `listStreams` zurückgegebenen Streams weitere verfügbar sind. Wenn dies der Fall ist, ruft der Code die `setExclusiveStartStreamName`-Methode mit dem Namen des letzten Streams auf, der im vorherigen Aufruf von `listStreams` zurückgegeben wurde. Die `setExclusiveStartStreamName`-Methode bewirkt, dass der nächste Aufruf von `listStreams` nach diesem Stream beginnt. Die Gruppe der von diesem Aufruf zurückgegebenen Stream-Namen wird dann zur Liste `streamNames` hinzugefügt. Dieser Vorgang wird so lange fortgesetzt, bis alle Stream-Namen in der Liste erfasst wurden.

 Die von `listStreams` zurückgegebenen Streams können einen der folgenden Status aufweisen: 
+ `CREATING`
+ `ACTIVE`
+ `UPDATING`
+ `DELETING`

Sie können den Status eines Streams mit der `describeStream`-Methode überprüfen, wie im vorherigen Abschnitt [Erstellen Sie einen Stream mit dem APIs](kinesis-using-sdk-java-create-stream.md) dargestellt.

# Shards auflisten
<a name="kinesis-using-sdk-java-list-shards"></a>

Ein Datenstrom kann einen oder mehrere Shards aufweisen. Die empfohlene Methode zum Auflisten oder Abrufen der Shards aus einem Datenstream ist die Verwendung der API. [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html) Das folgende Beispiel zeigt, wie Sie eine Liste der Shards in einem Datenstrom erhalten. Eine vollständige Beschreibung der in diesem Beispiel verwendeten Hauptoperation und aller Parameter, die Sie für die Operation festlegen können, finden Sie unter. [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html)

```
import software.amazon.awssdk.services.kinesis.KinesisAsyncClient;
import software.amazon.awssdk.services.kinesis.model.ListShardsRequest;
import software.amazon.awssdk.services.kinesis.model.ListShardsResponse;

import java.util.concurrent.TimeUnit;

public class ShardSample {

    public static void main(String[] args) {

        KinesisAsyncClient client = KinesisAsyncClient.builder().build();

        ListShardsRequest request = ListShardsRequest
                .builder().streamName("myFirstStream")
                .build();

        try {
            ListShardsResponse response = client.listShards(request).get(5000, TimeUnit.MILLISECONDS);
            System.out.println(response.toString());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
```

Zum Ausführen des vorherigen Codebeispiels können Sie eine POM-Datei wie die folgende verwenden.

```
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>kinesis.data.streams.samples</groupId>
    <artifactId>shards</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>kinesis</artifactId>
            <version>2.0.0</version>
        </dependency>
    </dependencies>
</project>
```

Mit der `ListShards` API können Sie den [ShardFilter](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ShardFilter.html)Parameter verwenden, um die Antwort der API herauszufiltern. Sie können jeweils nur einen Filter angeben. 

Wenn Sie den `ShardFilter` Parameter beim Aufrufen der ListShards API verwenden, `Type` ist dies die erforderliche Eigenschaft und muss angegeben werden. Wenn Sie die Typen `AT_TRIM_HORIZON`, `FROM_TRIM_HORIZON`, oder `AT_LATEST` angeben, müssen Sie weder die optionalen Eigenschaften `ShardId` noch `Timestamp` angeben.

Wenn Sie den `AFTER_SHARD_ID`-Typ angeben, müssen Sie auch den Wert für die optionale `ShardId`-Eigenschaft angeben. Die `ShardId` Eigenschaft ist in ihrer Funktionalität identisch mit dem `ExclusiveStartShardId` Parameter der ListShards API. Wenn eine Eigenschaft `ShardId` angegeben ist, enthält die Antwort die Shards, beginnend mit dem Shard, dessen ID unmittelbar auf das von Ihnen angegebene `ShardId` folgt.

Wenn Sie den Typ `AT_TIMESTAMP` oder `FROM_TIMESTAMP_ID` angeben, müssen Sie auch den Wert für die optionale `Timestamp`-Eigenschaft angeben. Wenn Sie den Typ `AT_TIMESTAMP` angeben, werden alle Shards zurückgegeben, die zum angegebenen Zeitstempel geöffnet waren. Wenn Sie den Typ `FROM_TIMESTAMP` angeben, werden alle Shards ab dem angegebenen Zeitstempel bis TIP zurückgegeben. 

**Wichtig**  
`DescribeStreamSummary`und `ListShard` APIs bieten eine skalierbarere Möglichkeit, Informationen über Ihre Datenströme abzurufen. Insbesondere die Kontingente für die DescribeStream API können zu Drosselungen führen. Weitere Informationen finden Sie unter [Kontingente und -Einschränkungen](service-sizes-and-limits.md). Beachten Sie auch, dass `DescribeStream` Kontingente von allen Anwendungen gemeinsam genutzt werden, die mit allen Datenströmen in Ihrem AWS Konto interagieren. Die Kontingente für die ListShards API sind dagegen spezifisch für einen einzelnen Datenstrom. Mit der ListShards API erhalten Sie also nicht nur höhere TPS-Werte, sondern die Aktion lässt sich auch besser skalieren, je mehr Datenströme Sie erstellen.  
Wir empfehlen Ihnen, all Ihre Produzenten und Verbraucher, die die DescribeStream API aufrufen, zu migrieren, sodass sie stattdessen die DescribeStreamSummary und die aufrufen. ListShard APIs Um diese Hersteller und Verbraucher zu identifizieren, empfehlen wir, Athena zum Analysieren von CloudTrail Protokollen zu verwenden, während Benutzeragenten für KPL und KCL in den API-Aufrufen erfasst werden.   

```
SELECT useridentity.sessioncontext.sessionissuer.username, 
useridentity.arn,eventname,useragent, count(*) FROM 
cloudtrail_logs WHERE Eventname IN ('DescribeStream')  AND 
eventtime
    BETWEEN ''
        AND ''
GROUP BY  useridentity.sessioncontext.sessionissuer.username,useridentity.arn,eventname,useragent
ORDER BY  count(*) DESC LIMIT 100
```
Wir empfehlen außerdem, die AWS Lambda- und Amazon Firehose-Integrationen mit Kinesis Data Streams, die die `DescribeStream` API aufrufen, neu zu konfigurieren, sodass die Integrationen stattdessen und aufrufen. `DescribeStreamSummary` `ListShards` Insbesondere für AWS Lambda müssen Sie Ihre Ereignisquellenzuordnung aktualisieren. Für Amazon Firehose müssen die entsprechenden IAM-Berechtigungen aktualisiert werden, sodass sie die `ListShards`-IAM-Berechtigung enthalten. 

# Löschen Sie einen Stream
<a name="kinesis-using-sdk-java-delete-stream"></a>

Sie können einen Stream mit der Konsole von Kinesis Data Streams oder programmgesteuert löschen. Um einen Stream programmgesteuert zu löschen, verwenden Sie `DeleteStreamRequest`, wie im folgenden Code gezeigt.

```
DeleteStreamRequest deleteStreamRequest = new DeleteStreamRequest();
deleteStreamRequest.setStreamName(myStreamName);
client.deleteStream(deleteStreamRequest);
```

Schließen Sie alle auf dem Stream ausgeführten Anwendungen, bevor Sie ihn löschen. Wenn eine Anwendung versucht, sich auf einem gelöschten Stream zu öffnen, empfängt sie `ResourceNotFound`-Ausnahmen. Wenn Sie darüber hinaus anschließend einen neuen Stream erstellen, der denselben Namen wie Ihr vorheriger Stream hat, und Anwendungen, die auf dem vorherigen Stream ausgeführt wurden, weiterhin ausgeführt werden, versuchen diese Anwendungen möglicherweise, mit dem neuen Stream zu interagieren, so als wäre es der vorherige Stream – was zu einem unerwarteten Verhalten führen könnte.

# Einen Stream erneut teilen
<a name="kinesis-using-sdk-java-resharding"></a>

**Wichtig**  
Sie können Ihren Stream mithilfe der API erneut teilen. [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html) Andernfalls können Sie auch weiterhin Teilungen und Zusammenführungen ausführen, wie hier beschrieben.

Amazon Kinesis Data Streams unterstützt das *Resharding*, das Ihnen ermöglicht, die Anzahl der Shards in Ihrem Stream zur Anpassung an Änderungen an der Durchflussrate der Daten im Stream anzupassen. Resharding ist eine erweiterte Operation. Wenn Sie noch keine Erfahrung mit Kinesis Data Streams haben, machen Sie sich zuerst mit allen anderen Aspekten von Kinesis Data Streams vertraut, bevor Sie zu diesem Thema zurückkehren.

Derzeit gibt es zwei Arten von Resharding-Vorgängen: Shard-Teilungen und Shard-Zusammenführungen. Bei einer Shard-Teilung wird ein einzelner Shard in zwei Shards geteilt. Bei einer Shard-Zusammenführung werden zwei Shards in einem einzelnen Shard zusammengeführt. Resharding erfolgt stets *paarweise*, d. h. dass in einem einzelnen Vorgang keine Teilungen in mehr als zwei Shards möglich sind und dass in einem einzelnen Vorgang keine Zusammenführungen von mehr als zwei Shards möglich sind. Der Shard oder das Shard-Paar, auf dem der Resharding-Vorgang ausgeführt wird, wird als *übergeordneter* Shard bezeichnet. Der Shard oder das Shard-Paar, der/das aus dem Resharding-Vorgang resultiert, wird als *untergeordneter* Shard bezeichnet. 

Durch Teilungen erhöht sich die Anzahl der Shards in Ihrem Stream und damit die Datenkapazität des Streams. Da Gebühren pro Shard anfallen, erhöhen Teilungen die Kosten für Ihren Stream. Gleichermaßen verringern Zusammenführungen die Anzahl der Shards in Ihrem Stream und damit die Datenkapazität – und Kosten – des Streams. 

Das Resharding wird üblicherweise von einer administrativen Anwendung ausgeführt. Diese unterscheiden sich von den Produzentenanwendungen (zum Senden) und den Konsumentenanwendungen (zum Abrufen). Eine solche Verwaltungsanwendung überwacht die Gesamtleistung des Streams auf der Grundlage von Metriken, die von Amazon bereitgestellt werden, CloudWatch oder auf der Grundlage von Metriken, die von Herstellern und Verbrauchern gesammelt wurden. Die Verwaltungsanwendung benötigt außerdem ein breiteres Spektrum an IAM-Berechtigungen als die der Verbraucher oder Produzenten, da die Verbraucher und Produzenten normalerweise keinen Zugriff auf die für das Resharding APIs verwendeten Daten benötigen sollten. Weitere Informationen zu IAM-Berechtigungen für Kinesis Data Streams finden Sie unter [Steuern des Zugriffs auf Amazon Kinesis Data Streams Streams-Ressourcen mithilfe von IAM](controlling-access.md). 

Weitere Informationen zu Resharding finden Sie unter [Wie ändere ich die Anzahl der offenen Shards in Kinesis Data Streams?](https://aws.amazon.com/premiumsupport/knowledge-center/kinesis-data-streams-open-shards/)

**Topics**
+ [Entscheiden Sie sich für eine Strategie für das Resharding](kinesis-using-sdk-java-resharding-strategies.md)
+ [Teilen Sie einen Shard auf](kinesis-using-sdk-java-resharding-split.md)
+ [Zwei Shards zusammenführen](kinesis-using-sdk-java-resharding-merge.md)
+ [Schließen Sie die Resharding-Aktion ab](kinesis-using-sdk-java-after-resharding.md)

# Entscheiden Sie sich für eine Strategie für das Resharding
<a name="kinesis-using-sdk-java-resharding-strategies"></a>

Der Zweck des Reshardings in Amazon Kinesis Data Streams besteht darin, Ihrem Stream die Anpassung an Änderungen in der Durchflussrate von Daten zu ermöglichen. Sie teilen Shards, um die Kapazität (und Kosten) Ihres Streams zu erhöhen. Sie führen Shards zusammen, um die Kosten (und Kapazität) Ihres Streams zu verringern.

 Ein Ansatz für das Resharding besteht darin, jeden Shard im Stream zu teilen – wodurch sich die Kapazität des Streams verdoppeln würde. Dadurch kann jedoch mehr zusätzliche Kapazität bereitgestellt werden, als Sie tatsächlich benötigen, was unnötige Kosten verursachen würde. 

Sie können darüber hinaus Metriken verwenden, um zu ermitteln, welche Ihre *heißen* oder *kalten* Shards sind, d. h. Shards, die viel mehr bzw. viel weniger Daten empfangen als erwartet. Sie könnten dann selektiv die heißen Shards teilen, um die Kapazität für die Hash-Schlüssel zu erhöhen, die auf solche Shards abzielen. Gleichermaßen könnten Sie kalte Shards zusammenführen, um deren ungenutzte Kapazitäten besser zu nutzen.

Sie können einige Leistungsdaten für Ihren Stream aus den CloudWatch Amazon-Metriken abrufen, die Kinesis Data Streams veröffentlicht. Sie können jedoch auch eigene Metriken für Ihre Streams erfassen. Ein Ansatz wäre die Protokollierung der Hash-Schlüsselwerte, die von den Partitionsschlüsseln für Ihre Datensätze generiert wurden. Beachten Sie, dass Sie den Partitionsschlüssel zu dem Zeitpunkt festlegen, an dem Sie den Datensatz zu dem Stream hinzufügen. 

```
putRecordRequest.setPartitionKey( String.format( "myPartitionKey" ) );
```

Kinesis Data Streams verwendet [MD5](http://en.wikipedia.org/wiki/MD5), um den Hash-Schlüssel aus dem Partitionsschlüssel zu berechnen. Da Sie den Partitionsschlüssel für den Datensatz angeben, könnten Sie ihn verwenden, MD5 um den Hash-Schlüsselwert für diesen Datensatz zu berechnen und zu protokollieren. 

Sie könnten auch die IDs Shards protokollieren, denen Ihre Datensätze zugewiesen sind. Die Shard-ID ist verfügbar über die `getShardId`-Methode des `putRecordResults`-Objekts, das von der `putRecords`-Methode zurückgegeben wurde, und des `putRecordResult`-Objekts, das von der `putRecord`-Methode zurückgegeben wurde.

```
String shardId = putRecordResult.getShardId();
```

Anhand des Shards IDs und der Hash-Schlüsselwerte können Sie feststellen, welche Shards und Hash-Schlüssel den meisten oder den wenigsten Traffic erhalten. Anschließend können Sie mithilfe von Resharding mehr oder weniger Kapazitäten bereitstellen, wie für diese Schlüssel angemessen.

# Teilen Sie einen Shard auf
<a name="kinesis-using-sdk-java-resharding-split"></a>

Um einen Shard in Amazon Kinesis Data Streams zu teilen, müssen Sie festlegen, wie Hash-Schlüsselwerte aus dem übergeordneten Shard auf die untergeordneten Shards umverteilt werden sollten. Wenn Sie einen Datensatz zu einem Stream hinzufügen, wird dieser basierend auf einem Hash-Schlüsselwert einem Shard zugeordnet. Der Hash-Schlüsselwert ist der [MD5](http://en.wikipedia.org/wiki/MD5)Hash des Partitionsschlüssels, den Sie für den Datensatz angeben, wenn Sie den Datensatz zum Stream hinzufügen. Datensätze mit demselben Partitionsschlüssel haben auch denselben Hash-Schlüsselwert.

Die möglichen Hash-Schlüsselwerte für einen bestimmten Shard bilden eine Reihe von geordneten fortlaufenden nicht-negativen Ganzzahlen. Diese Reihe möglicher Hash-Schlüsselwerte ergibt sich wie folgt: 

```
shard.getHashKeyRange().getStartingHashKey();
shard.getHashKeyRange().getEndingHashKey();
```

Wenn Sie die Shard teilen, legen Sie einen Wert in diesem Bereich fest. Dieser Hash-Schlüsselwert und alle höheren Hash-Schlüsselwerte werden auf eine der untergeordneten Shards verteilt. Alle niedrigeren Hash-Schlüsselwerte werden an die andere untergeordnete Shard verteilt. 

Der folgende Code zeigt einen Shard -Teilungsvorgang, bei dem die Hash-Schlüssel gleichmäßig zwischen den untergeordneten Shards verteilt werden, wobei der übergeordnete Shard im Wesentlichen in zwei Hälften geteilt wird. Dies ist nur eine Möglichkeit, den übergeordneten Shard zu teilen. Sie könnten beispielsweise den Shard so teilen, dass das untere Drittel des Schlüssels aus dem übergeordneten Shard an einen untergeordneten Shard und die zwei oberen Drittel der Schlüssel an einen anderen untergeordneten Shard übergehen. Bei vielen Anwendungen ist jedoch das Teilen von Shards in zwei Hälften ein effektiver Ansatz. 

Der Code setzt voraus, dass `myStreamName` den Namen Ihres Streams enthält und dass die Objektvariable `shard` den zu teilenden Shard enthält. Beginnen Sie mit der Instanziierung eines neuen `splitShardRequest`-Objekts und dem Festlegen des Stream-Namens und der Shard-ID.

```
SplitShardRequest splitShardRequest = new SplitShardRequest();
splitShardRequest.setStreamName(myStreamName);
splitShardRequest.setShardToSplit(shard.getShardId());
```

Ermitteln Sie den Hash-Schlüsselwert, der genau zwischen dem niedrigsten und dem höchsten Wert im Shard liegt. Dies ist der Hash-Startschlüsselwert für den untergeordneten Shard, der die obere Hälfte der Hash-Schlüssel aus dem übergeordneten Shard enthält. Geben Sie diesen Wert in der `setNewStartingHashKey`-Methode an. Sie müssen nur diesen Wert angeben. Kinesis Data Streams verteilt automatisch die Hash-Schlüssel unter diesem Wert an den anderen untergeordneten Shard, der bei dieser Teilung erstellt wird. Der letzte Schritt besteht darin, die `splitShard`-Methode auf dem Kinesis-Data-Streams-Client aufzurufen.

```
BigInteger startingHashKey = new BigInteger(shard.getHashKeyRange().getStartingHashKey());
BigInteger endingHashKey   = new BigInteger(shard.getHashKeyRange().getEndingHashKey());
String newStartingHashKey  = startingHashKey.add(endingHashKey).divide(new BigInteger("2")).toString();

splitShardRequest.setNewStartingHashKey(newStartingHashKey);
client.splitShard(splitShardRequest);
```

Der erste Schritt nach diesem Verfahren wird unter [Warten Sie, bis ein Stream wieder aktiv wird](kinesis-using-sdk-java-after-resharding.md#kinesis-using-sdk-java-resharding-wait-until-active) veranschaulicht. 

# Zwei Shards zusammenführen
<a name="kinesis-using-sdk-java-resharding-merge"></a>

 Bei einem Shard-Zusammenführungsvorgang werden zwei festgelegte Shards in einem einzelnen Shard kombiniert. Nach der Zusammenfassung empfängt der einzelne untergeordnete Shard Daten für alle Hash-Schlüsselwerte, die in den zwei übergeordneten Shards enthalten sind. 

**Shard-Nachbarschaft**  
Um zwei Shards zusammenführen zu können, müssen die Shards *benachbart* sein. Zwei Shards gelten als benachbart, wenn der Verband der Hash-Schlüsselbereiche für die beiden Shards eine fortlaufende Reihe ohne Lücken bildet. Wenn Sie zum Beispiel über zwei Shards verfügen, von denen einer einen Hash-Schlüsselbereich von 276 bis 381 und der andere einen Hash-Schlüsselbereich von 382 bis 454 aufweist, dann könnten Sie diese beiden Shards zu einem einzigen Shard zusammenführen, der über einen Hash-Schlüsselbereich von 276 bis 454 verfügen würde. 

Wenn Sie in einem anderen Beispiel über zwei Shards verfügen, von denen einer einen Hash-Schlüsselbereich von 276 bis 381 und der andere einen Hash-Schlüsselbereich von 455 bis 560 aufweist, dann könnten Sie diese beiden Shards nicht zusammenführen, weil ein oder mehr weitere Shards zwischen diesen beiden liegen würden, die den Bereich von 382 bis 454 abdecken. 

Der Satz aller `OPEN` Shards in einem Stream — als Gruppe — umfasst immer den gesamten Bereich der Hash-Schlüsselwerte. MD5 Weitere Informationen zu Shard-Status – wie beispielsweise `CLOSED` – finden Sie unter [Denken Sie an Datenrouting, Datenpersistenz und den Shard-Status nach einem Reshard](kinesis-using-sdk-java-after-resharding.md#kinesis-using-sdk-java-resharding-data-routing). 

Zum Identifizieren von Shards, die zum Zusammenführen infrage kommen, sollten Sie alle Shards im Status `CLOSED` herausfiltern. Shards mit dem Status `OPEN` – also nicht `CLOSED` – weisen die Sequenzendzahl `null` auf. Sie können die Sequenzendzahl für einen Shard folgendermaßen testen: 

```
if( null == shard.getSequenceNumberRange().getEndingSequenceNumber() ) 
{
  // Shard is OPEN, so it is a possible candidate to be merged.
}
```

Nachdem die geschlossenen Shards herausgefiltert wurden, sortieren Sie die verbleibenden Shards nach dem höchsten Hash-Schlüsselwert, der von den Shards jeweils unterstützt wird. Sie können diesen Wert folgendermaßen abrufen: 

```
shard.getHashKeyRange().getEndingHashKey();
```

 Wenn zwei Shards in dieser gefilterten, sortierten Liste benachbart sind, können sie zusammengeführt werden. 

**Code für den Zusammenführungsvorgang**  
 Mit dem folgenden Code lassen sich zwei Shards zusammenführen. Der Code setzt voraus, dass `myStreamName` den Namen Ihres Streams enthält und dass die Objektvariablen `shard1` und `shard2` die zwei benachbarten zusammenzuführenden Shards enthalten.

Beginnen Sie für den Zusammenführungsvorgang mit der Instanziierung eines neuen `mergeShardsRequest`-Objekts. Geben Sie den Stream-Namen mit der `setStreamName`-Methode an. Geben Sie anschließend die zwei zusammenzuführenden Shards mithilfe der Methoden `setShardToMerge` und `setAdjacentShardToMerge` an. Rufen Sie anschließend die Methode `mergeShards` auf dem Client von Kinesis Data Streams aus, um den Vorgang auszuführen.

```
MergeShardsRequest mergeShardsRequest = new MergeShardsRequest();
mergeShardsRequest.setStreamName(myStreamName);
mergeShardsRequest.setShardToMerge(shard1.getShardId());
mergeShardsRequest.setAdjacentShardToMerge(shard2.getShardId());
client.mergeShards(mergeShardsRequest);
```

Der erste Schritt nach diesem Verfahren wird unter [Warten Sie, bis ein Stream wieder aktiv wird](kinesis-using-sdk-java-after-resharding.md#kinesis-using-sdk-java-resharding-wait-until-active) veranschaulicht.

# Schließen Sie die Resharding-Aktion ab
<a name="kinesis-using-sdk-java-after-resharding"></a>

Nach allen Resharding-Vorgängen in Amazon Kinesis Data Streams und vor dem Fortsetzen der normalen Datensatzverarbeitung sind weitere Verfahren und Überlegungen erforderlich. In den folgenden Abschnitten werden diese beschrieben.

**Topics**
+ [Warten Sie, bis ein Stream wieder aktiv wird](#kinesis-using-sdk-java-resharding-wait-until-active)
+ [Denken Sie an Datenrouting, Datenpersistenz und den Shard-Status nach einem Reshard](#kinesis-using-sdk-java-resharding-data-routing)

## Warten Sie, bis ein Stream wieder aktiv wird
<a name="kinesis-using-sdk-java-resharding-wait-until-active"></a>

Nachdem Sie einen Resharding-Vorgang (entweder `splitShard` oder) aufgerufen haben`mergeShards`, müssen Sie warten, bis der Stream wieder aktiv wird. Der zu verwendende Code entspricht dem Code beim Warten, bis ein Stream nach dem [Erstellen eines Streams](kinesis-using-sdk-java-create-stream.md) aktiviert wird. Dieser Code sieht wie folgt aus:

```
DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest();
describeStreamRequest.setStreamName( myStreamName );

long startTime = System.currentTimeMillis();
long endTime = startTime + ( 10 * 60 * 1000 );
while ( System.currentTimeMillis() < endTime ) 
{
  try {
    Thread.sleep(20 * 1000);
  } 
  catch ( Exception e ) {}
  
  try {
    DescribeStreamResult describeStreamResponse = client.describeStream( describeStreamRequest );
    String streamStatus = describeStreamResponse.getStreamDescription().getStreamStatus();
    if ( streamStatus.equals( "ACTIVE" ) ) {
      break;
    }
   //
    // sleep for one second
    //
    try {
      Thread.sleep( 1000 );
    }
    catch ( Exception e ) {}
  }
  catch ( ResourceNotFoundException e ) {}
}
if ( System.currentTimeMillis() >= endTime ) 
{
  throw new RuntimeException( "Stream " + myStreamName + " never went active" );
}
```

## Denken Sie an Datenrouting, Datenpersistenz und den Shard-Status nach einem Reshard
<a name="kinesis-using-sdk-java-resharding-data-routing"></a>

Kinesis Data Streams ist ein Echtzeit-Datenstreaming-Dienst. Ihre Anwendungen sollten davon ausgehen, dass Daten kontinuierlich durch die Shards in Ihrem Stream fließen. Bei einem Resharding werden Datensätze, die an die übergeordneten Shards geleitet wurden, basierend auf den Hash-Schlüsselwerten, die den Partitionsschlüsseln zu den Datensätzen zugeordnet werden, zu den untergeordneten Shards umgeleitet. Datensätze, die sich vor dem Resharding in den übergeordneten Shards befunden haben, verbleiben jedoch in diesen Shards. Die übergeordneten Shards verschwinden nicht, wenn der Reshard auftritt. Sie bleiben zusammen mit den Daten erhalten, die sie vor dem Resharding enthielten. Die Datensätze in den übergeordneten Shards können mithilfe der Operationen [`getShardIterator` und `getRecords`](developing-consumers-with-sdk.md#kinesis-using-sdk-java-get-data) in der API für Kinesis Data Streams und über die Kinesis Client Library aufgerufen werden.

**Anmerkung**  
Datensätze können ab dem Zeitpunkt, an dem Sie zum Stream hinzugefügt wurden, bis zum aktuellen Aufbewahrungszeitraum aufgerufen werden. Dies gilt unabhängig von Änderungen an den Shards in dem Stream in diesem Zeitraum. Weitere Informationen zum Aufbewahrungszeitraum eines Streams finden Sie unter [Ändern Sie den Aufbewahrungszeitraum für Daten](kinesis-extended-retention.md).

Bei einem Resharding-Vorgang geht ein übergeordneter Shard vom Status `OPEN` in den Status `CLOSED` und anschließend in den Status `EXPIRED` über. 
+  **OPEN**: Vor einem Resharding-Vorgang befindet sich ein übergeordneter Shard im Status `OPEN`. Dies bedeutet, dass Datensätze sowohl zum Shard hinzugefügt als auch vom Shard abgerufen werden können.
+  **CLOSED**: Nach einem Reshard-Vorgang geht der übergeordnete Shard in den Status `CLOSED` über. Das bedeutet, dass Datensätze sind mehr zum Shard hinzugefügt werden. Die Datensätze, die zu diesem Shard hinzugefügt worden wären, werden nun stattdessen zu einem untergeordneten Shard hinzugefügt. Datensätze können jedoch weiterhin für einen begrenzten Zeitraum von dem Shard abgerufen werden. 
+  **EXPIRED**: Wenn der Aufbewahrungszeitraum des Streams abgelaufen ist, sind auch alle Datensätze im übergeordneten Shard abgelaufen und nicht mehr zugänglich. Zu diesem Zeitpunkt geht der Shard selbst in den Status `EXPIRED` über. Aufrufe an `getStreamDescription().getShards` zum Aufzählen der Shards im Stream berücksichtigen keine Shards mit dem Status `EXPIRED` in der Liste der zurückgegebenen Shards. Weitere Informationen zum Aufbewahrungszeitraum eines Streams finden Sie unter [Ändern Sie den Aufbewahrungszeitraum für Daten](kinesis-extended-retention.md).

Wenn sich der Stream nach einem Resharding-Vorgang wieder im Status `ACTIVE` befindet, können Sie sofort mit dem Auslesen von Daten aus den untergeordneten Shards beginnen. Die übergeordneten Shards, die nach dem Reshard verbleiben, können jedoch immer noch Daten enthalten, die Sie noch nicht gelesen haben und die dem Stream vor dem Reshard hinzugefügt wurden. Wenn Sie Daten aus den untergeordneten Shards auslesen, bevor alle Daten aus den übergeordneten Shards ausgelesen wurden, lesen Sie die Daten für einen bestimmten Hash-Schlüssel möglicherweise nicht in der durch die Sequenznummern der Datensätze festgelegten Reihenfolge. Unter der Annahme, dass die Reihenfolge der Daten wichtig ist, sollten Sie daher nach einem Resharding Daten aus den übergeordneten Shards immer so lange weiter auslesen, bis sie ausgeschöpft sind. Erst dann sollten Sie mit dem Auslesen von Daten aus den untergeordneten Shards beginnen. Wenn `getRecordsResult.getNextShardIterator` den Wert `null` zurückgibt, bedeutet dies, dass alle Daten im übergeordneten Shard ausgelesen wurden. 

# Ändern Sie den Aufbewahrungszeitraum für Daten
<a name="kinesis-extended-retention"></a>

Amazon Kinesis Data Streams unterstützt Änderungen des Zeitraums der Datensatzaufbewahrung für einen Datenstrom. Ein Kinesis-Datenstrom ist eine sortierte Folge von Datensätzen, in die in Echtzeit geschrieben und aus denen in Echtzeit gelesen werden kann. Datensätze werden deshalb vorübergehend in Shards in Ihrem Stream gespeichert. Der Zeitraum ab dem Hinzufügen eines Datensatzes bis zu dem Zeitpunkt, an dem er nicht mehr verfügbar ist, wird als *Aufbewahrungszeitraum* bezeichnet. Ein Kinesis-Datenstrom speichert standardmäßig Datensätze von 24 Stunden bis zu 8 760 Stunden (365 Tage). 

Sie können den Aufbewahrungszeitraum über die Kinesis Data Streams Streams-Konsole oder mithilfe der [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)Operationen [IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html)und den Vorgängen aktualisieren. Mit der Konsole von Kinesis Data Streams können Sie den Aufbewahrungszeitraum mehrerer Datenströme gleichzeitig bearbeiten. Sie können die Aufbewahrungsdauer mithilfe der [IncreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_IncreaseStreamRetentionPeriod.html)Operation oder der Kinesis Data Streams Streams-Konsole auf maximal 8760 Stunden (365 Tage) erhöhen. Sie können die Aufbewahrungsdauer mithilfe der [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)Operation oder der Kinesis Data Streams Streams-Konsole auf mindestens 24 Stunden reduzieren. Die Anforderungssyntax für beide Operationen enthält den Stream-Namen und den Aufbewahrungszeitraum in Stunden. Zuletzt können Sie den aktuellen Aufbewahrungszeitraum eines Streams überprüfen, indem Sie die [DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)-Operation aufrufen.

Das folgende Beispiel zeigt die Änderung des Aufbewahrungszeitraums unter Verwendung der AWS CLI.

```
aws kinesis increase-stream-retention-period --stream-name retentionPeriodDemo --retention-period-hours 72
```

Kinesis Data Streams hört innerhalb von einigen Minuten nach einer Erhöhung des Aufbewahrungszeitraums damit auf, Datensätze zum alten Aufbewahrungszeitraum unzugänglich zu machen. Beispielsweise bedeutet eine Änderung des Aufbewahrungszeitraums von 24 Stunden auf 48 Stunden, dass Datensätze, die 23 Stunden und 55 Minuten vorher zum Stream hinzugefügt wurden, nach 24 Stunden weiterhin verfügbar sind.

Kinesis Data Streams macht bei einer Verringerung des Aufbewahrungszeitraums beinahe sofort die Datensätze unzugänglich, die vor dem neuen Aufbewahrungszeitraum liegen. Deshalb sollten Sie beim Aufrufen der [DecreaseStreamRetentionPeriod](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DecreaseStreamRetentionPeriod.html)-Operation äußerst vorsichtig vorgehen.

Legen Ihren Zeitraum der Datenaufbewahrung so fest, dass im Fall von Problemen sichergestellt ist, dass Ihre Konsumenten Daten auslesen können, bevor diese auslaufen. Sie sollten alle Möglichkeiten sorgfältig prüfen, wie beispielsweise ein Problem mit Ihrer Datensatzverarbeitungslogik oder einer nachgelagerten Abhängigkeit, die für einen langen Zeitraum inaktiv ist. Der Aufbewahrungszeitraum kann als Sicherheitsnetz betrachtet werden, durch das Ihre Datenkonsumenten mehr Zeit für die Wiederherstellung haben. Die API-Operationen für Aufbewahrungszeiträume ermöglichen Ihnen, dies proaktiv einzurichten oder auf Betriebsereignisse zu reagieren.

 Für Streams mit einem Aufbewahrungszeitraum von mehr als 24 Stunden fallen zusätzliche Gebühren an. Weitere Informationen finden Sie unter [Preise für Amazon Kinesis Daten-Streams](https://aws.amazon.com/kinesis/data-streams/pricing/).

# Kennzeichnen Sie Ihre Amazon Kinesis Data Streams Streams-Ressourcen
<a name="tagging"></a>

*Sie können Streams und erweiterten Fan-Out-Consumern, die Sie in Amazon Kinesis Data Streams erstellen, Ihre eigenen Metadaten in Form von Tags zuweisen.* Ein Tag ist ein Schlüssel-Wert-Paar, das Sie für einen Stream definieren. Die Verwendung von Tags ist eine einfache und dennoch leistungsstarke Möglichkeit, AWS Ressourcen zu verwalten und Daten, einschließlich Rechnungsdaten, zu organisieren.

**Topics**
+ [Lesen Sie die Grundlagen von Stichwörtern](#tagging-basics)
+ [Verfolgen Sie die Kosten mithilfe von Tagging](#tagging-billing)
+ [Verstehen Sie die Einschränkungen von Tags](#tagging-restrictions)
+ [Taggen Sie Streams mit der Kinesis Data Streams Streams-Konsole](#tagging-console)
+ [Taggen Sie Streams mit dem AWS CLI](#tagging-cli)
+ [Taggen von Streams mithilfe der Kinesis Data Streams APIs](#tagging-api)
+ [Taggen Sie Verbraucher mit dem AWS CLI](#tagging-consumers-cli)
+ [Taggen Sie Verbraucher, die Kinesis Data Streams verwenden APIs](#tagging-consumers-api)

## Lesen Sie die Grundlagen von Stichwörtern
<a name="tagging-basics"></a>

Zu den Kinesis Data Streams Streams-Ressourcen, die Sie taggen können, gehören Datenstreams und erweiterte Fan-Out-Nutzer. Sie verwenden die Kinesis Data Streams Streams-Konsole oder die Kinesis Data Streams Streams-API AWS CLI, um die folgenden Aufgaben auszuführen:
+ Erstellen Sie eine Ressource mit Tags
+ Fügen Sie einer Ressource Tags hinzu
+ Listet die Tags für Ihre Ressourcen auf
+ Entfernen Sie Tags aus einer Ressource

**Anmerkung**  
Mit der Kinesis Data Streams Streams-Konsole können Sie keine Tags auf erweiterte Fan-Out-Nutzer anwenden. Verwenden AWS CLI Sie unsere Kinesis Data Streams Streams-API, um Tags auf Verbraucher anzuwenden. 

Sie können mit Tags auch Ihre -Ressourcen kategorisieren. Sie können Ressourcen beispielsweise nach Zweck, Inhaber oder Umgebung kategorisieren. Da Sie für jeden Tag den Schlüssel und Wert definieren, können Sie eine auf benutzerdefinierte Reihe von Kategorien anlegen, die Ihren jeweiligen Anforderungen gerecht wird. Sie können beispielsweise eine Reihe von Tags definieren, mit deren Hilfe Sie Ressourcen nach Eigentümer und zugehöriger Anwendung nachverfolgen können. Im Folgenden finden Sie einige Beispiele für Tags:
+ Projekt: Projektname
+ Inhaber: Name
+ Zweck: Belastungstest 
+ Anwendung: Anwendungsname
+ Umgebung: Produktion 

**Wichtig**  
Um beim Erstellen eines Streams Tags hinzuzufügen, müssen Sie die `kinesis:AddTagsToStream` Berechtigungen `kinesis:CreateStream` und für diesen Stream angeben. Sie **können die `kinesis:TagResource` Berechtigung zum Markieren von Streams nicht verwenden**, während Sie sie erstellen.
Um bei der Registrierung als Verbraucher Tags hinzuzufügen, müssen Sie die `kinesis:RegisterStreamConsumer` Berechtigungen `kinesis:TagResource` und angeben.

## Verfolgen Sie die Kosten mithilfe von Tagging
<a name="tagging-billing"></a>

Sie können Tags verwenden, um Ihre AWS Kosten zu kategorisieren und nachzuverfolgen. Wenn Sie Tags auf Ihre Kinesis Data Streams Streams-Ressourcen anwenden, enthält Ihr AWS Kostenzuordnungsbericht die Nutzung und die Kosten, die nach Tags zusammengefasst sind. Sie können Tags verwenden, die Geschäftskategorien wie Kostenstellen, Anwendungsnamen oder Eigentümer repräsentieren, um Ihre Kosten für mehrere Services zu organisieren. Weitere Informationen finden Sie unter [Verwenden von Kostenzuordnungs-Tags für benutzerdefinierte Fakturierungsberichte](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) im *AWS Billing -Benutzerhandbuch*.

## Verstehen Sie die Einschränkungen von Tags
<a name="tagging-restrictions"></a>

Für Tags gelten die folgenden Einschränkungen:

**Grundlegende Einschränkungen**
+ Die maximale Anzahl von Tags pro Ressource beträgt 50.
+ Bei Tag-Schlüsseln und -Werten wird zwischen Groß- und Kleinschreibung unterschieden.
+ Sie können Tags für eine gelöschte Ressource nicht ändern oder bearbeiten.

**Einschränkungen für Tag-Schlüssel**
+ Jeder Tag-Schlüssel muss einmalig sein. Wenn Sie einen Tag mit einem Schlüssel hinzufügen, der bereits verwendet wird, wird das vorhandene Schlüssel-Wert-Paar durch den neuen Tag überschrieben. 
+ Sie können einen Tag-Schlüssel nicht mit beginnen`aws:`, da dieses Präfix für die Verwendung durch reserviert ist AWS. AWS erstellt in Ihrem Namen Tags, die mit diesem Präfix beginnen, aber Sie können sie nicht bearbeiten oder löschen.
+ Tag-Schlüssel müssen zwischen 1 und 128 Unicode-Zeichen lang sein.
+ Tag-Schlüssel müssen die folgenden Zeichen enthalten: Unicode-Zeichen, Ziffern, Leerzeichen sowie die folgenden Sonderzeichen: `_ . / = + - @`.

**Einschränkungen für den Tag-Wert**
+ Tag-Werte müssen zwischen 0 und 255 Unicode-Zeichen lang sein.
+ Tag-Werte können leer sein. Ansonsten müssen sie die folgenden Zeichen enthalten: Unicode-Zeichen, Ziffern, Leerzeichen und eines der folgenden Sonderzeichen: `_ . / = + - @`.

## Taggen Sie Streams mit der Kinesis Data Streams Streams-Konsole
<a name="tagging-console"></a>

Mit der Kinesis Data Streams Streams-Konsole können Sie Tags zu Ihren Streams hinzufügen, aktualisieren, auflisten und entfernen.

**Anzeigen der Tags für einen Stream**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Kinesis-Konsole unter [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis).

1. **Wählen Sie im linken Navigationsbereich Datenstreams aus.**

1. Wählen Sie auf der Seite **Datenstreams** den Stream aus, den Sie taggen möchten.

1. Wählen Sie auf der Seite mit den Stream-Details die Option **Konfiguration** aus.

1. Sehen Sie sich im Abschnitt „**Tags**“ die Tags an, die auf den Stream angewendet wurden.

**Um einen Datenstream mit einem Tag zu erstellen**

1. Öffnen Sie die Kinesis-Data-Streams-Konsole.

1. Wählen Sie im linken Navigationsbereich **Datenströme** aus.

1. Klicken Sie auf **Create data stream (Daten-Stream erstellen)**.

1. Geben Sie auf der Seite **Datenstream erstellen** einen Namen für Ihren Datenstream ein.

1. Wählen Sie für die **Kapazität des Datenstreams** entweder den Modus **On-Demand-Kapazität** oder den Modus **Bereitgestellte** Kapazität aus.

   Weitere Informationen zu den Kapazitätsmodi finden Sie unter[Wählen Sie den richtigen Modus zum Streamen](how-do-i-size-a-stream.md).

1. Gehen Sie im Abschnitt **Tags** wie folgt vor:

   1. Wählen Sie **Neues Tag hinzufügen** aus.

   1. Geben Sie unter **Schlüssel** das Tag ein und geben Sie optional einen Wert in das Feld **Wert** ein.

      Wenn Sie einen Fehler sehen, entspricht entweder der angegebene Tag-Schlüssel oder der Wert nicht den Tag-Einschränkungen. Weitere Informationen finden Sie unter [Verstehen Sie die Einschränkungen von Tags](#tagging-restrictions).

1. Klicken Sie auf **Create data stream (Daten-Stream erstellen)**.

**Um ein Tag in einem Stream hinzuzufügen oder zu aktualisieren**

1. Öffnen Sie die Kinesis-Data-Streams-Konsole.

1. Wählen Sie im linken Navigationsbereich **Datenstreams** aus.

1. Wählen Sie auf der Seite **Datenstreams** den Stream aus, zu dem Sie Tags hinzufügen oder aktualisieren möchten.

1. Wählen Sie auf der Seite mit den Stream-Details die Option **Konfiguration** aus.

1. Wählen Sie im Abschnitt **Tags (Markierungen)** die Option **Manage tags (Tags (Markierungen) verwalten)**.

1. Führen Sie unter **Tags** einen der folgenden Schritte aus:
   + Um ein neues Tag hinzuzufügen, wählen Sie **Neues Tag hinzufügen** aus und geben Sie dann die **Schlüssel** - und **Wertdaten** des Tags ein. Wiederholen Sie diesen Schritt, bis Sie alle Tags hinzugefügt haben.

     Die maximale Anzahl von Tags, die Sie für jeden Stream hinzufügen können, ist 50.
   + Um ein vorhandenes Tag zu aktualisieren, geben Sie einen neuen Tag-Wert in das Feld **Wert** des **Schlüssels** dieses Tags ein.

   Wenn Sie einen Fehler sehen, entspricht entweder der angegebene Tag-Schlüssel oder der Wert nicht den Tag-Einschränkungen. Weitere Informationen finden Sie unter [Verstehen Sie die Einschränkungen von Tags](#tagging-restrictions).

1. Wählen Sie **Änderungen speichern ** aus.

**Entfernen eines Tags von einem Stream**

1. Öffnen Sie die Kinesis-Data-Streams-Konsole.

1. Wählen Sie im linken Navigationsbereich **Datenstreams** aus.

1. Wählen Sie auf der Seite **Datenstreams** den Stream aus, aus dem Sie Tags entfernen möchten.

1. Wählen Sie auf der Seite mit den Stream-Details die Option **Konfiguration** aus.

1. Wählen Sie im Abschnitt **Tags (Markierungen)** die Option **Manage tags (Tags (Markierungen) verwalten)**.

1. Suchen Sie das ****Tag-Schlüssel-Wert-Paar****, das Sie entfernen möchten. Wählen Sie dann **Entfernen** aus.

1. Wählen Sie **Änderungen speichern ** aus.

## Taggen Sie Streams mit dem AWS CLI
<a name="tagging-cli"></a>

Mit dem können Sie Tags zu Ihren Streams hinzufügen, auflisten und entfernen AWS CLI. Beispiele finden Sie in der folgenden Dokumentation.

 [Stream erstellen](https://docs.aws.amazon.com/cli/latest/reference/kinesis/create-stream.html)   
Erzeugt einen Stream mit Tags.

 [add-tags-to-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/add-tags-to-stream.html)   
Fügt Tags für den angegebenen Stream hinzu oder aktualisiert diese.

 [list-tags-for-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/list-tags-for-stream.html)  
Listet die Tags für den angegebenen Stream auf.

 [remove-tags-from-stream](https://docs.aws.amazon.com/cli/latest/reference/kinesis/remove-tags-from-stream.html)  
Entfernt Tags von dem angegebenen Stream.

## Taggen von Streams mithilfe der Kinesis Data Streams APIs
<a name="tagging-api"></a>

Mit den Kinesis Data Streams können Sie Tags zu Ihren Streams hinzufügen, auflisten und entfernen. APIs Beispiele finden Sie in der folgenden Dokumentation:

 [CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)   
Erzeugt einen Stream mit Tags.

 [AddTagsToStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_AddTagsToStream.html)   
Fügt Tags für den angegebenen Stream hinzu oder aktualisiert diese.

 [ListTagsForStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListTagsForStream.html)  
Listet die Tags für den angegebenen Stream auf.

 [RemoveTagsFromStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RemoveTagsFromStream.html)  
Entfernt Tags von dem angegebenen Stream.

## Taggen Sie Verbraucher mit dem AWS CLI
<a name="tagging-consumers-cli"></a>

Sie können Tags für Ihre Verbraucher hinzufügen, auflisten und entfernen, indem Sie die verwenden AWS CLI. Beispiele finden Sie in der folgenden Dokumentation:

[register-stream-consumer](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/register-stream-consumer.html)  
Registriert einen Verbraucher für einen Kinesis-Datenstrom mit Tags. 

[tag-resource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/tag-resource.html)  
Fügt Tags für die angegebene Kinesis-Ressource hinzu oder aktualisiert sie.

[list-tags-for-resource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/list-tags-for-resource.html)  
Listet die Tags für die angegebene Kinesis-Ressource auf.

[untag-resource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesis/untag-resource.html)  
Entfernt Tags aus der angegebenen Kinesis-Ressource.

## Taggen Sie Verbraucher, die Kinesis Data Streams verwenden APIs
<a name="tagging-consumers-api"></a>

Mit den Kinesis Data Streams APIs können Sie Tags für Ihre Verbraucher hinzufügen, auflisten und entfernen. Beispiele finden Sie in der folgenden Dokumentation:

[RegisterStreamConsumer](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_RegisterStreamConsumer.html)  
Registriert einen Verbraucher für einen Kinesis-Datenstrom mit Tags.

[TagResource](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_TagResource.html)  
Fügt Tags für die angegebene Kinesis-Ressource hinzu oder aktualisiert sie.

[ListTagsForResource](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListTagsForResource.html)  
Listet die Tags für die angegebene Kinesis-Ressource auf.

[UntagResource](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UntagResource.html)  
Entfernt Tags aus der angegebenen Kinesis-Ressource.

# Umgang mit großen Datensätzen
<a name="large-records"></a>

Amazon Kinesis Data Streams unterstützt Datensätze mit bis zu 10 Mebibyte (). MiBs Diese Funktion wird für die Verarbeitung intermittierender Datennutzlasten empfohlen, die die standardmäßige Datensatzgrößenbeschränkung von 1 MiB überschreiten. Die standardmäßige maximale Datensatzgröße für bestehende und neu erstellte Streams ist auf 1 MiB festgelegt.

Diese Funktion kommt IoT-Anwendungen (Internet of Things), CDC-Pipelines (Change Data Capture) und Workflows für maschinelles Lernen zugute, die gelegentlich die Verarbeitung größerer Datennutzlasten erfordern. Um mit der Verwendung großer Datensätze in deinem Stream zu beginnen, aktualisiere die maximale Datensatzgrößenbeschränkung für deinen Stream.

**Wichtig**  
Das individuelle Shard-Durchsatzlimit von 1 MB/s für Schreibvorgänge und 2 MB/s für Lesevorgänge bleibt unverändert, wobei größere Datensatzgrößen unterstützt werden. Kinesis Data Streams ist darauf ausgelegt, zeitweise große Datensätze zusammen mit einem Basisdatenverkehr von Datensätzen von weniger als oder gleich 1 MiB zu verarbeiten. Es ist nicht für die dauerhafte Aufnahme großer Datenmengen konzipiert. 

## Aktualisiere deinen Stream, um große Datensätze zu verwenden
<a name="update-stream"></a>

**Um größere Datensätze mit Kinesis Data Streams zu verarbeiten**

1. Navigieren Sie zur Kinesis Data Streams Streams-Konsole.

1. Wählen Sie Ihren Stream aus und wechseln Sie zur Registerkarte **Konfiguration**.

1. Klicke neben **Maximale Datensatzgröße** auf **Bearbeiten**.

1. Stellen Sie Ihre maximale Datensatzgröße ein (bis zu 10 MiB).

1. Speichern Sie Ihre Änderungen.

Mit dieser Einstellung wird nur die maximale Datensatzgröße für diesen Kinesis-Datenstrom angepasst. Bevor Sie diesen Grenzwert erhöhen, stellen Sie sicher, dass alle Downstream-Anwendungen größere Datensätze verarbeiten können.

Sie können diese Einstellung auch über die AWS CLI aktualisieren:

```
aws kinesis update-max-record-size \ --stream-arn  \
        --max-record-size-in-ki-b 5000
```

## Optimiere deine Stream-Leistung mit großen Datensätzen
<a name="optimizing-performance"></a>

Es wird empfohlen, große Datensätze auf weniger als 2% deines gesamten Traffics zu beschränken. In einem Stream hat jeder Shard eine Durchsatzkapazität von 1 MiB pro Sekunde. Um große Datensätze verarbeiten zu können, streamt Kinesis Data bis zu 10 Bursts MiBs, wobei der Durchschnitt bei 1 MiB pro Sekunde liegt. Diese Kapazität zur Unterstützung großer Datensätze wird kontinuierlich wieder in den Stream aufgenommen. Die Geschwindigkeit des Wiederauffüllens hängt von der Größe der großen Datensätze und der Größe des Basisdatensatzes ab. Die besten Ergebnisse erzielen Sie, wenn Sie einen gleichmäßig verteilten Partitionsschlüssel verwenden. Weitere Informationen zur Skalierung von Kinesis On-Demand-Modus finden Sie unter [Funktionen und Anwendungsfälle für den On-Demand-Modus](how-do-i-size-a-stream.html#ondemandmode).

## Reduzieren Sie die Drosselung bei großen Datensätzen
<a name="mitigate-throttling"></a>

**Um der Drosselung entgegenzuwirken**

1. Implementieren Sie die Wiederholungslogik mit exponentiellem Back-off in Ihrer Producer-Anwendung.

1. Verwenden Sie zufällige Partitionsschlüssel, um große Datensätze auf verfügbare Shards zu verteilen.

1. Speichern Sie Payloads in Amazon S3 und senden Sie nur Metadatenverweise an den Stream für kontinuierliche Streams großer Datensätze. Weitere Informationen finden Sie unter [Verarbeiten großer Datensätze mit Amazon Kinesis Data Streams](https://aws.amazon.com/blogs/big-data/processing-large-records-with-amazon-kinesis-data-streams/).

## Verarbeiten Sie große Datensätze mit den Kinesis Data Streams APIs
<a name="records-apis"></a>

Die Unterstützung großer Datensätze führt eine neue API ein und aktualisiert zwei bestehende Steuerungsebenen, sodass bis APIs zu 10 MiBs Datensätze verarbeitet werden können.

API zum Ändern der Datensatzgröße:
+ `UpdateMaxRecordSize`: Konfiguriert die maximale Datensatzgrößenbeschränkung für bestehende Streams auf bis zu 10. MiBs

Aktualisierungen APIs vorhandener:
+ `CreateStream`: Fügt den optionalen `MaxRecordSizeInKiB` Parameter für die Festlegung von Größenbeschränkungen für Datensätze während der Stream-Erstellung hinzu.
+ `DescribeStreamSummary`: Gibt das `MaxRecordSizeInKiB` Feld zurück, das die aktuelle Stream-Konfiguration anzeigt.

Alle APIs aufgelisteten Produkte behalten die Abwärtskompatibilität für bestehende Streams bei. Eine vollständige API-Dokumentation finden Sie in der [Amazon Kinesis Data Streams Service API-Referenz.](https://docs.aws.amazon.com/kinesis/latest/APIReference/Welcome.html)

## AWS Komponenten, die mit großen Datensätzen kompatibel sind
<a name="record-compatability"></a>

Die folgenden AWS Komponenten sind mit großen Datensätzen kompatibel:


| Komponente | Description | 
| --- | --- | 
|  AWS SDK | AWS Das SDK unterstützt den Umgang mit großen Datensätzen. Sie können die maximale Datensatzgröße Ihres Streams auf bis zu 10 MiB aktualisieren, indem Sie die verfügbaren Methoden in der verwenden. AWS SDKs Weitere Informationen finden Sie unter [Diesen Dienst mit einem AWS SDK verwenden](https://docs.aws.amazon.com/streams/latest/dev/sdk-general-information-section.html). | 
|  Kinesis Consumer Library (KCL) | Ab Version 2.x unterstützt KCL die Verarbeitung großer Datensätze. Um die Unterstützung großer Datensätze zu verwenden, aktualisieren Sie `maxRecordSize` den Stream und verwenden Sie KCL. Weitere Informationen finden Sie unter [Verwenden der Kinesis-Clientbibliothek](https://docs.aws.amazon.com/streams/latest/dev/kcl.html). | 
|  Kinesis Producer-Bibliothek (KPL) | Ab Version 1.0.5 unterstützt KPL die Verarbeitung großer Datensätze. Um die Unterstützung großer Datensätze zu verwenden, aktualisieren Sie maxRecordSize den Stream und verwenden Sie KPL. Weitere Informationen finden Sie unter [Entwickeln von Produzenten mithilfe der Amazon Kinesis Producer Library (KPL](https://docs.aws.amazon.com/streams/latest/dev/developing-producers-with-kpl.html)). | 
|  Amazon EMR | Amazon EMR mit Apache Spark unterstützt die Verarbeitung großer Datensätze bis zum Kinesis Data Streams Streams-Limit (10 MiBs). Verwenden Sie die Funktion, um die Unterstützung großer Datensätze zu verwenden. `readStream` Weitere Informationen finden Sie unter Integration von [Amazon EMR und Amazon Kinesis](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-kinesis.html). | 
|  Amazon Data Firehose | Bei Verwendung mit Kinesis Data Streams hängt das Verhalten von Amazon Data Firehose bei großen Datensätzen vom Lieferziel ab: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/streams/latest/dev/large-records.html) Bei Anwendungen, die eine Lieferung an Snowflake oder Redshift mit großen Datensätzen erfordern, stellen Sie die Daten zuerst an Amazon S3 bereit. Verwenden Sie anschließend die ETL-Prozesse (Extract, Transform, Load), um die Daten zu laden. Testen Sie bei allen anderen Zielen das Verhalten mit großen Datensätzen in einer proof-of-concept Umgebung, bevor Sie die Skalierung auf die Produktionsnutzung durchführen. Der Umgang mit großen Datensätzen ist je nach Ziel unterschiedlich.   | 
|  AWS Lambda | AWS Lambda unterstützt bis zu 6 MiBs Nutzlasten. Dieses Limit umfasst die Kinesis-Payload, die in die Base-64-Kodierung konvertiert wurde, und die Metadaten, die mit Event Source Mapping (ESM) verknüpft sind. Bei Datensätzen unter 6 verarbeitet Lambda sie mit ESM MiBs, ohne dass eine zusätzliche Konfiguration erforderlich ist. Bei Datensätzen, die größer als 6 sind MiBs, verarbeitet Lambda sie unter Verwendung eines Ziels für den Fall eines Fehlers. Sie müssen mithilfe von ESM ein Ziel für den Fall eines Fehlers konfigurieren, um Datensätze zu verarbeiten, die die Verarbeitungsgrenzen von Lambda überschreiten. Jedes Ereignis, das an das Ziel bei einem Fehler gesendet wird, ist ein JSON-Dokument, das Metadaten zum fehlgeschlagenen Aufruf enthält. Es wird empfohlen, unabhängig von der Datensatzgröße ein Ziel für den Fall eines Fehlers im ESM zu erstellen. Dadurch wird sichergestellt, dass keine Datensätze verworfen werden. Weitere Informationen finden Sie unter [Ziele für fehlgeschlagene Aufrufe konfigurieren](https://docs.aws.amazon.com/lambda/latest/dg/kinesis-on-failure-destination.html#kinesis-on-failure-destination-console). | 
|  Amazon Redshift | Amazon Redshift unterstützt beim Streamen von Daten aus Kinesis Data Streams nur Datensatzgrößen von weniger als 1 MiB. Datensätze, die dieses Limit überschreiten, werden nicht verarbeitet. Datensätze, die nicht verarbeitet werden, werden protokolliert als`sys_stream_scan_errors`. Weitere Informationen finden Sie unter [SYS\$1STREAM\$1SCAN\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_SYS_STREAM_SCAN_ERRORS.html). | 
|  Flink-Anschluss für Kinesis Data Streams | Es gibt zwei Ansätze für die Nutzung von Daten aus Kinesis Data Streams: den Kinesis-Quellkonnektor und den Kinesis-Sink-Connector. Der Quellanschluss unterstützt die Verarbeitung von Datensätzen mit weniger als 1 MiB und bis zu 10. MiBs Verwenden Sie den Senkenanschluss nicht für Aufzeichnungen, die größer als 1 MiB sind. Weitere Informationen finden Sie unter [Verwenden von Konnektoren zum Verschieben von Daten in Amazon Managed Service für Apache Flink mit der DataStream API](https://docs.aws.amazon.com/managed-flink/latest/java/how-connectors.html). | 

## Regionen, in denen große Datensätze unterstützt werden
<a name="supported-regions"></a>

Diese Amazon Kinesis Data Streams Streams-Funktion ist nur in den folgenden AWS Regionen verfügbar:


| AWS Region | Name der Region | 
| --- | --- | 
|  eu-north-1 | Europa (Stockholm) | 
|  me-south-1 | Middle East (Bahrain) | 
|  ap-south-1 | Asien-Pazifik (Mumbai) | 
|  eu-west-3 | Europa (Paris) | 
|  ap-southeast-3 | Asien-Pazifik (Jakarta) | 
|  us-east-2 | USA Ost (Ohio) | 
|  af-south-1 | Afrika (Kapstadt) | 
|  eu-west-1 | Europa (Irland) | 
|  me-central-1 | Naher Osten (VAE) | 
|  eu-central-1 | Europa (Frankfurt) | 
|  sa-east-1 | Südamerika (São Paulo) | 
|  ap-east-1 | Asien-Pazifik (Hongkong) | 
|  ap-south-2 | Asien-Pazifik (Hyderabad) | 
|  us-east-1 | USA Ost (Nord-Virginia) | 
|  ap-northeast-2 | Asien-Pazifik (Seoul) | 
|  ap-northeast-3 | Asien-Pazifik (Osaka) | 
|  eu-west-2 | Europa (London) | 
|  ap-southeast-4 | Asien-Pazifik (Melbourne) | 
|  ap-northeast-1 | Asien-Pazifik (Tokio) | 
|  us-west-2 | USA West (Oregon) | 
|  us-west-1 | USA West (Nordkalifornien) | 
|  ap-southeast-1 | Asien-Pazifik (Singapur) | 
|  ap-southeast-2 | Asien-Pazifik (Sydney) | 
|  il-central-1 | Israel (Tel Aviv) | 
|  ca-central-1 | Kanada (Zentral) | 
|  ca-west-1 | Kanada West (Calgary) | 
|  eu-south-2 | Europa (Spain) | 
|  cn-northwest-1 | China (Ningxia) | 
|  eu-central-2 | Europa (Zürich) | 
| us-gov-east-1 | AWS GovCloud (US-Ost) | 
| us-gov-west-1 | AWS GovCloud (US-West) | 

# Führen Sie Resilienztests durch mit AWS Fault Injection Service
<a name="kinesis-fis"></a>

AWS Fault Injection Service ist ein vollständig verwalteter Service, der Sie bei der Durchführung von Fault-Injection-Experimenten für Ihre AWS Workloads unterstützt. AWS FIS Die Integration mit Amazon Kinesis Data Streams ermöglicht es Ihnen, die Widerstandsfähigkeit Ihrer Anwendung gegenüber häufigen Amazon Kinesis Data Streams Streams-API-Fehlern in einer kontrollierten Umgebung zu testen. Mit dieser Funktion können Sie die Fehlerbehandlung überprüfen, die Logik wiederholen und Systeme überwachen, bevor Fehler auftreten. Weitere Informationen finden Sie unter [Was ist AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) .

**Aktionen**
+ Interner API-Fehler: Dadurch werden interne Fehler in Anfragen der IAM-Zielrolle eingefügt. Die spezifische Antwort hängt von jedem Dienst und jeder API ab. Die Aktion `aws:fis:inject-api-internal-error` erzeugt `InternalFailure` Fehler (HTTP 500).
+ API-Drosselungsfehler: Dadurch werden interne Fehler in Anfragen der IAM-Zielrolle eingefügt. Die spezifische Antwort hängt von jedem Dienst und jeder API ab. Die Aktion `aws:fis:inject-api-throttle-error` erzeugt `ThrottlingException` Fehler (HTTP 400).
+ Fehler „API nicht verfügbar“: Dadurch werden interne Fehler in Anfragen der IAM-Zielrolle eingefügt. Die spezifische Antwort hängt von jedem Dienst und jeder API ab. Die Aktion `aws:fis:inject-api-unavailable-error` erzeugt `ServiceUnavailable` Fehler (HTTP 503).
+ Von der API bereitgestellte Durchsatzausnahme: Dadurch werden interne Fehler in Anfragen der IAM-Zielrolle eingefügt. Die spezifische Antwort hängt von jedem Dienst und jeder API ab. Die Aktion `aws:kinesis:inject-api-provisioned-throughput-exception` erzeugt `ProvisionedThroughputExceededException` Fehler (HTTP 400).
+ Ausnahme für abgelaufene API-Iteratoren: Dadurch werden interne Fehler in Anfragen eingefügt, die von der IAM-Zielrolle gestellt wurden. Die spezifische Antwort hängt von jedem Dienst und jeder API ab. Die Aktion `aws:kinesis:inject-api-expired-iterator-exception` erzeugt `ExpiredIteratorException` Fehler (HTTP 400). 

Weitere Informationen finden Sie unter [Amazon Kinesis Data Streams Streams-Aktionen](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#aws-kinesis-actions).

**Überlegungen**
+ Sie können die oben genannten Aktionen sowohl für bereitgestellte als auch für On-Demand-Angebote für Amazon Kinesis Data Streams verwenden.
+ Ihr Streaming wird nach Abschluss des Experiments auf der Grundlage der ausgewählten Dauer fortgesetzt. Sie können ein laufendes Experiment auch beenden, bevor es abgeschlossen ist. Alternativ können Sie eine Stoppbedingung definieren, um das Experiment auf der Grundlage von Alarmen zu beenden, die den Zustand der Anwendung in einer Amazon CloudWatch Application Insights definieren.
+ Sie können bis zu 280 Streams testen.

Weitere Informationen zum regionalen Support finden Sie unter [AWS Fault Injection Service Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/fis.html).

# Ausnahmefehler beim bereitgestellten Durchsatz
<a name="kinesis-fis-provisioned-throughput"></a>

Ausnahmefehler mit Überschreitung des bereitgestellten Durchsatzes (HTTP 400) treten auf, wenn die Anforderungsrate für einen Kinesis-Stream die Durchsatzgrenzen eines oder mehrerer Shards überschreitet. Jeder Shard hat spezifische Lese- und Schreibkapazitätsgrenzen, und eine Überschreitung dieser Grenzwerte löst diese Ausnahme aus. Zu den Szenarien, die zu dieser Ausnahme führen, gehören: plötzliche Spitzen bei der Datenaufnahme oder beim Datenverbrauch, unzureichende Shard-Kapazität für das zu verarbeitende Datenvolumen oder ungleichmäßige Verteilung der Partitionsschlüssel.

**Empfehlungen für den Umgang mit Ausnahmen**
+ Implementieren Sie exponentielle Back-off- und Wiederholungsmechanismen.
+ Erhöhen Sie die Anzahl der Shards, um einen höheren Durchsatz zu erreichen.
+ Stellen Sie sicher, dass die Partitionsschlüssel ordnungsgemäß verteilt sind.
+ Überwachen Sie die Stream-Metriken.

Darüber hinaus hilft die Verwendung des On-Demand-Kapazitätsmodus von Kinesis dabei, Workloads automatisch anzupassen und das Auftreten dieser Ausnahme zu minimieren. Weitere Informationen finden Sie unter [Was ist AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Anmerkung**  
Probleme mit unsachgemäßer Verteilung liegen außerhalb der Möglichkeiten der automatischen Skalierung im On-Demand-Modus.

**Um ein einfaches Experiment durchzuführen**

1. Verwenden Sie Basismetriken: Zeichnen Sie vor dem Testen normale Durchsatzmuster auf.

1. Erstellen Sie ein Experiment: Verwenden Sie die `aws:kinesis:inject-api-provisioned-throughput-exception` Aktion.

1. Konfigurieren Sie die Intensität: Beginnen Sie mit einer Anforderungsdrosselung von 25%.

1. Überwachen Sie die Antworten: Überprüfen Sie die Wiederholungslogik mit exponentiellem Back-off.

1. Überprüfen Sie die Skalierung: Vergewissern Sie sich, dass die auto-scaling die Aktivierung auslöst.

1. Überprüfen Sie die Alarme: Stellen Sie sicher, dass die `CloudWatch` Alarme wie erwartet laufen.

Die Anwendungen sollten geeignete Back-off-Strategien`WriteProvisionedThroughputExceeded`, Überwachungs- und `ReadProvisionedThroughputExceeded` Metriken implementieren und gegebenenfalls eine Shard-Skalierung auslösen.

**Einzelheiten der Aktion**
+ **Ressourcentyp**: IAM-Rolle ARN
+ **Zieloperationen**:`PutRecord`,, `PutRecords` `GetRecords`
+ ****Fehlercode****: `ProvisionedThroughputExceededException` (HTTP 400)
+ ****Beschreibung****: simuliert Szenarien, in denen die Anforderungsrate die Kapazitätsgrenzen der Shards überschreitet, und testet die Drosselung von Anwendungen und die Skalierung der Antworten.

**Parameters**
+ **IAM-Rolle ARN**: Die Rolle, die Ihre Anwendung für Kinesis Data Streams Streams-Operationen verwendet.
+ **Operationen**: Zieloperationen:`PutRecord`,,`PutRecords`. `GetRecords`
+ **Ressourcenliste**: die spezifischen Stream-Namen oder Shard-Identifikatoren.
+ **Dauer**: Die Versuchsdauer, d. h. die Dauer zwischen einer Minute und 12 Stunden. In der AWS FIS API ist der Wert eine Zeichenfolge im ISO 8601-Format. PT1M steht beispielsweise für eine Minute. In der AWS FIS Konsole geben Sie die Anzahl der Sekunden, Minuten oder Stunden ein.
+ **Intensität**: Der Prozentsatz der Drosselungsanfragen.

**Erforderliche Berechtigungen**
+ `kinesis:InjectApiError`

Beispiel für eine Versuchsvorlage

 Das folgende Beispiel zeigt eine bereitgestellte Durchsatzausnahme für alle Anfragen bis zu 5 Kinesis Data-Streams mit dem angegebenen Tag. AWS FIS wählt die Streams, die beeinflusst werden sollen, nach dem Zufallsprinzip aus. Nach 5 Minuten ist der Fehler behoben.

```
{
    "description": "Kinesis stream experiment",
    "targets": {
        "KinesisStreams-Target-1": {
            "resourceType": "aws:kinesis:stream",
            "resourceTags": {
                   "tag-key": "tag-value"
            },
            "selectionMode": "COUNT(5)"
        }
    },
    "actions": {
         "kinesis": {
              "actionId": "aws:kinesis:stream-provisioned-throughput-exception",
              "description": "my-stream",
              "parameters": {
                   "duration": "PT5M",
                   "percentage": "100",
                   "service": "kinesis"
              },
              "targets": {
                    "KinesisStreams": "KinesisStreams-Target-1"
              }
         }
   },
   "stopConditions": [
         {
              "source": "none"
         }
   ],
   "roleArn": "arn:aws:iam::111122223333:role/role-name",
   "tags": {},
   "experimentOptions": {
       "accountTargeting": "single-account",
       "emptyTargetResolutionMode": "fail"
   }    
}
```

Beispiel für ein Experiment, Rollenberechtigungen

Mit der folgenden Berechtigung können Sie die `aws:kinesis:stream-expired-iterator-exception` Aktionen `aws:kinesis:stream-provisioned-throughput-exception` und für einen bestimmten Stream ausführen, die sich auf 50% der Anfragen auswirken.

# Exception-Fehler im abgelaufenen Iterator
<a name="kinesis-fis-expired-iterator"></a>

 Ausnahmefehler bei abgelaufenen Iteratoren (HTTP 400) treten auf, wenn der Shard-Iterator abgelaufen ist und beim Aufruf nicht mehr zum Abrufen von Stream-Datensätzen verwendet wird. `GetRecords` Dies tritt auf, wenn es zu Verzögerungen zwischen Lesevorgängen kommt, die durch lang andauernde Datenverarbeitungsaufgaben, Netzwerkprobleme oder Anwendungsausfälle verursacht werden. 

**Anmerkung**  
Ein Shard-Iterator ist ab dem Zeitpunkt seiner Ausgabe noch 5 Minuten gültig.

**Empfehlungen für den Umgang mit Ausnahmen**
+ Shard-Iteratoren werden aktualisiert, bevor sie ablaufen.
+ Integration der Fehlerbehandlung, um neue Iteratoren zu erhalten.
+ Verwendung der Kinesis Kinesis Client Library (KCL), die den Ablauf des Shard-Iterators automatisch verwaltet.

[Weitere Informationen finden Sie unter Was ist? AWS Fault Injection Service](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Um ein einfaches Experiment durchzuführen**

1. Erstellen Sie eine Experimentvorlage: Verwenden Sie die AWS FIS Konsole. 

1. Wählen Sie die Aktion aus: Verwenden Sie die `aws:kinesis:inject-api-expired-iterator-exception` Aktion.

1. Konfigurieren Sie die Ziele: Geben Sie die IAM-Rolle und die Kinesis Data Streams-Operationen an. 

1. Legen Sie die Dauer fest: Beginnen Sie mit 5-10 Minuten für die ersten Tests. 

1. Stoppbedingungen hinzufügen: [Stoppbedingungen für AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html).

1. Führen Sie das Experiment aus: Überwachen Sie das Verhalten der Anwendung.

**Einzelheiten zur Aktion**
+ **Ressourcentyp**: IAM-Rolle ARN
+ **Zieloperationen**: `GetRecords`
+ ****Fehlercode****: `ExpiredIteratorException` (HTTP 400)
+ ****Beschreibung****: Der bereitgestellte Iterator überschreitet das zulässige Höchstalter und simuliert Szenarien, in denen die Verarbeitung von Datensätzen zu langsam ist oder die Checkpoint-Logik fehlschlägt.

**Parameters**
+ **IAM-Rolle ARN**: Die Rolle, die Ihre Anwendung für Kinesis Data Streams Streams-Operationen verwendet.
+ **Operationen**: Zieloperationen: `GetRecords`
+ **Ressourcenliste**: die spezifischen Stream-Namen oder ARNs.
+ **Dauer**: Die Dauer des Experiments. Dies ist konfigurierbar. 
+ **Intensität**: Der Prozentsatz der Drosselungsanfragen.

**Erforderliche Berechtigungen**
+ `kinesis:InjectApiError`