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.
In diesem Abschnitt wird beschrieben, wie Sie mit der Amazon-DynamoDB-Konsole oder AWS Command Line Interface (AWS CLI) eine globale Tabelle erstellen.
Themen
Gehen Sie wie folgt vor, um eine globale Tabelle mit dem zu erstellen AWS Management Console. Das folgende Beispiel erstellt eine globale Tabelle mit Replikattabellen in den USA und Europa.
-
Öffnen Sie die DynamoDB-Konsole zu Hausehttps://console.aws.amazon.com/dynamodb/.
Wählen Sie für dieses Beispiel die Region USA Ost (Ohio) aus. -
Klicken Sie im Navigationsbereich auf der linken Seite der Konsole auf Tables (Tabellen).
-
Wählen Sie Create Table (Tabelle erstellen) aus.
-
Gehen Sie auf der Seite Tabelle erstellen wie folgt vor:
-
Geben Sie für Table name (Tabellenname)
Music
ein. -
Geben Sie für Partition key (Partitionsschlüssel) den Wert
Artist
ein. -
Geben Sie als Sortierschlüssel ein
SongTitle
. -
Behalten Sie die Standardauswahl von Zeichenfolge sowohl für den Partitionsschlüssel als auch für den Sortierschlüssel bei.
-
Behalten Sie die anderen Standardauswahlen auf der Seite bei und wählen Sie dann Tabelle erstellen.
Diese neue Tabelle dient als erste Replikattabelle in einer neuen globalen Tabelle. Sie ist der Prototyp für andere Replikattabellen, die Sie später hinzufügen.
-
-
Wählen Sie auf der Seite „Tabellen“ die neu erstellte Tabelle „Musik“ aus und gehen Sie dann wie folgt vor:
-
Wählen Sie den Tab „Globale Tabellen“ und anschließend „Replikat erstellen“.
-
Wählen Sie in der Dropdownliste Verfügbare Replikationsregionen die Option US West (Oregon) us-west-2 aus.
Die Konsole überprüft, ob in der ausgewählten Region keine Tabelle mit demselben Namen existiert. Wenn eine Tabelle mit demselben Namen vorhanden ist, müssen Sie die vorhandene Tabelle löschen, bevor Sie eine neue Replikattabelle in der betreffenden Region erstellen können.
-
Wählen Sie Create replica (Replikat erstellen). Dadurch wird der Tabellenerstellungsprozess in der Region USA West (Oregon) us-west-2 gestartet.
Auf der Registerkarte Globale Tabellen für die Tabelle Music (und für alle anderen Replikattabellen) wird angezeigt, dass die Tabelle in mehreren Regionen repliziert wurde.
-
Fügen Sie eine weitere Region hinzu, sodass Ihre globale Tabelle in den Vereinigte Staaten und Europa repliziert und synchronisiert wird. Wiederholen Sie dazu Schritt 5.b, geben Sie diesmal jedoch Europe (Frankfurt) eu-central-1 statt US West (Oregon) us-west-2 an.
-
-
Stellen Sie sicher, dass Sie immer noch die Region USA Ost ( AWS Management Console Ohio) verwenden. Führen Sie dann die folgenden Schritte aus:
-
Wählen Sie Explore Table Items (Tabellenelemente erkudnen) aus.
-
Wählen Sie Create item (Element erstellen) aus.
-
Machen Sie für Artist die Eingabe
item_1
. -
Geben Sie unter SongTitle den Wert
Song Value 1
ein. -
Um den Artikel zu speichern, wählen Sie Element erstellen.
-
-
Nach kurzer Zeit wird das Element in allen drei Regionen Ihrer globalen Tabelle repliziert. Um dies zu verifizieren, klicken Sie in der Konsole auf die Regionsauswahl in der Ecke rechts oben und wählen Sie Europa (Frankfurt) aus. Die Musiktabelle in Europa (Frankfurt) sollte das neue Objekt enthalten.
-
Wiederholen Sie Schritt 7 und wählen Sie US West (Oregon) aus, um die Replikation in dieser Region zu überprüfen.
Gehen Sie wie folgt vor, um eine globale Tabelle mit dem Namen Music
mit der AWS CLI zu erstellen. Das folgende Beispiel erstellt eine globale Tabelle mit Replikattabellen in den USA und Europa.
-
Erstellen Sie eine neue Tabelle (
Music
) in USA Ost (Ohio) mit aktivierter DynamoDB Streams (NEW_AND_OLD_IMAGES
) enthalten.aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode PAY_PER_REQUEST \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-2
-
Erstellen eines identischen
Music
-Tabelle in USA Ost (Nord-Virginia).aws dynamodb update-table --table-name Music --cli-input-json \ '{ "ReplicaUpdates": [ { "Create": { "RegionName": "us-east-1" } } ] }' \ --region=us-east-2
-
Wiederholen Sie Schritt 2, um eine Tabelle in Europa (Irland) zu erstellen.
-
Sie können die Liste der erstellten Replikate mit
describe-table
anzeigen.aws dynamodb describe-table --table-name Music --region us-east-2
-
Fügen Sie der Tabelle
Music
in der Region USA Ost (Ohio) ein neues Element hinzu, um zu überprüfen, ob die Replikation funktioniert.aws dynamodb put-item \ --table-name Music \ --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-2
-
Warten Sie einige Sekunden und überprüfen Sie, ob das Element erfolgreich in den Regionen USA Ost (Nord-Virginia) und Europa (Irland) repliziert wurde.
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region us-east-1
aws dynamodb get-item \ --table-name Music \ --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \ --region eu-west-1
-
Löschen Sie die Replikattabelle in der Region Europa (Irland).
aws dynamodb update-table --table-name Music --cli-input-json \ '{ "ReplicaUpdates": [ { "Delete": { "RegionName": "eu-west-1" } } ] }'
Der folgende Java-Beispielcode erstellt eine Music
-Tabelle in der Region Europa (Irland) und dann ein Replikat in der Region Asien-Pazifik (Seoul).
package com.amazonaws.codesamples.gtv2
import java.util.logging.Logger;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.BillingMode;
import com.amazonaws.services.dynamodbv2.model.CreateReplicationGroupMemberAction;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.DescribeTableRequest;
import com.amazonaws.services.dynamodbv2.model.GlobalSecondaryIndex;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.Projection;
import com.amazonaws.services.dynamodbv2.model.ProjectionType;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughputOverride;
import com.amazonaws.services.dynamodbv2.model.ReplicaGlobalSecondaryIndex;
import com.amazonaws.services.dynamodbv2.model.ReplicationGroupUpdate;
import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;
import com.amazonaws.services.dynamodbv2.model.StreamSpecification;
import com.amazonaws.services.dynamodbv2.model.StreamViewType;
import com.amazonaws.services.dynamodbv2.model.UpdateTableRequest;
import com.amazonaws.waiters.WaiterParameters;
public class App
{
private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
public static void main( String[] args )
{
String tableName = "Music";
String indexName = "index1";
Regions calledRegion = Regions.EU_WEST_1;
Regions destRegion = Regions.AP_NORTHEAST_2;
AmazonDynamoDB ddbClient = AmazonDynamoDBClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider("default"))
.withRegion(calledRegion)
.build();
LOGGER.info("Creating a regional table - TableName: " + tableName +", IndexName: " + indexName + " .....");
ddbClient.createTable(new CreateTableRequest()
.withTableName(tableName)
.withAttributeDefinitions(
new AttributeDefinition()
.withAttributeName("Artist").withAttributeType(ScalarAttributeType.S),
new AttributeDefinition()
.withAttributeName("SongTitle").withAttributeType(ScalarAttributeType.S))
.withKeySchema(
new KeySchemaElement().withAttributeName("Artist").withKeyType(KeyType.HASH),
new KeySchemaElement().withAttributeName("SongTitle").withKeyType(KeyType.RANGE))
.withBillingMode(BillingMode.PAY_PER_REQUEST)
.withGlobalSecondaryIndexes(new GlobalSecondaryIndex()
.withIndexName(indexName)
.withKeySchema(new KeySchemaElement()
.withAttributeName("SongTitle")
.withKeyType(KeyType.HASH))
.withProjection(new Projection().withProjectionType(ProjectionType.ALL)))
.withStreamSpecification(new StreamSpecification()
.withStreamEnabled(true)
.withStreamViewType(StreamViewType.NEW_AND_OLD_IMAGES)));
LOGGER.info("Waiting for ACTIVE table status .....");
ddbClient.waiters().tableExists().run(new WaiterParameters<>(new DescribeTableRequest(tableName)));
LOGGER.info("Testing parameters for adding a new Replica in " + destRegion + " .....");
CreateReplicationGroupMemberAction createReplicaAction = new CreateReplicationGroupMemberAction()
.withRegionName(destRegion.getName())
.withGlobalSecondaryIndexes(new ReplicaGlobalSecondaryIndex()
.withIndexName(indexName)
.withProvisionedThroughputOverride(new ProvisionedThroughputOverride()
.withReadCapacityUnits(15L)));
ddbClient.updateTable(new UpdateTableRequest()
.withTableName(tableName)
.withReplicaUpdates(new ReplicationGroupUpdate()
.withCreate(createReplicaAction.withKMSMasterKeyId(null))));
}
}