我们一直在使用boto3创建并写入DynamoDB表。它运行良好,但是我们还希望在创建表时指定自动级别的属性,因为这是一个选项。我知道这可以手动完成,但是当我们通过Python Backend创建各种桌子时,我们希望自动化它。有人成功吗?如果是这样,BOTO3 DynamoDB客户端是否可以使用更高级别的BOTO3客户端选项?
这是自动升级的文档,
http://boto3.readthedocs.io/en/latest/reference/services/application-autoscaling.html
您需要将命名空间'DynamoDB'用于AutoScale DynamoDB。
您也可以通过CLI进行操作,也将为您提供有关参数的想法,
aws application-autoscaling register-scalable-target
--service-namespace dynamodb
--resource-id "table/TestTable"
--scalable-dimension "dynamodb:table:WriteCapacityUnits"
--min-capacity 5
--max-capacity 10
--role-arn roleARN
参考:
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/autoscaling.cli.html
希望它有帮助。
您需要这样的register_scalable_target
:
import boto3
auto_scaling_client = boto3.client('application-autoscaling')
# Read capacity
auto_scaling_client.register_scalable_target(ServiceNamespace='dynamodb',
ResourceId='table/foo_table',
ScalableDimension='dynamodb:table:ReadCapacityUnits',
MinCapacity=1,
MaxCapacity=10)
# Write capacity
auto_scaling_client.register_scalable_target(ServiceNamespace='dynamodb',
ResourceId='table/foo_table',
ScalableDimension='dynamodb:table:WriteCapacityUnits',
MinCapacity=1,
MaxCapacity=10)
如果要调整目标百分比,则必须这样使用put_scaling_policy
(仅在这里显示的写入容量单位,因为我很懒惰):
target_percentage = 70.0
cooldown_in_seconds = 30
auto_scaling_client.put_scaling_policy(ServiceNamespace='dynamodb',
ResourceId='table/foo_table',
PolicyType='TargetTrackingScaling',
PolicyName='ScaleDynamoDBWriteCapacityUtilization',
ScalableDimension='dynamodb:table:WriteCapacityUnits',
TargetTrackingScalingPolicyConfiguration={
'TargetValue': target_percentage,
'PredefinedMetricSpecification': {
'PredefinedMetricType': 'DynamoDBWriteCapacityUtilization'
},
'ScaleOutCooldown': cooldown_in_seconds,
'ScaleInCooldown': cooldown_in_seconds
})