AWS::DynamoDB::Table - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS::DynamoDB::Table

La risorsa AWS::DynamoDB::Table crea una tabella DynamoDB. Per ulteriori informazioni, consulta CreateTableAmazon DynamoDB API Reference.

Quando si lavora con le tabelle DynamoDB, è necessario essere a conoscenza dei seguenti comportamenti:

  • AWS CloudFormation in genere crea tabelle DynamoDB in parallelo. Tuttavia, se il modello include più tabelle DynamoDB con indici, è necessario dichiarare le dipendenze, in modo che le tabelle vengano create in sequenza. Amazon DynamoDB limita il numero di tabelle con indici secondari che si trovano nello stato di creazione. Se si creano simultaneamente più tabelle con indici, Amazon DynamoDB restituisce un errore e l'operazione di stack non riesce. Per un esempio, vedi Tabella DynamoDB con un attributo. DependsOn

Importante

La nostra guida consiste nell'utilizzare lo schema più recente documentato qui per i tuoi modelli. AWS CloudFormation Questo schema supporta il provisioning di tutte le impostazioni della tabella riportate di seguito. Quando utilizzi questo schema nei tuoi AWS CloudFormation modelli, assicurati che le policy di Identity and Access Management (IAM) siano aggiornate con le autorizzazioni appropriate per consentire l'autorizzazione di queste modifiche alle impostazioni.

Sintassi

Per dichiarare questa entità nel AWS CloudFormation modello, utilizza la seguente sintassi:

Proprietà

AttributeDefinitions

Un elenco di attributi che descrivono lo schema chiave per la tabella e gli indici.

Questa proprietà è obbligatoria per creare una tabella DynamoDB.

Aggiornamento richiesto: alcune interruzioni Sostituzione se ne modifichi una esistente. AttributeDefinition

Required: Conditional

Tipo: Array di AttributeDefinition

Aggiornamento richiesto: nessuna interruzione

BillingMode

Specificare la modalità di addebito per il throughput di lettura e scrittura e quella di gestione della capacità.

I valori validi includono:

  • PROVISIONED - È consigliabile utilizzare PROVISIONED per carichi di lavoro prevedibili. PROVISIONED imposta la modalità di fatturazione su Modalità assegnata.

  • PAY_PER_REQUEST - È consigliabile utilizzare PAY_PER_REQUEST per carichi di lavoro imprevedibili. PAY_PER_REQUEST imposta la modalità di fatturazione su Modalità on demand.

Se non si specifica un valore predefinito, viene utilizzato PROVISIONED.

Required: No

Tipo: stringa

Allowed values: PROVISIONED | PAY_PER_REQUEST

Aggiornamento richiesto: nessuna interruzione

ContributorInsightsSpecification

Le impostazioni utilizzate per abilitare o disabilitare CloudWatch Contributor Insights per la tabella specificata.

Required: No

Tipo: Specificazione ContributorInsights

Aggiornamento richiesto: nessuna interruzione

DeletionProtectionEnabled

Determina se una tabella è protetta dall'eliminazione. Se abilitata, la tabella non può essere eliminata da alcun utente o processo. Questa impostazione è disabilitata per impostazione predefinita. Per ulteriori informazioni, consulta Using Delection Protection nella Amazon DynamoDB Developer Guide.

Required: No

Tipo: Booleano

Aggiornamento richiesto: nessuna interruzione

GlobalSecondaryIndexes

Indici secondari globali da creare nella tabella. È possibile creare fino a 20 indici secondari globali.

Importante

Se aggiorni una tabella per includere un nuovo indice secondario globale, AWS CloudFormation avvia la creazione dell'indice e quindi procede con l'aggiornamento dello stack. AWS CloudFormation non attende il completamento della creazione dell'indice perché la fase di riempimento può richiedere molto tempo, a seconda delle dimensioni della tabella. Non è possibile utilizzare l'indice o aggiornare la tabella fino a quando lo stato dell'indice è ACTIVE. È possibile monitorarne lo stato utilizzando il comando DescribeTableDynamoDB.

Se si aggiunge o si elimina un indice durante un aggiornamento, è consigliabile non aggiornare altre risorse. Se non si riesce ad aggiornare lo stack e ne viene eseguito il rollback durante l'aggiunta di un nuovo indice, è necessario eliminare manualmente l'indice.

