You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Terraform将apg_plan_mgmt加入AWS RDS预加载库?

问题描述

应用Terraform计划时触发PostgreSQL报错:

Error: pq: apg_plan_mgmt not in shared_preload_libraries

尝试在RDS集群参数组中手动添加该配置:

parameter {
  name         = "shared_preload_libraries"
  value        = "apg_plan_mgmt,pg_stat_statements"
  apply_method = "pending-reboot"
}

但收到AWS的参数值无效错误:

Terraform v1.6.2
on linux_amd64
Initializing plugins and modules...
aws_rds_cluster_parameter_group.qpm_cluster_parameter_group: Creating...
╷
│ Error: InvalidParameterValue: Invalid parameter value: apg_plan_mgmt for: shared_preload_libraries allowed values are: auto_explain,orafce,pgaudit,pg_similarity,pg_stat_statements,pg_hint_plan,pg_prewarm,plprofiler,pglogical,pg_cron
│   status code: 400, request id: 3063e79b-0344-4d2b-8433-61d2cddc2fd4

尝试创建扩展后仍触发最初的报错,需解决如何通过Terraform配置apg_plan_mgmt预加载的问题。

解决步骤
  • 确认引擎版本要求:apg_plan_mgmt仅支持PostgreSQL 13.7/R1、14.2/R1及更高版本的AWS RDS实例/集群,先检查Terraform中配置的engine_version是否符合要求。
  • 启用Performance Insights:apg_plan_mgmt是AWS Performance Insights的组件,无法手动添加到shared_preload_libraries,必须通过启用Performance Insights让AWS自动配置该参数。在Terraform的RDS集群或实例资源中添加以下配置:
    # 针对RDS集群
    resource "aws_rds_cluster" "example" {
      # 其他已有配置...
      performance_insights_enabled = true
      performance_insights_retention_period = 7 # 可根据需求设置,最小值为7天
    }
    
    # 针对单RDS实例
    resource "aws_db_instance" "example" {
      # 其他已有配置...
      performance_insights_enabled = true
      performance_insights_retention_period = 7
    }
    
  • 移除手动添加的参数:删除集群参数组中手动添加的apg_plan_mgmt配置,保留其他允许的预加载库(如pg_stat_statements)即可。
  • 重启RDS实例/集群:启用Performance Insights后,需要重启RDS资源让AWS自动将apg_plan_mgmt加入到shared_preload_libraries中。Terraform会在应用配置后提示需要重启,或者可通过apply_method = "pending-reboot"让参数修改在重启后生效。
  • 创建apg_plan_mgmt扩展:重启完成后,在数据库中执行创建扩展的SQL(可通过Terraform的null_resource结合local-exec实现):
    resource "null_resource" "create_apg_extension" {
      depends_on = [aws_rds_cluster.example] # 或对应的实例资源
    
      provisioner "local-exec" {
        command = "psql -h ${aws_rds_cluster.example.endpoint} -U ${var.db_username} -d ${var.db_name} -c 'CREATE EXTENSION IF NOT EXISTS apg_plan_mgmt;'"
      }
    }
    

内容的提问来源于stack exchange,提问作者sf8193

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:30:08