AWS::DynamoDB::GlobalTable - AWS CloudFormation

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.

AWS::DynamoDB::GlobalTable

Die AWS::DynamoDB::GlobalTable-Ressource ermöglicht es Ihnen, eine globale Tabelle der Version 2019.11.21 zu erstellen und zu verwalten. Diese Ressource kann nicht zum Erstellen oder Verwalten einer globalen Tabelle der Version 2017.11.29 verwendet werden. Weitere Informationen finden Sie unter Globale Tabellen.

Wichtig

Sie können eine Ressource des Typs AWS::DynamoDB::Table nicht in eine Ressource des Typs AWS::DynamoDB::GlobalTable konvertieren, indem Sie den Typ in Ihrer Vorlage ändern. Dies kann dazu führen, dass Ihre DynamoDB-Tabelle gelöscht wird.

Sie können stattdessen die GlobalTable Ressource verwenden, um eine neue Tabelle in einer einzelnen Region zu erstellen. Dies wird genauso abgerechnet wie eine einzelne Regionstabelle. Wenn Sie den Stack später aktualisieren, um weitere Regionen hinzuzufügen, gelten die Preise für globale Tabellen.

Sie sollten bei der Arbeit mit globalen DynamoDB-Tabellen die folgenden Verhaltensweisen beachten.

  • Der IAM-Prinzipal, der den Stack-Vorgang ausführt, muss die unten aufgeführten Berechtigungen in allen Regionen haben, in denen Sie ein globales Tabellen-Replikat haben möchten. Die Berechtigungen des IAM-Prinzipals sollten keine Einschränkungen basierend auf der IP-Quelladresse haben. Einige Vorgänge mit globalen Tabellen (z. B. das Hinzufügen eines Replikats) sind asynchron und erfordern, dass der IAM-Prinzipal gültig ist, bis sie abgeschlossen sind. Sie sollten den Prinzipal (Benutzer oder IAM-Rolle) erst löschen, wenn die Aktualisierung Ihres Stacks abgeschlossen CloudFormation hat.

    • dynamodb:CreateTable

    • dynamodb:UpdateTable

    • dynamodb:DeleteTable

    • dynamodb:DescribeContinuousBackups

    • dynamodb:DescribeContributorInsights

    • dynamodb:DescribeTable

    • dynamodb:DescribeTableReplicaAutoScaling

    • dynamodb:DescribeTimeToLive

    • dynamodb:ListTables

    • dynamodb:UpdateTimeToLive

    • dynamodb:UpdateContributorInsights

    • dynamodb:UpdateContinuousBackups

    • dynamodb:ListTagsOfResource

    • dynamodb:TagResource

    • dynamodb:UntagResource

    • dynamodb:BatchWriteItem

    • dynamodb:CreateTableReplica

    • dynamodb:DeleteItem

    • dynamodb:DeleteTableReplica

    • dynamodb:DisableKinesisStreamingDestination

    • dynamodb:EnableKinesisStreamingDestination

    • dynamodb:GetItem

    • dynamodb:PutItem

    • dynamodb:Query

    • dynamodb:Scan

    • dynamodb:UpdateItem

    • dynamodb:DescribeTableReplicaAutoScaling

    • dynamodb:UpdateTableReplicaAutoScaling

    • iam:CreateServiceLinkedRole

    • kms:CreateGrant

    • kms:DescribeKey

    • application-autoscaling:DeleteScalingPolicy

    • application-autoscaling:DeleteScheduledAction

    • application-autoscaling:DeregisterScalableTarget

    • application-autoscaling:DescribeScalingPolicies

    • application-autoscaling:DescribeScalableTargets

    • application-autoscaling:PutScalingPolicy

    • application-autoscaling:PutScheduledAction

    • application-autoscaling:RegisterScalableTarget

  • Wenn Sie den bereitgestellten Abrechnungsmodus verwenden, erstellt eine Auto- CloudFormation Scaling-Richtlinie für jedes Ihrer Replikate, um deren Schreibkapazitäten zu steuern. Sie müssen diese Richtlinie mit der -WriteProvisionedThroughputSettingsEigenschaft konfigurieren. CloudFormation stellt sicher, dass alle Replikate dieselbe Eigenschaft für die automatische Skalierung der Schreibkapazität haben. Sie können nicht direkt einen Wert für die Schreibkapazität für eine globale Tabelle angeben.

  • Wenn Ihre Tabelle bereitgestellte Kapazität verwendet, müssen Sie die automatische Skalierung direkt in der AWS::DynamoDB::GlobalTable-Ressource konfigurieren. Sie sollten keine zusätzlichen Richtlinien der automatischen Skalierung für die Tabellen-Replikate oder globalen sekundären Indizen konfigurieren, weder über die API noch über AWS::ApplicationAutoScaling::ScalableTarget oder AWS::ApplicationAutoScaling::ScalingPolicy. Dieser kann daher zu einem unerwarteten Verhalten führen und wird nicht unterstützt.

  • In wird AWS CloudFormation jede globale Tabelle unabhängig von der Anzahl der Replikate von einem einzelnen Stack in einer einzelnen Region gesteuert. Wenn Sie Ihre Vorlage bereitstellen, CloudFormation erstellt/aktualisiert alle Replikate als Teil eines einzigen Stack-Vorgangs. Sie sollten nicht dieselbe AWS::DynamoDB::GlobalTable-Ressource in mehreren Regionen bereitstellen. Dies führt zu Fehlern und wird nicht unterstützt. Wenn Sie Ihre Anwendungsvorlage in mehreren Regionen bereitstellen, können Sie Bedingungen verwenden, um die Ressource nur in einer einzigen Region zu erstellen. Alternativ können Sie Ihre AWS::DynamoDB::GlobalTable-Ressourcen in einem Stack getrennt von Ihrem Anwendungs-Stack auswählen, und sicherstellen, dass er nur in einer einzigen Region bereitgestellt wird.