Gli aggiornamenti non sono supportati. Di seguito sono elencate le eccezioni:

  • Se si aggiornano le specifiche di Contributor Insights o i valori di velocità di trasmissione effettiva sottoposti a provisioning degli indici secondari globali, è possibile aggiornare la tabella senza interruzioni.

  • È possibile eliminare o aggiungere un indice secondario globale senza interruzioni. Se si eseguono entrambe le operazioni nello stesso aggiornamento (ad esempio modificando l'ID logico dell'indice), l'aggiornamento non riesce.

Required: No

Tipo: matrice di indici GlobalSecondary

Aggiornamento richiesto: nessuna interruzione

ImportSourceSpecification

Specifica le proprietà dei dati in corso di importazione dall'origine del bucket S3 alla tabella.

Importante

Se specifichi la ImportSourceSpecification proprietà e specifichi anche laStreamSpecification, la proprietà o la TableClass proprietà, lo DeletionProtectionEnabled stack di creazione/aggiornamento dell'entità IAM deve disporre dell'autorizzazione. UpdateTable

Required: No

Tipo: Specificazione ImportSource

Aggiornamento richiesto: sostituzione

KeySchema

Specifica gli attributi che costituiscono la chiave primaria per la tabella. È necessario definire anche gli attributi della proprietà KeySchema nella proprietà AttributeDefinitions.

Campo obbligatorio: sì

Tipo: Array di KeySchema

Aggiornamento richiesto: nessuna interruzione

KinesisStreamSpecification

La configurazione di Kinesis Data Streams per la tabella specificata.

Required: No

Tipo: KinesisStreamSpecificazione

Aggiornamento richiesto: nessuna interruzione

LocalSecondaryIndexes

Indici secondari logici da creare nella tabella. È possibile creare fino a 5 indici secondari locali. L'ambito di ogni indice viene definito da un determinato valore di chiave hash. La dimensione di ciascuna chiave hash può essere fino a 10 gigabyte.

Required: No

Tipo: matrice di LocalSecondaryindici

Aggiornamento richiesto: nessuna interruzione

OnDemandThroughput

Imposta il numero massimo di unità di lettura e scrittura per la tabella su richiesta specificata. Se si utilizza questa proprietà, è necessario specificare MaxReadRequestUnitsMaxWriteRequestUnits, o entrambi.

Required: No

Tipo: OnDemandThroughput

Aggiornamento richiesto: nessuna interruzione

PointInTimeRecoverySpecification

Le impostazioni utilizzate per consentire il ripristino point-in-time.

Required: No

Tipo: Specificazione PointIn TimeRecovery

Aggiornamento richiesto: nessuna interruzione

ProvisionedThroughput

Throughput per la tabella specificata, costituito dai valori per ReadCapacityUnits e WriteCapacityUnits. Per ulteriori informazioni sui contenuti di una struttura di throughput predisposta, consulta Amazon DynamoDB Table. ProvisionedThroughput

Se abiliti BillingMode come PROVISIONED, devi specificare questa proprietà. Se abiliti BillingMode come PAY_PER_REQUEST, non puoi specificare questa proprietà.

Required: Conditional

Tipo: ProvisionedThroughput

Aggiornamento richiesto: nessuna interruzione

ResourcePolicy

Un documento di policy basato sulle risorse che contiene le autorizzazioni da aggiungere alla tabella specificata. In un CloudFormation modello, puoi fornire la politica in formato JSON o YAML perché CloudFormation converte YAML in JSON prima di inviarla a. DynamoDBPer ulteriori informazioni sulle politiche basate sulle risorse, vedere Utilizzo delle politiche basate sulle risorse per ed Esempi di politiche basate sulle risorse. DynamoDB

Quando si allega una politica basata sulle risorse durante la creazione di una tabella, la creazione della politica è fortemente coerente. Per informazioni sulle considerazioni da tenere a mente quando si allega una politica basata sulle risorse, consulta Considerazioni sulle politiche basate sulle risorse.

Required: No

Tipo: ResourcePolicy

Aggiornamento richiesto: nessuna interruzione

SSESpecification

Specifica le impostazioni per abilitare la crittografia lato server.

Required: No

Type: SSESpecification

Aggiornamento richiesto: alcune interruzioni

StreamSpecification

Le impostazioni per il flusso di tabelle DynamoDB che acquisisce le modifiche agli elementi memorizzati nella tabella.

Required: No

Tipo: StreamSpecification

Aggiornamento richiesto: nessuna interruzione

TableClass

La classe della nuova tabella. I valori validi sono STANDARD e STANDARD_INFREQUENT_ACCESS.

Required: No

Tipo: stringa

