Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS::DynamoDB::Table
El recurso AWS::DynamoDB::Table
crea una tabla de DynamoDB. Para obtener más información, consulte la CreateTablereferencia de la API de Amazon DynamoDB.
Debe tener en cuenta los siguientes comportamientos a la hora de trabajar con tablas de DynamoDB:
-
AWS CloudFormation normalmente crea tablas de DynamoDB en paralelo. Sin embargo, si su plantilla incluye varias tablas de DynamoDB con índices, debe declarar dependencias para que las tablas se creen de forma secuencial. Amazon DynamoDB limita el número de tablas con índices secundarios que están en el estado de creación. Si crea varias tablas con índices al mismo tiempo, DynamoDB devuelve un error y la operación de pila fracasa. Para ver un ejemplo, consulte Tabla de DynamoDB con un atributo. DependsOn
importante
Le recomendamos que utilice el esquema más reciente que se documenta aquí para sus AWS CloudFormation plantillas. Este esquema admite el aprovisionamiento de todas las configuraciones de tabla que se indican a continuación. Cuando utilices este esquema en tus AWS CloudFormation plantillas, asegúrate de que tus políticas de Identity and Access Management (IAM) estén actualizadas con los permisos adecuados para permitir la autorización de estos cambios de configuración.
Sintaxis
Para declarar esta entidad en la AWS CloudFormation plantilla, utilice la siguiente sintaxis:
JSON
{ "Type" : "AWS::DynamoDB::Table", "Properties" : { "AttributeDefinitions" :
[ AttributeDefinition, ... ]
, "BillingMode" :String
, "ContributorInsightsSpecification" :ContributorInsightsSpecification
, "DeletionProtectionEnabled" :Boolean
, "GlobalSecondaryIndexes" :[ GlobalSecondaryIndex, ... ]
, "ImportSourceSpecification" :ImportSourceSpecification
, "KeySchema" :[ KeySchema, ... ]
, "KinesisStreamSpecification" :KinesisStreamSpecification
, "LocalSecondaryIndexes" :[ LocalSecondaryIndex, ... ]
, "OnDemandThroughput" :OnDemandThroughput
, "PointInTimeRecoverySpecification" :PointInTimeRecoverySpecification
, "ProvisionedThroughput" :ProvisionedThroughput
, "ResourcePolicy" :ResourcePolicy
, "SSESpecification" :SSESpecification
, "StreamSpecification" :StreamSpecification
, "TableClass" :String
, "TableName" :String
, "Tags" :[ Tag, ... ]
, "TimeToLiveSpecification" :TimeToLiveSpecification
} }
YAML
Type: AWS::DynamoDB::Table Properties: AttributeDefinitions:
- AttributeDefinition
BillingMode:String
ContributorInsightsSpecification:ContributorInsightsSpecification
DeletionProtectionEnabled:Boolean
GlobalSecondaryIndexes:- GlobalSecondaryIndex
ImportSourceSpecification:ImportSourceSpecification
KeySchema:- KeySchema
KinesisStreamSpecification:KinesisStreamSpecification
LocalSecondaryIndexes:- LocalSecondaryIndex
OnDemandThroughput:OnDemandThroughput
PointInTimeRecoverySpecification:PointInTimeRecoverySpecification
ProvisionedThroughput:ProvisionedThroughput
ResourcePolicy:ResourcePolicy
SSESpecification:SSESpecification
StreamSpecification:StreamSpecification
TableClass:String
TableName:String
Tags:- Tag
TimeToLiveSpecification:TimeToLiveSpecification
Propiedades
AttributeDefinitions
-
Una lista de atributos que describen el esquema de claves para la tabla y los índices.
Esta propiedad es necesaria para crear una tabla de DynamoDB.
Requisitos de actualización: alguna interrupción. Sustitución si editas una existente AttributeDefinition.
Obligatorio: condicional
Tipo: matriz de AttributeDefinition
Requisitos de actualización: sin interrupción
BillingMode
-
Especifique cómo se le cobrará el rendimiento de lectura y escritura y cómo se administra la capacidad.
Los valores válidos son:
-
PROVISIONED
: recomendamos utilizarPROVISIONED
para cargas de trabajo predecibles.PROVISIONED
establece el modo de facturación en modo aprovisionado. -
PAY_PER_REQUEST
: recomendamos utilizarPAY_PER_REQUEST
para cargas de trabajo impredecibles.PAY_PER_REQUEST
establece el modo de facturación en modo bajo demanda.
Si no se especifica, el valor predeterminado es
PROVISIONED
.Obligatorio: no
Tipo: cadena
Valores permitidos:
PROVISIONED | PAY_PER_REQUEST
Requisitos de actualización: sin interrupción
-
ContributorInsightsSpecification
-
La configuración utilizada para activar o desactivar CloudWatch Contributor Insights en la tabla especificada.
Obligatorio: no
Tipo: ContributorInsightsespecificación
Requisitos de actualización: sin interrupción
DeletionProtectionEnabled
-
Determina si una tabla está protegida contra la eliminación. Cuando está habilitada, ningún usuario o proceso puede eliminar la tabla. Este ajuste está deshabilitado de forma predeterminada. Para obtener más información, consulte Uso de la protección contra eliminaciones en la Guía para desarrolladores de Amazon DynamoDB.
Obligatorio: no
Tipo: booleano
Requisitos de actualización: sin interrupción
GlobalSecondaryIndexes
-
Los índices secundarios globales que se crearán en la tabla. Puede crear un máximo de 20 índices secundarios globales.
importante
Si actualiza una tabla para incluir un nuevo índice secundario global, AWS CloudFormation inicia la creación del índice y, a continuación, continúa con la actualización de la pila. AWS CloudFormation no espera a que se complete la creación del índice, ya que la fase de rellenado puede llevar mucho tiempo, en función del tamaño de la tabla. No puede utilizar el índice o actualizar la tabla hasta que el estado del índice sea
ACTIVE
. Puede realizar un seguimiento de su estado mediante el comando DescribeTableDynamoDB.Si añade o elimina un índice durante una actualización, le recomendamos que no actualice ningún otro recurso. Si la pila no se actualiza y se restaura al añadir un índice nuevo, debe eliminar manualmente el índice.
No se admiten actualizaciones. A continuación se muestran las excepciones:
-
Si solo actualiza los valores de rendimiento aprovisionado de los índices secundarios globales, puede actualizar la tabla sin interrupción.
-
Puede eliminar o añadir un índice secundario global sin interrupción. Si realiza ambas acciones en la misma actualización (por ejemplo, cambiando el ID lógico del índice), la actualización falla.
Obligatorio: no
Tipo: matriz de índices GlobalSecondary
Requisitos de actualización: sin interrupción
-
ImportSourceSpecification
-
Especifica las propiedades de los datos que se importan desde el origen del bucket de S3 a la tabla.
importante
Si especifica la
ImportSourceSpecification
propiedad y también especifica la propiedad o laTableClass
propiedadStreamSpecification
, la entidad de IAM que crea o actualiza la pila debe tener permiso.DeletionProtectionEnabled
UpdateTable
Obligatorio: no
Tipo: especificación ImportSource
Requisitos de actualización: reemplazo
KeySchema
-
Especifica los atributos que componen la clave principal de la tabla. Los atributos en la propiedad
KeySchema
también deben definirse en la propiedadAttributeDefinitions
.Obligatorio: sí
Requisitos de actualización: sin interrupción
KinesisStreamSpecification
-
La configuración de Kinesis Data Streams para la tabla especificada.
Obligatorio: no
Tipo: KinesisStreamEspecificación
Requisitos de actualización: sin interrupción
LocalSecondaryIndexes
-
Los índices secundarios locales que se crearán en la tabla. Puede crear un máximo de 5 índices secundarios locales. Cada índice se establece en un determinado valor de clave hash. El tamaño de cada clave hash puede ser de hasta 10 gigabytes.
Obligatorio: no
Tipo: matriz de LocalSecondaryíndices
Requisitos de actualización: sin interrupción
OnDemandThroughput
-
Establece el número máximo de unidades de lectura y escritura para la tabla bajo demanda especificada. Si utiliza esta propiedad, debe especificar
MaxReadRequestUnits
MaxWriteRequestUnits
, o ambas.Obligatorio: no
Tipo: OnDemandrendimiento
Requisitos de actualización: sin interrupción
PointInTimeRecoverySpecification
-
La configuración utilizada para habilitar la recuperación a un momento dado.
Obligatorio: no
Tipo: Especificación PointIn TimeRecovery
Requisitos de actualización: sin interrupción
ProvisionedThroughput
-
Desempeño de la tabla especificada, que se compone de los valores de
ReadCapacityUnits
yWriteCapacityUnits
. Para obtener más información sobre el contenido de una estructura de rendimiento aprovisionada, consulte la tabla de Amazon DynamoDB. ProvisionedThroughputSi establece
BillingMode
enPROVISIONED
, debe especificar esta propiedad. Si estableceBillingMode
enPAY_PER_REQUEST
, no puede especificar esta propiedad.Obligatorio: condicional
Tipo: ProvisionedThroughput
Requisitos de actualización: sin interrupción
ResourcePolicy
-
Un documento de política basado en recursos que contiene permisos para añadirlos a la tabla especificada. En una CloudFormation plantilla, puedes proporcionar la política en formato JSON o YAML, ya que CloudFormation convierte YAML en JSON antes de enviarla a ella. DynamoDBPara obtener más información sobre las políticas basadas en recursos, consulta Uso de políticas basadas en recursos y ejemplos de políticas basadas en recursos. DynamoDB
Al adjuntar una política basada en recursos al crear una tabla, la creación de la política es muy coherente. Para obtener información sobre las consideraciones que debe tener en cuenta al adjuntar una política basada en recursos, consulte Consideraciones sobre políticas basadas en recursos.
Obligatorio: no
Tipo: ResourcePolicy
Requisitos de actualización: sin interrupción
SSESpecification
-
Especifica la configuración para habilitar el cifrado del lado del servidor.
Obligatorio: no
Type: SSESpecification
Requisitos de actualización: alguna interrupción
StreamSpecification
-
La configuración del flujo de la tabla de DynamoDB, que captura cambios realizados en elementos almacenados en la tabla.
Obligatorio: no
Tipo: StreamSpecification
Requisitos de actualización: sin interrupción
TableClass
-
La clase de tabla de la nueva tabla. Los valores válidos son
STANDARD
ySTANDARD_INFREQUENT_ACCESS
.Obligatorio: no
Tipo: cadena
Valores permitidos:
STANDARD | STANDARD_INFREQUENT_ACCESS
Requisitos de actualización: sin interrupción
TableName
-
Un nombre para la tabla. Si no especificas un nombre, AWS CloudFormation genera un identificador físico único y lo utiliza para el nombre de la tabla. Para obtener más información, consulte Tipo de nombre.
importante
Si especifica un nombre, no puede llevar a cabo actualizaciones que requieran la sustitución de este recurso. Puede hacer las actualizaciones que no requieran interrupción o que esta sea mínima. Si debe sustituir el recurso, especifique un nuevo nombre.
Obligatorio: no
Tipo: cadena
Mínimo:
1
Máximo:
1024
Requisitos de actualización: reemplazo
-
Una matriz de pares clave-valor que aplicar a este recurso.
Para obtener más información, consulte la sección sobre etiquetas.
Obligatorio: no
Tipo: matriz de etiquetas
Requisitos de actualización: sin interrupción
TimeToLiveSpecification
-
Especifica la configuración del tiempo de vida (TTL) de la tabla.
nota
Para obtener información detallada acerca de los límites en DynamoDB, consulte Límites en Amazon DynamoDB en la Guía para desarrolladores de Amazon DynamoDB.
Obligatorio: no
Tipo: TimeToLiveSpecification
Requisitos de actualización: sin interrupción
Valores devueltos
Ref.
Cuando se pasa el ID lógico de este recurso a la función Ref
intrínseca, Ref
devuelve nombre del recurso. Por ejemplo:
{ "Ref": "myDynamoDBTable" }
Para el recurso con el ID lógico myDynamoDBTable
, Ref
devolverá el nombre de la tabla de DynamoDB.
Para obtener más información acerca del uso de la función Ref
, consulte Ref
.
Ventilador: GetAtt
La función intrínseca de Fn::GetAtt
devuelve un valor para un atributo especificado de este tipo. A continuación se indican los atributos disponibles y los valores devueltos de muestra.
Para obtener más información acerca del uso de la función intrínseca Fn::GetAtt
, consulte Fn::GetAtt
.
Arn
-
El nombre de recurso de Amazon (ARN) de la tabla de DynamoDB, como
arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable
. StreamArn
-
El ARN del flujo de DynamoDB, como
arn:aws:dynamodb:us-east-1:123456789012:table/testddbstack-myDynamoDBTable-012A1SL7SMP5Q/stream/2015-11-30T20:10:00.000
.nota
Debe especificar la propiedad
StreamSpecification
para utilizar este atributo.
Ejemplos
Tabla de DynamoDB con índices secundarios locales y globales
En el siguiente ejemplo se crea una tabla de DynamoDB con Album
, Artist
, Sales
, NumberOfSongs
como atributos. La clave principal incluye el atributo Album
como la clave hash y el atributo Artist
como la clave de rango. La tabla también incluye dos índices globales y un índice secundario. Para consultar el número de ventas para un determinado artista, el índice secundario global utiliza el atributo Sales
como la clave hash y el atributo Artist
como la clave de rango.
Para consultar las ventas en función del número de canciones, el índice secundario global utiliza el atributo NumberOfSongs
como la clave hash y el atributo Sales
como la clave de rango.
Para consultar las ventas de un álbum, el índice secundario local utiliza la misma clave hash que la tabla, pero utiliza el atributo Sales
como la clave de rango.
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"
Tabla de DynamoDB con un atributo DependsOn
Si incluye varias tablas de DynamoDB con índices en una sola plantilla, debe incluir dependencias para que las tablas se creen de forma secuencial. DynamoDB limita el número de tablas con índices secundarios que están en el estado de creación. Si crea varias tablas con índices al mismo tiempo, DynamoDB devuelve un error y la operación de pila fracasa.
El siguiente ejemplo presupone que la tabla myFirstDDBTable
se declara en la misma plantilla que la tabla mySecondDDBTable
y ambas tablas incluyen un índice secundario. La mySecondDDBTable
tabla incluye una dependencia en la myFirstDDBTable
tabla para AWS CloudFormation crear las tablas de una en una.
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
Tabla de DynamoDB con Application Auto Scaling
En este ejemplo se configura Application Auto Scaling para un recurso de AWS::DynamoDB::Table
. La plantilla define una política de escalado de TargetTrackingScaling
que escala el desempeño de WriteCapacityUnits
para la tabla.
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