Syntax

Um diese Entität in Ihrer AWS CloudFormation Vorlage zu deklarieren, verwenden Sie die folgende Syntax:

Eigenschaften

AttributeDefinitions

Eine Liste von Attributen, die das Schlüsselschema für die globalen Tabelle und die Indizes beschreiben.

Erforderlich: Ja

Typ : Array von AttributeDefinition

Minimum: 1

Aktualisierung erfordert: Keine Unterbrechung

BillingMode

Gibt an, wie Ihnen der Lese- und Schreibdurchsatz in Rechnung gestellt wird und wie Sie die Kapazität verwalten. Gültige Werte für sind:

  • PAY_PER_REQUEST

  • PROVISIONED

Alle Replikate in Ihrer globalen Tabelle haben denselben Abrechnungsmodus. Wenn Sie den Abrechnungsmodus PROVISIONED verwenden, müssen Sie über die Eigenschaft WriteProvisionedThroughputSettings eine Konfiguration der automatischen Skalierung bereitstellen. Standardmäßig wird der Wert dieser Eigenschaft auf PROVISIONED gesetzt.

Required: No

Typ: Zeichenfolge

Allowed values: PROVISIONED | PAY_PER_REQUEST

Aktualisierung erfordert: Keine Unterbrechung

GlobalSecondaryIndexes

Globale sekundäre Indizen, die in der globalen Tabelle erstellt werden sollen. Sie können bis zu 20 globale sekundäre Indizen erstellen. Jedes Replikat in Ihrer globalen Tabelle hat dieselben globalen sekundären Index-Einstellungen. Sie können nur einen globalen sekundären Index in einem einzigen Stack-Vorgang erstellen oder löschen.

Da das Auffüllen eines Index lange dauern kann, wartet CloudFormation nicht, bis der Index aktiv wird. Wenn ein Stack-Vorgang zurückgesetzt wird, CloudFormation löscht möglicherweise keinen Index, der hinzugefügt wurde. In diesem Fall müssen Sie den Index manuell löschen.

Required: No

Typ : Array von GlobalSecondaryIndex

Aktualisierung erfordert: Keine Unterbrechung

KeySchema

Gibt die Attribute an, die den Primärschlüssel für die Tabelle darstellen. Die Attribute in der KeySchema-Eigenschaft müssen auch in der AttributeDefinitions-Eigenschaft definiert werden.

Erforderlich: Ja

Typ : Array von KeySchema

Minimum: 1

Maximum: 2

Aktualisierung erfordert: Austausch

LocalSecondaryIndexes

Lokale sekundäre Indizes, die in der Tabelle erstellt werden müssen. Sie können bis zu fünf lokale sekundäre Indizes erstellen. Jeder Index ist auf einen bestimmten Hash-Schlüsselwert beschränkt. Die Größe der einzelnen Hash-Schlüssel kann bis zu 10 GB betragen. Jedes Replikat in Ihrer globalen Tabelle hat dieselben lokalen sekundären Index-Einstellungen.

Required: No

Typ : Array von LocalSecondaryIndex

Aktualisierung erfordert: Austausch

Replicas

Gibt die Liste der Replikate für Ihre globale Tabelle an. Die Liste muss mindestens ein Element enthalten, nämlich die Region, in der der Stack, der die globale Tabelle definiert, bereitgestellt wird. Wenn Sie beispielsweise Ihre Tabelle in einem Stack definieren, der für us-east-1 bereitgestellt wird, müssen Sie einen Eintrag in Replicas mit der Region us-east-1 haben. Sie können das Replikat nicht in der Stack-Region entfernen.

Wichtig

Das Hinzufügen eines Replikats kann bei einer leeren Tabelle einige Minuten oder bei großen Tabellen bis zu mehreren Stunden dauern. Wenn Sie ein Replikat hinzufügen oder entfernen möchten, empfehlen wir Ihnen, einen UpdateStack-Vorgang, der nur diese Änderung enthält, abzusenden.