Allowed values: STANDARD | STANDARD_INFREQUENT_ACCESS

Aggiornamento richiesto: nessuna interruzione

TableName

Un nome per la tabella. Se non specifichi un nome, AWS CloudFormation genera un ID fisico univoco e lo utilizza per il nome della tabella. Per ulteriori informazioni, consulta Tipo di nome.

Importante

Se specifichi un nome, non puoi effettuare aggiornamenti che richiedono la sostituzione di questa risorsa. Puoi effettuare solo quelli che non richiedono interruzioni o che richiedono alcune interruzioni. Se devi sostituire la risorsa, specifica un nuovo nome.

Required: No

Tipo: stringa

Minimum: 1

Maximum: 1024

Aggiornamento richiesto: sostituzione

Tags

Un array di coppie chiave-valore da applicare a questa risorsa.

Per ulteriori informazioni, consulta Tag.

Required: No

Tipo: Matrice di tag

Aggiornamento richiesto: nessuna interruzione

TimeToLiveSpecification

Specifica le impostazioni Time to Live (TTL) per la tabella.

Nota

Per ulteriori informazioni sui limiti di DynamoDB, consulta l'argomento relativo ai limiti in Amazon DynamoDB nella Guida per gli sviluppatori di Amazon DynamoDB.

Required: No

Tipo: TimeToLiveSpecification

Aggiornamento richiesto: nessuna interruzione

Valori restituiti

Ref

Quando l'ID logico di questa risorsa viene passato alla funzione intrinseca Ref, Ref restituisce il nome della risorsa. Ad esempio:

{ "Ref": "myDynamoDBTable" }

Per la risorsa con ID logico myDynamoDBTable, Ref restituisce il nome della tabella DynamoDB.

Per ulteriori informazioni sull'utilizzo della funzione Ref, consulta Ref.

Ventilatore:: GetAtt

La funzione intrinseca Fn::GetAtt restituisce un valore per un attributo specificato di questo tipo. Di seguito sono riportati gli attributi disponibili e i valori restituiti di esempio.

Per ulteriori informazioni sull'utilizzo della funzione intrinseca Fn::GetAtt, consulta Fn::GetAtt.

Arn

L'Amazon Resource Name (ARN) della tabella DynamoDB, ad esempio arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable.

StreamArn

L'ARN del flusso DynamoDB, ad esempio arn:aws:dynamodb:us-east-1:123456789012:table/testddbstack-myDynamoDBTable-012A1SL7SMP5Q/stream/2015-11-30T20:10:00.000.

Nota

Per utilizzare questo attributo, è necessario specificare la proprietà StreamSpecification.

Esempi

Tabella DynamoDB con indici locale e secondario

Nell'esempio seguente viene creata una tabella DynamoDB con Album, Artist, Sales e NumberOfSongs come attributi. La chiave primaria include l'attributo Album come chiave hash e l'attributo Artist come chiave di intervallo. La tabella include inoltre due indici globali e un indice secondario. Per recuperare il numero di vendite per un determinato artista, l'indice secondario globale utilizza l'attributo Sales come chiave hash e l'attributo Artist come chiave di intervallo.

Per eseguire query sulle vendite in base al numero di brani, l'indice secondario globale utilizza l'attributo NumberOfSongs come chiave hash e l'attributo Sales come chiave di intervallo.

