CDK For TerraformでAuroraを管理している際に拡張モニタリングを反映する際にエラーが発生
- エラー内容
A MonitoringRoleARN value is required if you specify a MonitoringInterval value other than 0.
元々の定義
new aws.rdsClusterInstance.RdsClusterInstance(this, `auroraclusterinstance`, {
identifier: auroraInstanceName,
clusterIdentifier: AuroraCluster.clusterIdentifier,
engine: "aurora-postgresql",
instanceClass: "db.t4g.medium",
autoMinorVersionUpgrade: false,
promotionTier: i == 0 ? 1 : 2,
dbParameterGroupName: "instance-psql14-group",
caCertIdentifier: "rds-ca-rsa4096-g1", // 証明書
applyImmediately: false, // 即時適用
performanceInsightsEnabled: true, // パフォーマンスインサイト有効
monitoringInterval: 0, // 拡張モニタリング設定
});
拡張モニタリングを有効にするにはmonitoringIntervalの値を0以外にする必要があるが、その場合はMonitoringRoleARNを指定する必要があります。
変更した定義
new aws.rdsClusterInstance.RdsClusterInstance(this, `auroraclusterinstance`, {
identifier: auroraInstanceName,
clusterIdentifier: AuroraCluster.clusterIdentifier,
engine: "aurora-postgresql",
instanceClass: "db.t4g.medium",
autoMinorVersionUpgrade: false,
promotionTier: i == 0 ? 1 : 2,
dbParameterGroupName: "instance-psql14-group",
caCertIdentifier: "rds-ca-rsa4096-g1", // 証明書
applyImmediately: false, // 即時適用
performanceInsightsEnabled: true, // パフォーマンスインサイト有効
monitoringInterval: 15, // 拡張モニタリング設定
monitoringRoleArn: `arn:aws:iam::${accountId}:role/rds-monitoring-role`, // 拡張モニタリング有効時のIAMロール
});
拡張モニタリングを有効にするためmonitoringInterval
の値を15、
monitoringRoleArnにロールを設定するようにしました。
ただこの設定だと再び拡張モニタリングを無効にしたときに以下エラーになってしまいます。
Error: updating RDS Cluster Instance (aurorainstance): InvalidParameterCombination: You must specify a MonitoringInterval value other than 0 when you specify a MonitoringRoleARN value.
0にする場合はmonitoringRoleArn
の指定はしないようにする必要があります。
そのため最終的な定義は以下のようにしました。
monitoringInterval: IndividualConfig.rdsConfig.monitoringInterval || 0, // 拡張モニタリングの有効化 0は無効
// 拡張モニタリング有効時のみIAMロールを設定する。そうしないとエラーになる。
...(IndividualConfig.rdsConfig.monitoringInterval > 0 && {
monitoringRoleArn: `arn:aws:iam::${accountId}:role/rds-monitoring-role`, // 拡張モニタリング有効時のIAMロール
}),
monitoringInterval
を外部パラメータとしてもち、0以上だった場合は
IAMロールを設定するというように分岐ロジックを実装しました。
これによりエラーが発生せず、拡張モタリングのパラメータ指定だけで
有効無効の制御ができるようになりました。