このトピックでは、Terraformを使用してApsaraDB RDS for PostgreSQLインスタンスのパラメーターを変更し、パラメーター変更ログを照会する方法について説明します。
このトピックのサンプルコードは、数回クリックするだけで実行できます。 詳細については、「Terraform Explorer」をご参照ください。
前提条件
RDSインスタンスが作成されました。 詳細については、「RDSインスタンスの作成」をご参照ください。
RDS インスタンスが実行中の状態である必要があります。 次のいずれかの方法を使用して、RDSインスタンスが [実行中] 状態であるかどうかを確認できます。
クエリインスタンスの詳細に記載されている手順に従って、statusパラメーターの値を確認します。 値が [実行中] の場合、RDSインスタンスは [実行中] 状態です。
ApsaraDB RDSコンソールにログインし、必要なリージョンに切り替えてRDSインスタンスを見つけ、インスタンスのステータスを確認します。
Alibaba Cloudアカウントには、アカウント内のリソースに対するすべての権限があります。 Alibaba Cloudアカウントが漏洩した場合、リソースは大きなリスクにさらされます。 Resource Access Management (RAM) ユーザーを使用し、RAMユーザーのAccessKeyペアを作成することを推奨します。 詳細については、「RAMユーザーの作成」および「AccessKeyペアの作成」をご参照ください。
RAMを使用して、クラウドリソースに対するアクセス許可を効率的に管理する必要があります。 これにより、マルチユーザーコラボレーションの要件を満たすことができ、最小限の権限 (PoLP) の原則に基づいてユーザーに権限を付与して、過度の権限によるセキュリティの脆弱性を防ぐことができます。 詳細については、「RAMユーザーへの権限付与」をご参照ください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "vpc:DescribeVpcAttribute", "vpc:DescribeRouteTableList", "vpc:DescribeVSwitchAttributes", "vpc:DeleteVpc", "vpc:DeleteVSwitch", "vpc:CreateVpc", "vpc:CreateVSwitch" ], "Resource": "*" }, { "Action": "rds:*", "Resource": "*", "Effect": "Allow" }, { "Action": "dbs:*", "Resource": "acs:rds:*:*:*", "Effect": "Allow" }, { "Action": "hdm:*", "Resource": "acs:rds:*:*:*", "Effect": "Allow" }, { "Action": "dms:LoginDatabase", "Resource": "acs:rds:*:*:*", "Effect": "Allow" }, { "Effect": "Allow", "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "ram:ServiceName": [ "backupencryption.rds.aliyuncs.com" ] } } }, { "Effect": "Allow", "Action": "bss:ModifyAgreementRecord", "Resource": "*" }, { "Effect": "Allow", "Action": [ "bss:DescribeOrderList", "bss:DescribeOrderDetail", "bss:PayOrder", "bss:CancelOrder" ], "Resource": "*" } ] }Terraform環境を準備します。 Terraformを使用するには、次のいずれかの方法を使用できます。
Terraform ExplorerでTerraformを使用する: Alibaba Cloudは、Terraformのオンラインランタイム環境であるTerraform Explorerを提供します。 Terraform Explorerにログインした後、Terraformをインストールする必要なくTerraformを使用できます。 詳細については、「Terraform ExplorerでのTerraformの使用」をご参照ください。 この方法は、Terraformを高速かつ便利な方法で追加費用なしで使用およびデバッグするシナリオに適しています。
Cloud ShellでTerraformを使用する: TerraformはCloud Shellにプリインストールされ、ID認証情報が設定されています。 Cloud ShellでTerraformコマンドを直接実行できます。 詳細については、「Cloud ShellでのTerraformの使用」をご参照ください。 この方法は、Terraformを高速で便利な方法で低コストで使用およびデバッグするシナリオに適しています。
オンプレミスのマシンにTerraformをインストールして構成する: この方法は、ネットワークの状態が悪い、またはカスタム開発環境が使用されているシナリオに適しています。 詳細については、「ローカルPCでのTerraformのインストールと設定」をご参照ください。
Resources
特定のリソースに対して課金されます。 リソースが不要になった場合は、できるだけ早い機会にリソースを解放または購読解除する必要があります。
alicloud_vpc: 仮想プライベートクラウド (VPC) を作成します。
alicloud_vswitch: VPC用のvSwitchを作成します。
alicloud_db_instance: RDSインスタンスを作成します。
パラメーターを変更する
一部のパラメーターを変更すると、RDSインスタンスの再起動がトリガーされます。 パラメーターを変更すると、RDSインスタンスがすぐに再起動します。 パラメーターの変更によって再起動がトリガーされるかどうかを確認するには、ApsaraDB RDSコンソールにログインし、[編集可能なパラメーター] タブに移動し、パラメーターの [強制再起動] 列に値を表示する必要があります。 値がYesの場合、パラメーターの変更により再起動がトリガーされます。 値がNoの場合、パラメーターの変更は再起動をトリガーしません。 RDSインスタンスが再起動すると、アプリケーションはRDSインスタンスから切断されます。 アプリケーションがRDSインスタンスに再接続するように設定されていることを確認します。 影響を最小限に抑えるため、RDSインスタンスを再起動する前にビジネスを手配することを推奨します。 作業は慎重に行ってください。
authentication_timeoutパラメーターの値を120に変更する方法について説明します。
作業ディレクトリとmain.tfという名前の設定ファイルをディレクトリに作成します。 次のコードをmain.tf設定ファイルにコピーします。
必要なリソースを作成します。
variable "region" { default = "cn-heyuan" } provider "alicloud" { region = var.region } variable "zone_id" { default = "cn-heyuan-b" } variable "instance_type" { default = "pg.n2.2c.2m" } # Create a VPC. resource "alicloud_vpc" "main" { vpc_name = "alicloud" cidr_block = "172.16.0.0/16" } # Create a vSwitch. resource "alicloud_vswitch" "main" { vpc_id = alicloud_vpc.main.id cidr_block = "172.16.192.0/20" zone_id = var.zone_id } # Create an RDS instance with the default minor engine version of rds_postgres_1300_20240229. resource "alicloud_db_instance" "instance" { engine = "PostgreSQL" engine_version = "13.0" instance_type = var.instance_type instance_storage = "30" instance_charge_type = "Postpaid" vswitch_id = alicloud_vswitch.main.id }main.tfファイルで、
parametersフィールドをリソース "alicloud_db_instance" "instance" {}設定項目に追加し、次のコードスニペットに基づいてフィールドを設定します。... resource "alicloud_db_instance" "instance" { ... parameters { name = "authentication_timeout" value = "120" } }
次のコマンドを実行して、Terraformのランタイム環境を初期化します。
terraform init次の情報が返された場合、Terraformは初期化されます。
Initializing the backend... Initializing provider plugins... - Checking for available provider plugins... - Downloading plugin for provider "alicloud" (hashicorp/alicloud) 1.90.1... ... You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.実行計画を作成し、変更をプレビューします。
terraform plan次のコマンドを実行してリソースを作成します。
terraform apply実行中に、プロンプトに従って
yesと入力し、enterキーを押します。 コマンドが正常に実行されるまで待ちます。 次の情報が表示された場合、操作は成功です。alicloud_db_instance.instance: Modifying... [id=pgm-****] alicloud_db_instance.instance: Still modifying... [id=pgm-****, 10s elapsed] ... alicloud_db_instance.instance: Still modifying... [id=pgm-****, 3m10s elapsed] alicloud_db_instance.instance: Modifications complete after 3m10s [id=pgm-****] Apply complete! Resources: 0 added, 1 changed, 0 destroyed.結果を確認します。
terraform showコマンドを実行します。
次のコマンドを実行して、パラメーターが変更されているかどうかを確認します。
terraform show# alicloud_db_instance.instance: resource "alicloud_db_instance" "instance" { acl = null auto_upgrade_minor_version = "Auto" ca_type = null category = "HighAvailability" client_ca_cert = (sensitive value) client_ca_enabled = 0 client_cert_revocation_list = null client_crl_enabled = 0 connection_string = "pgm-f8z03v853neh87k8.pg.rds.aliyuncs.com" connection_string_prefix = "pgm-f8z03v853neh87k8" create_time = "2024-10-31T02:29:36Z" db_instance_ip_array_attribute = null db_instance_ip_array_name = null db_instance_storage_type = "cloud_essd" db_instance_type = "Primary" db_param_group_id = null db_time_zone = "Asia/Shanghai" deletion_protection = false engine = "PostgreSQL" engine_version = "13.0" force_restart = false ha_config = "Auto" id = "pgm-f8z03v853neh87k8" instance_charge_type = "Postpaid" instance_name = null instance_storage = 30 instance_type = "pg.n2.2c.2m" maintain_time = "18:00Z-22:00Z" manual_ha_time = null monitoring_period = 300 node_id = "32990438" period = 0 port = "5432" private_ip_address = "172.16.206.226" replication_acl = null resource_group_id = "rg-acfmykd63gtpfpa" security_group_ids = [] security_ip_mode = "normal" security_ip_type = null security_ips = [ "127.0.0.1", ] server_cert = (sensitive value) server_key = null sql_collector_config_value = 30 sql_collector_status = "Disabled" ssl_action = "Close" ssl_connection_string = null ssl_status = null status = "Running" storage_auto_scale = null storage_threshold = 0 storage_upper_bound = 0 target_minor_version = "rds_postgres_1300_20240830" tcp_connection_type = "LONG" tde_status = "Disabled" vpc_id = "vpc-f8zvtuuan0tjyas7muymk" vswitch_id = "vsw-f8zjvdbtv24927fmvrydl" whitelist_network_type = null zone_id = "cn-heyuan-a" parameters { name = "authentication_timeout" value = "120" } }ApsaraDB RDSコンソールにログインする
ApsaraDB RDSコンソールにログインし、パラメーターが変更されているかどうかを確認します。
クエリパラメーター変更ログ
main.tfファイルで、
data "alicloud_rds_modify_parameter_logs" "querylogs"設定項目を追加し、次のスニペットに基づいて設定項目を設定します。... resource "time_static" "example" {} data "alicloud_rds_modify_parameter_logs" "querylogs" { db_instance_id = alicloud_db_instance.instance.id start_time = formatdate("YYYY-MM-DD'T'hh:mm'Z'", timeadd(time_static.example.rfc3339, "-12h")) end_time = formatdate("YYYY-MM-DD'T'hh:mm'Z'", timeadd(time_static.example.rfc3339, "12h")) }以下のコマンドを実行します。
terraform apply実行中に、プロンプトに従って
yesと入力し、enterキーを押します。 コマンドが正常に実行されるまで待ちます。 次の情報が表示された場合、操作は成功です。alicloud_db_instance.instance: Refreshing state... [id=pgm-****] data.alicloud_rds_modify_parameter_logs.querylogs: Reading... alicloud_db_backup_policy.instance: Refreshing state... [id=pgm-****] data.alicloud_rds_modify_parameter_logs.querylogs: Read complete after 0s [id=6335****] No changes. Your infrastructure matches the configuration. Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed. Apply complete! Resources: 0 added, 0 changed, 0 destroyed.結果を確認します。
terraform showコマンドを実行します。
次のコマンドを実行して、パラメータ変更ログを表示します。
terraform show# data.alicloud_rds_modify_parameter_logs.querylogs: data "alicloud_rds_modify_parameter_logs" "querylogs" { db_instance_id = "pgm-f8z03v853neh87k8" end_time = "2024-10-31T23:59Z" id = "6722ee94" logs = [ { modify_time = "1730342339000" new_parameter_value = "120" old_parameter_value = "60" parameter_name = "authentication_timeout" status = "Applied" }, ] start_time = "2024-10-31T00:00Z" }
リソースのクリア
Terraformを使用して作成または管理された上記のリソースが不要になった場合は、次のコマンドを実行してリソースを解放します。 terraform destroyコマンドの詳細については、「一般的なコマンド」をご参照ください。
terraform destroy完全なサンプルコード
このトピックのサンプルコードは、数回クリックするだけで実行できます。 詳細については、「Terraform Explorer」をご参照ください。
サンプルコード
さらに多くの例を体験したい場合は、[クイックスタート] ページに移動し、対応するサービスのフォルダーにある例を表示します。
関連ドキュメント
Terraformの詳細については、Terraformとは何ですか? をご参照ください。
Terraformは、ROS (Resource Orchestration service) のマネージドサービスとして使用できます。 Terraformテンプレートを作成して、ApsaraDB RDSリソースを定義し、リソースパラメーターを指定し、リソースの依存関係を設定できます。 詳細については、「Terraformテンプレートの作成」をご参照ください。