Per recuperare le vendite di un album, l'indice secondario locale utilizza la stessa chiave hash della tabella ma utilizza l'attributo Sales come intervallo di chiavi.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myDynamoDBTable" : { "Type" : "AWS::DynamoDB::Table", "Properties" : { "AttributeDefinitions" : [ { "AttributeName" : "Album", "AttributeType" : "S" }, { "AttributeName" : "Artist", "AttributeType" : "S" }, { "AttributeName" : "Sales", "AttributeType" : "N" }, { "AttributeName" : "NumberOfSongs", "AttributeType" : "N" } ], "KeySchema" : [ { "AttributeName" : "Album", "KeyType" : "HASH" }, { "AttributeName" : "Artist", "KeyType" : "RANGE" } ], "ProvisionedThroughput" : { "ReadCapacityUnits" : "5", "WriteCapacityUnits" : "5" }, "TableName" : "myTableName", "GlobalSecondaryIndexes" : [{ "IndexName" : "myGSI", "KeySchema" : [ { "AttributeName" : "Sales", "KeyType" : "HASH" }, { "AttributeName" : "Artist", "KeyType" : "RANGE" } ], "Projection" : { "NonKeyAttributes" : ["Album","NumberOfSongs"], "ProjectionType" : "INCLUDE" }, "ProvisionedThroughput" : { "ReadCapacityUnits" : "5", "WriteCapacityUnits" : "5" } }, { "IndexName" : "myGSI2", "KeySchema" : [ { "AttributeName" : "NumberOfSongs", "KeyType" : "HASH" }, { "AttributeName" : "Sales", "KeyType" : "RANGE" } ], "Projection" : { "NonKeyAttributes" : ["Album","Artist"], "ProjectionType" : "INCLUDE" }, "ProvisionedThroughput" : { "ReadCapacityUnits" : "5", "WriteCapacityUnits" : "5" } }], "LocalSecondaryIndexes" :[{ "IndexName" : "myLSI", "KeySchema" : [ { "AttributeName" : "Album", "KeyType" : "HASH" }, { "AttributeName" : "Sales", "KeyType" : "RANGE" } ], "Projection" : { "NonKeyAttributes" : ["Artist","NumberOfSongs"], "ProjectionType" : "INCLUDE" } }] } } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Resources: myDynamoDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: "Album" AttributeType: "S" - AttributeName: "Artist" AttributeType: "S" - AttributeName: "Sales" AttributeType: "N" - AttributeName: "NumberOfSongs" AttributeType: "N" KeySchema: - AttributeName: "Album" KeyType: "HASH" - AttributeName: "Artist" KeyType: "RANGE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" TableName: "myTableName" GlobalSecondaryIndexes: - IndexName: "myGSI" KeySchema: - AttributeName: "Sales" KeyType: "HASH" - AttributeName: "Artist" KeyType: "RANGE" Projection: NonKeyAttributes: - "Album" - "NumberOfSongs" ProjectionType: "INCLUDE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" - IndexName: "myGSI2" KeySchema: - AttributeName: "NumberOfSongs" KeyType: "HASH" - AttributeName: "Sales" KeyType: "RANGE" Projection: NonKeyAttributes: - "Album" - "Artist" ProjectionType: "INCLUDE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" LocalSecondaryIndexes: - IndexName: "myLSI" KeySchema: - AttributeName: "Album" KeyType: "HASH" - AttributeName: "Sales" KeyType: "RANGE" Projection: NonKeyAttributes: - "Artist" - "NumberOfSongs" ProjectionType: "INCLUDE"

Tabella DynamoDB con un attributo DependsOn

Se si includono più tabelle DynamoDB con indici in un unico modello, è necessario includere le dipendenze, in modo che le tabelle vengano create in sequenza. DynamoDB limita il numero di tabelle con indici secondari che si trovano nello stato di creazione. Se si creano simultaneamente più tabelle con indici, Amazon DynamoDB restituisce un errore e l'operazione di stack non riesce.

Nell'esempio seguente si presuppone che la tabella myFirstDDBTable sia dichiarata nello stesso modello come tabella mySecondDDBTable e che entrambe le tabelle includano un indice secondario. La mySecondDDBTable tabella include una dipendenza dalla myFirstDDBTable tabella in modo da AWS CloudFormation creare le tabelle una alla volta.

JSON

"mySecondDDBTable" : { "Type" : "AWS::DynamoDB::Table", "DependsOn" : "myFirstDDBTable" , "Properties" : { "AttributeDefinitions" : [ { "AttributeName" : "ArtistId", "AttributeType" : "S" }, { "AttributeName" : "Concert", "AttributeType" : "S" }, { "AttributeName" : "TicketSales", "AttributeType" : "S" } ], "KeySchema" : [ { "AttributeName" : "ArtistId", "KeyType" : "HASH" }, { "AttributeName" : "Concert", "KeyType" : "RANGE" } ], "ProvisionedThroughput" : { "ReadCapacityUnits" : {"Ref" : "ReadCapacityUnits"}, "WriteCapacityUnits" : {"Ref" : "WriteCapacityUnits"} }, "GlobalSecondaryIndexes" : [{ "IndexName" : "myGSI", "KeySchema" : [ { "AttributeName" : "TicketSales", "KeyType" : "HASH" } ], "Projection" : { "ProjectionType" : "KEYS_ONLY" }, "ProvisionedThroughput" : { "ReadCapacityUnits" : {"Ref" : "ReadCapacityUnits"}, "WriteCapacityUnits" : {"Ref" : "WriteCapacityUnits"} } }], "Tags": [ { "Key": "foo", "Value": "bar" } ] } }

