Amazon web services 如何使用云形成模板自动缩放DynamoDB?
创建DynamoDB CloudFormation模板时,需要指定ProvisionedThroughput: 但是我也看到了这个文档,它说当您通过控制台创建一个表时,自动缩放是默认设置的 我的问题是:我需要对Cloudformation做一些特殊的事情来让我的DynamoDB表自动缩放吗?使用Cloudformation配置自动缩放DynamoDB还不可用Amazon web services 如何使用云形成模板自动缩放DynamoDB?,amazon-web-services,amazon-dynamodb,amazon-cloudformation,Amazon Web Services,Amazon Dynamodb,Amazon Cloudformation,创建DynamoDB CloudFormation模板时,需要指定ProvisionedThroughput: 但是我也看到了这个文档,它说当您通过控制台创建一个表时,自动缩放是默认设置的 我的问题是:我需要对Cloudformation做一些特殊的事情来让我的DynamoDB表自动缩放吗?使用Cloudformation配置自动缩放DynamoDB还不可用 AWS服务的新功能通常不会立即得到CloudFormation的支持。添加支持时的延迟可能会有所不同,但通常需要几个月的时间 编辑
AWS服务的新功能通常不会立即得到CloudFormation的支持。添加支持时的延迟可能会有所不同,但通常需要几个月的时间
编辑 Amazon刚刚宣布,这是如何在CloudFormation中使用单独的资源类型实现的 您仍然需要使用特定的读写吞吐量配置DynamoDB表,但需要分别配置读的扩展策略和写的另一个策略 Amazon在其文档中提供了以下示例
{
"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"
}
}
}
}
}
}
这似乎有效:
"ReadScaling" : {
"Type" : "AWS::ApplicationAutoScaling::ScalableTarget",
"Properties" : {
"MaxCapacity" : "<MAX CAPACITY>,
"MinCapacity" : "<MIN CAPACITY>,
"ResourceId" : "table/<TABLE NAME>",
"RoleARN" : "<IAM ROLE ARN>",
"ScalableDimension" : "dynamodb:table:ReadCapacityUnits",
"ServiceNamespace" : "dynamodb"
}
},
"ReadScalingPolicy" : {
"Type" : "AWS::ApplicationAutoScaling::ScalingPolicy",
"Properties" : {
"PolicyName" : "ReadScalingPolicy",
"PolicyType" : "TargetTrackingScaling",
"ResourceId" : "table/<TABLE NAME>",
"ScalableDimension" : "dynamodb:table:ReadCapacityUnits",
"ServiceNamespace" : "dynamodb",
"TargetTrackingScalingPolicyConfiguration" : {
"PredefinedMetricSpecification": {
"PredefinedMetricType": "DynamoDBReadCapacityUtilization"
},
"ScaleInCooldown" : "60",
"ScaleOutCooldown" : "60",
"TargetValue" : "70"
}
},
"DependsOn" : "ReadScaling"
},
“ReadScaling”:{
“类型”:“AWS::ApplicationAutoScaling::ScalableTarget”,
“财产”:{
“最大容量”:,
“最小容量”:,
“资源ID”:“表/”,
“RoleARN”:“,
“ScalableDimension”:“dynamodb:table:ReadCapacityUnits”,
“ServiceNamespace”:“dynamodb”
}
},
“ReadScalingPolicy”:{
“类型”:“AWS::ApplicationAutoScaling::ScalingPolicy”,
“财产”:{
“PolicyName”:“ReadScalingPolicy”,
“策略类型”:“TargetTrackingScaling”,
“资源ID”:“表/”,
“ScalableDimension”:“dynamodb:table:ReadCapacityUnits”,
“ServiceNamespace”:“dynamodb”,
“TargetTrackingScalingPolicyConfiguration”:{
“预定义的度量规范”:{
“预定义的度量类型”:“DynamoDBReadCapacityUtilization”
},
“ScaleInColdown”:“60”,
“ScaleOutColdown”:“60”,
“TargetValue”:“70”
}
},
“DependsOn”:“ReadScaling”
},
有关IAM角色的规范,请参见可以使用CloudFormation完成自动缩放 参考这个