Как я могу переключить «Применить те же настройки к глобальным вторичным индексам», используя код? - PullRequest
0 голосов
/ 24 апреля 2018

Я работаю с Boto3 для создания моих таблиц в DynamoDB. Я включил автоматическое масштабирование, используя следующий код:

def conf_auto_scaling(self, table_name):
    print("INFO :: Creating auto scaling for Table [%s]" % table_name)

    # Read capacity
    self.as_c.register_scalable_target(ServiceNamespace='dynamodb',
                                       ResourceId='table/%s' % table_name,
                                       ScalableDimension='dynamodb:table:ReadCapacityUnits',
                                       MinCapacity=5,
                                       MaxCapacity=4000)
    # Write capacity
    self.as_c.register_scalable_target(ServiceNamespace='dynamodb',
                                       ResourceId='table/%s' % table_name,
                                       ScalableDimension='dynamodb:table:WriteCapacityUnits',
                                       MinCapacity=5,
                                       MaxCapacity=1000)

    percent_of_use_to_aim_for = 70.0
    scale_out_cooldown_in_seconds = 60
    scale_in_cooldown_in_seconds = 60
    self.as_c.put_scaling_policy(ServiceNamespace='dynamodb',
                                 ResourceId='table/%s' % table_name,
                                 PolicyType='TargetTrackingScaling',
                                 PolicyName='ScaleDynamoDBReadCapacityUtilization',
                                 ScalableDimension='dynamodb:table:ReadCapacityUnits',
                                 TargetTrackingScalingPolicyConfiguration={
                                     'TargetValue': percent_of_use_to_aim_for,
                                     'PredefinedMetricSpecification': {
                                         'PredefinedMetricType': 'DynamoDBReadCapacityUtilization'
                                     },
                                     'ScaleOutCooldown': scale_out_cooldown_in_seconds,
                                     'ScaleInCooldown': scale_in_cooldown_in_seconds
                                 })
    self.as_c.put_scaling_policy(ServiceNamespace='dynamodb',
                                 ResourceId='table/%s' % table_name,
                                 PolicyType='TargetTrackingScaling',
                                 PolicyName='ScaleDynamoDBWriteCapacityUtilization',
                                 ScalableDimension='dynamodb:table:WriteCapacityUnits',
                                 TargetTrackingScalingPolicyConfiguration={
                                     'TargetValue': percent_of_use_to_aim_for,
                                     'PredefinedMetricSpecification': {
                                         'PredefinedMetricType': 'DynamoDBWriteCapacityUtilization'
                                     },
                                     'ScaleOutCooldown': scale_out_cooldown_in_seconds,
                                     'ScaleInCooldown': scale_in_cooldown_in_seconds
                                 })

Как включить параметр «Применить те же настройки к глобальным вторичным индексам»?

Apply same settings to global secondary indexes

1 Ответ

0 голосов
/ 23 мая 2018

Помимо кода, необходимого для установки политики масштабирования на уровне «таблицы», у вас также есть код на уровне «индекса».

Таким образом, для установки политики масштабирования на уровне «индекса» необходимо вызвать put_scaling_policy , но с другими значениями для ResourceId и ScalableDimension :

Например:

auto_scaling_client.put_scaling_policy(
            ServiceNamespace='dynamodb',
            ResourceId=f'table/{PUT-HERE-YOUR-TABLE NAME}/index/{YOUR-INDEX-NAME}',
            PolicyType='TargetTrackingScaling',
            PolicyName='ScaleDynamoDBWriteCapacityUtilization',
            ScalableDimension='dynamodb:index:WriteCapacityUnits',
            TargetTrackingScalingPolicyConfiguration={
                'TargetValue': percent_of_use_to_aim_for,
                'PredefinedMetricSpecification': {
                    'PredefinedMetricType': 'DynamoDBWriteCapacityUtilization'
                },
                'ScaleOutCooldown': scale_out_cooldown_in_seconds,
                'ScaleInCooldown': scale_in_cooldown_in_seconds
            }

Обратите внимание, что:

  • ResourceId получает полное имя индекса
  • ScalableDimensions содержит index вместо table , т.е. DynamoDb: Индекс : WriteCapacityUnits вместо DynamodB: Таблица : WriteCapacityUnits
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...