YAML

mySecondDDBTable: Type: AWS::DynamoDB::Table DependsOn: "myFirstDDBTable" Properties: AttributeDefinitions: - AttributeName: "ArtistId" AttributeType: "S" - AttributeName: "Concert" AttributeType: "S" - AttributeName: "TicketSales" AttributeType: "S" KeySchema: - AttributeName: "ArtistId" KeyType: "HASH" - AttributeName: "Concert" KeyType: "RANGE" ProvisionedThroughput: ReadCapacityUnits: Ref: "ReadCapacityUnits" WriteCapacityUnits: Ref: "WriteCapacityUnits" GlobalSecondaryIndexes: - IndexName: "myGSI" KeySchema: - AttributeName: "TicketSales" KeyType: "HASH" Projection: ProjectionType: "KEYS_ONLY" ProvisionedThroughput: ReadCapacityUnits: Ref: "ReadCapacityUnits" WriteCapacityUnits: Ref: "WriteCapacityUnits" Tags: - Key: foo Value: bar

Tabella DynamoDB con Application Auto Scaling

In questo esempio Application Auto Scaling viene configurato per una risorsa AWS::DynamoDB::Table. Il modello definisce una policy di dimensionamento TargetTrackingScaling che aumenta il throughput WriteCapacityUnits della tabella.

JSON

{ "Resources": { "DDBTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [ { "AttributeName": "ArtistId", "AttributeType": "S" }, { "AttributeName": "Concert", "AttributeType": "S" }, { "AttributeName": "TicketSales", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "ArtistId", "KeyType": "HASH" }, { "AttributeName": "Concert", "KeyType": "RANGE" } ], "GlobalSecondaryIndexes": [ { "IndexName": "GSI", "KeySchema": [ { "AttributeName": "TicketSales", "KeyType": "HASH" } ], "Projection": { "ProjectionType": "KEYS_ONLY" }, "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } } }, "WriteCapacityScalableTarget": { "Type": "AWS::ApplicationAutoScaling::ScalableTarget", "Properties": { "MaxCapacity": 15, "MinCapacity": 5, "ResourceId": { "Fn::Join": [ "/", [ "table", { "Ref": "DDBTable" } ] ] }, "RoleARN": { "Fn::GetAtt": ["ScalingRole", "Arn"] }, "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ServiceNamespace": "dynamodb" } }, "ScalingRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "application-autoscaling.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:UpdateTable", "cloudwatch:PutMetricAlarm", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "cloudwatch:SetAlarmState", "cloudwatch:DeleteAlarms" ], "Resource": "*" } ] } } ] } }, "WriteScalingPolicy": { "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties": { "PolicyName": "WriteAutoScalingPolicy", "PolicyType": "TargetTrackingScaling", "ScalingTargetId": { "Ref": "WriteCapacityScalableTarget" }, "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 50.0, "ScaleInCooldown": 60, "ScaleOutCooldown": 60, "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBWriteCapacityUtilization" } } } } } }

YAML

Resources: DDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: "ArtistId" AttributeType: "S" - AttributeName: "Concert" AttributeType: "S" - AttributeName: "TicketSales" AttributeType: "S" KeySchema: - AttributeName: "ArtistId" KeyType: "HASH" - AttributeName: "Concert" KeyType: "RANGE" GlobalSecondaryIndexes: - IndexName: "GSI" KeySchema: - AttributeName: "TicketSales" KeyType: "HASH" Projection: ProjectionType: "KEYS_ONLY" ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 WriteCapacityScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 15 MinCapacity: 5 ResourceId: !Join - / - - table - !Ref DDBTable RoleARN: !GetAtt ScalingRole.Arn ScalableDimension: dynamodb:table:WriteCapacityUnits ServiceNamespace: dynamodb ScalingRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - application-autoscaling.amazonaws.com Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "dynamodb:DescribeTable" - "dynamodb:UpdateTable" - "cloudwatch:PutMetricAlarm" - "cloudwatch:DescribeAlarms" - "cloudwatch:GetMetricStatistics" - "cloudwatch:SetAlarmState" - "cloudwatch:DeleteAlarms" Resource: "*" WriteScalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: WriteAutoScalingPolicy PolicyType: TargetTrackingScaling ScalingTargetId: !Ref WriteCapacityScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: 50.0 ScaleInCooldown: 60 ScaleOutCooldown: 60 PredefinedMetricSpecification: PredefinedMetricType: DynamoDBWriteCapacityUtilization