【问题标题】:Specify autoscaling of dynamodb with boto3 client使用 boto3 客户端指定 dynamodb 的自动缩放
【发布时间】:2018-03-16 11:40:32
【问题描述】:

我们一直在使用 boto3 创建和写入 dynamodb 表。它运行良好,但我们还想在创建表时指定自动缩放属性 this is now an option 。我知道这可以手动完成,但我们希望通过我们的 python 后端使用 boto3 创建各种表时自动化它。有没有人成功做到这一点?如果是这样,是否可以使用 boto3 dynamodb 客户端、更高级别的 boto3 客户端选项或其他方式?

【问题讨论】:

    标签: amazon-dynamodb boto3


    【解决方案1】:

    这是自动缩放的文档,

    http://boto3.readthedocs.io/en/latest/reference/services/application-autoscaling.html

    您需要使用命名空间“dynamodb”来自动缩放 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

    希望对你有帮助。

    【讨论】:

    • 甜蜜,正是我想要的。实际上我正在尝试这样做,但不小心使用了autoscaling 而不是application-autoscaling 客户端,所以显然它不起作用。哦!
    【解决方案2】:

    你需要像这样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
                                           })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多