Wenn Sie ein Replikat während einer Aktualisierung hinzufügen oder löschen, empfehlen wir, keine anderen Ressourcen zu aktualisieren. Wenn Ihr Stack nicht aktualisiert werden kann und beim Hinzufügen eines neuen Replikats ein Rollback ausgeführt wird, müssen Sie das Replikat möglicherweise manuell löschen.

Sie können eine neue globale Tabelle mit beliebig vielen Replikaten erstellen. Sie können Replikate nach der Tabellen-Erstellung hinzufügen oder entfernen, aber Sie können bei jedem Update nur ein einzelnes Replikat hinzufügen oder entfernen.

Erforderlich: Ja

Typ : Array von ReplicaSpecification

Minimum: 1

Aktualisierung erfordert: Keine Unterbrechung

SSESpecification

Gibt die Einstellungen zum Aktivieren der serverseitigen Verschlüsselung an. Diese Einstellungen werden auf alle Replikate angewendet. Wenn Sie beabsichtigen, vom Kunden verwaltete KMS-Schlüssel zu verwenden, müssen Sie für jedes Replikat, das die ReplicaSpecification.ReplicaSSESpecification-Eigenschaft verwendet, einen Schlüssel bereitstellen.

Required: No

Type: SSESpecification

Aktualisierung erfordert: Keine Unterbrechung

StreamSpecification

Gibt die Streams-Einstellungen in Ihrer globalen Tabelle an. Sie müssen einen Wert für diese Eigenschaft angeben, wenn Ihre globale Tabelle mehr als ein Replikat enthält. Sie können die Streams-Einstellungen nur ändern, wenn Ihre globale Tabelle nur ein Replikat hat.

Required: No

Geben Sie ein: StreamSpecification

Aktualisierung erfordert: Keine Unterbrechung

TableName

Ein Name für die globale Tabelle. Wenn Sie keinen Namen angeben, erstellt AWS CloudFormation eine eindeutige ID und verwendet diese ID für den Tabellennamen. Weitere Informationen finden Sie unter Namenstyp.

Wichtig

Wenn Sie einen Namen angeben, können Sie keine Aktualisierungen durchführen, die einen Austausch dieser Ressource erforderlich machen. Sie können Aktualisierungen durchführen, die keine oder einige Unterbrechungen erforderlich machen. Wenn Sie die Ressource austauschen müssen, geben Sie einen neuen Namen an.

Required: No

Typ: Zeichenfolge

Pattern: [a-zA-Z0-9_.-]+

Minimum: 3

Maximum: 255

Aktualisierung erfordert: Austausch

TimeToLiveSpecification

Gibt die Time to Live (TTL)-Einstellungen für die Tabelle an. Diese Einstellung wird auf alle Replikate angewendet.

Required: No

Geben Sie ein: TimeToLiveSpecification

Aktualisierung erfordert: Keine Unterbrechung

WriteProvisionedThroughputSettings

Gibt eine Richtlinie der automatischen Skalierung für die Schreibkapazität an. Diese Richtlinie wird auf alle Replikate angewendet. Diese Einstellung muss angegeben werden, wenn BillingMode auf PROVISIONED gesetzt wird.

Required: No

Geben Sie ein: WriteProvisionedThroughputSettings

Aktualisierung erfordert: Keine Unterbrechung

Rückgabewerte

Punkt

Wenn Sie die logische ID dieser Ressource an die intrinsische Ref-Funktion übergeben, gibt Ref den Tabellennamen zurück.

Weitere Informationen zur Verwendung der Ref-Funktion finden Sie unter Ref.

Fn::GetAtt

Die intrinsische Fn::GetAtt-Funktion gibt einen Wert für ein angegebenes Attribut dieses Typs zurück. Im Folgenden sehen Sie die verfügbaren Attribute und Beispielrückgabewerte.

Weitere Informationen zur Verwendung der intrinsischen Fn::GetAtt-Funktion finden Sie unter Fn::GetAtt.

Arn

Der Amazon-Ressourcenname (ARN) der DynamoDB-Tabelle, z. B. arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable. Der zurückgegebene ARN ist der des Replikats in der Region, in der der Stack bereitgestellt wird.

StreamArn

Der ARN des DynamoDB-Streams, z. B. arn:aws:dynamodb:us-east-1:123456789012:table/testddbstack-myDynamoDBTable-012A1SL7SMP5Q/stream/2015-11-30T20:10:00.000. Der zurückgegebene StreamArn ist der des Replikats in der Region, in der der Stack bereitgestellt wird.

Anmerkung

Sie müssen die StreamSpecification-Eigenschaft angeben, um dieses Attribut zu verwenden.

TableId

Eindeutige Kennung für die Tabelle, wie a123b456-01ab-23cd-123a-111222aaabbb. Der zurückgegebene TableId ist der des Replikats in der Region, in der der Stack bereitgestellt wird.