ablog

不器用で落着きのない技術者のメモ

Redshift のパラメータグループを AWS CLI で設定する

  • マネコンでパラメータグループやワークロード設定を行う。
  • 設定したパラメータを表示する
% aws redshift describe-cluster-parameters --parameter-group-name poc-auto-wlm
(中略)
        {
            "ParameterName": "max_concurrency_scaling_clusters",
            "ParameterValue": "3",
            "Description": "The maximum concurrency scaling clusters can be used.",
            "Source": "user",
            "DataType": "integer",
            "AllowedValues": "0-10",
            "ApplyType": "static",
            "IsModifiable": true
        },
(中略)
        {
            "ParameterName": "wlm_json_configuration",
            "ParameterValue": "[{\"user_group\":[\"dwh_batch_group\"],\"query_group\":[],\"auto_wlm\":true,\"queue_type\":\"auto\",\"name\":\"main_queue\",\"concurrency_scaling\":\"off\",\"priority\":\"high\",\"rules\":[{\"rule_name\":\"long_query_main_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_main_queue\",\"predicate\":[{\"metric_name\":\"query_blocks_read\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"user_group\":[\"short_dwh_tools_group\",\"short_users_L2_group\",\"short_application_L2_group\"],\"query_group\":[],\"auto_wlm\":true,\"queue_type\":\"auto\",\"name\":\"dwh_tool_queue\",\"rules\":[{\"rule_name\":\"long_query_dwh_tool_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_dwh_tool_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"user_group\":[\"short_users_L1_group\"],\"query_group\":[],\"auto_wlm\":true,\"queue_type\":\"auto\",\"name\":\"user_queue\",\"concurrency_scaling\":\"off\",\"priority\":\"low\",\"rules\":[{\"rule_name\":\"long_query_user_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_user_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"auto_wlm\":true,\"user_group\":[],\"query_group\":[],\"name\":\"Default queue\",\"concurrency_scaling\":\"off\",\"rules\":[{\"rule_name\":\"long_query_default_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_default_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"short_query_queue\":true}]",
            "Description": "wlm json configuration",
            "Source": "user",
            "DataType": "string",
            "ApplyType": "dynamic",
            "IsModifiable": true
        }
    ]
}
  • 設定したいパラメータ設定をコピーしてパラメータを JSON で定義する
    • redshift_parameter-group_config.json
[
  {
    "ParameterName": "max_concurrency_scaling_clusters",
    "ParameterValue": "3"
  },
  {
    "ParameterName": "wlm_json_configuration",
    "ParameterValue": "[{\"user_group\":[\"dwh_batch_group\"],\"query_group\":[],\"auto_wlm\":true,\"queue_type\":\"auto\",\"name\":\"main_queue\",\"concurrency_scaling\":\"off\",\"priority\":\"high\",\"rules\":[{\"rule_name\":\"long_query_main_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_main_queue\",\"predicate\":[{\"metric_name\":\"query_blocks_read\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"user_group\":[\"short_dwh_tools_group\",\"short_users_L2_group\",\"short_application_L2_group\"],\"query_group\":[],\"auto_wlm\":true,\"queue_type\":\"auto\",\"name\":\"dwh_tool_queue\",\"rules\":[{\"rule_name\":\"long_query_dwh_tool_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_dwh_tool_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"user_group\":[\"short_users_L1_group\"],\"query_group\":[],\"auto_wlm\":true,\"queue_type\":\"auto\",\"name\":\"user_queue\",\"concurrency_scaling\":\"off\",\"priority\":\"low\",\"rules\":[{\"rule_name\":\"long_query_user_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_user_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"auto_wlm\":true,\"user_group\":[],\"query_group\":[],\"name\":\"Default queue\",\"concurrency_scaling\":\"off\",\"rules\":[{\"rule_name\":\"long_query_default_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":10800}],\"action\":\"abort\"},{\"rule_name\":\"temp_usage_default_queue\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":5120}],\"action\":\"abort\"}]},{\"short_query_queue\":true}]"
  }
]
  • AWS CLI でパラメータグループを作成する。
# パラメータグループを作成する
$ aws redshift create-cluster-parameter-group --parameter-group-name poc-auto-wlm --parameter-group-family redshift-1.0 --description desc-poc-auto-wlm
# JSON の定義を設定する
$ aws redshift modify-cluster-parameter-group --parameter-group-name poc-auto-wlm --parameters file://redshift_parameter-group_config.json
# クラスターにパラメータグループをアタッチする
$ aws redshift  modify-cluster --cluster-identifier redshift-cluster-poc-2 --cluster-parameter-group-name poc-auto-wlm
# クラスターを再起動する
$ aws redshift reboot-cluster --cluster-identifier redshift-cluster-poc-2
  • AWS CLI でパラメータグループを削除する。
# クラスターのパラメータグループの設定をデフォルトに戻す
$ aws redshift  modify-cluster --cluster-identifier redshift-cluster-poc-2 --cluster-parameter-group-name default.redshift-1.0
# パラメータグループを削除する
$ aws redshift delete-cluster-parameter-group --parameter-group-name poc-auto-wlm
# クラスターを再起動する
$ aws redshift reboot-cluster --cluster-identifier redshift-cluster-poc-2