1- data "aws_partition" "current" {}
2- data "aws_region" "current" {}
3- data "aws_caller_identity" "current" {}
1+ #
2+ # RDS Proxy
3+ #
44
5- data "aws_iam_policy_document" "main" {
6- count = var. create ? 1 : 0
7-
8- statement {
9- effect = " Allow"
10- actions = [
11- " secretsmanager:GetRandomPassword" ,
12- " secretsmanager:CreateSecret" ,
13- " secretsmanager:ListSecrets"
14- ]
15- resources = [
16- " *"
17- ]
18- }
19- statement {
20- effect = " Allow"
21- actions = [
22- " secretsmanager:*" ,
23- ]
24- resources = [
25- aws_secretsmanager_secret . main . 0 . arn
26- ]
27- }
28-
29- }
30- data "aws_iam_policy_document" "role_rds" {
31- count = var. create ? 1 : 0
32-
33- statement {
34- effect = " Allow"
35- principals {
36- type = " Service"
37- identifiers = [ " rds.amazonaws.com" ]
38- }
39- actions = [ " sts:AssumeRole" ]
40- }
41- }
42- resource "aws_iam_role" "role_rds" {
43- count = var. create ? 1 : 0
44-
45- name = " ${ var . db_proxy_name } -SecretManagerRole"
46- assume_role_policy = data. aws_iam_policy_document . role_rds . 0 . json
47-
48- tags = merge (
49- {
50- " Name" = " ${ format (" %s" , var. db_proxy_name )} -SecretManager"
51- },
52- var. default_tags ,
53- )
54- }
55- resource "aws_iam_policy" "main" {
56- count = var. create ? 1 : 0
57-
58- name = " ${ var . db_proxy_name } -SecretManagerPolicy"
59- path = " /"
60- policy = data. aws_iam_policy_document . main . 0 . json
61- }
62- resource "aws_iam_role_policy_attachment" "role_rds" {
63- count = var. create ? 1 : 0
64-
65- role = aws_iam_role. role_rds . 0 . name
66- policy_arn = aws_iam_policy. main . 0 . arn
67- }
68-
69- # # Secret Manager
70- resource "aws_secretsmanager_secret" "main" {
71- count = var. create ? 1 : 0
72-
73- name_prefix = " ${ var . db_proxy_name } -secret"
74- recovery_window_in_days = var. recovery_window_in_days
75- tags = var. default_tags
76- }
77- resource "aws_secretsmanager_secret_version" "main" {
78- count = var. create ? 1 : 0
79-
80- secret_id = aws_secretsmanager_secret. main . 0 . id
81- version_stages = var. version_stages
82- secret_string = jsonencode (var. secret_string )
83-
84- lifecycle {
85- ignore_changes = [ secret_string ]
86- }
87- }
88-
89- # # RDS Proxy
905resource "aws_db_proxy" "main" {
91- depends_on = [ aws_iam_role . role_rds ]
926 count = var. create ? 1 : 0
937
948 name = var. db_proxy_name
@@ -112,7 +26,7 @@ resource "aws_db_proxy" "main" {
11226
11327 tags = var. default_tags
11428}
115- resource "aws_db_proxy_default_target_group" "example " {
29+ resource "aws_db_proxy_default_target_group" "main " {
11630 count = var. create ? length (var. connection_pool_config ) : 0
11731
11832 db_proxy_name = aws_db_proxy. main . 0 . name
@@ -127,4 +41,12 @@ resource "aws_db_proxy_default_target_group" "example" {
12741 session_pinning_filters = lookup (var. connection_pool_config . value , " session_pinning_filters" , null )
12842 }
12943 }
44+ }
45+ resource "aws_db_proxy_target" "main" {
46+ count = var. create ? 1 : 0
47+
48+ db_instance_identifier = var. db_instance_identifier
49+ db_cluster_identifier = var. db_cluster_identifier
50+ db_proxy_name = aws_db_proxy. main . 0 . name
51+ target_group_name = aws_db_proxy_default_target_group. main . 0 . name
13052}
0 commit comments