Postgresql 如何使用terraform为RDS postgres db用户提供AWS IAM auth?
通过查看这个AWS博客:我注意到我需要在使用主用户名和密码登录后创建一个DB用户:Postgresql 如何使用terraform为RDS postgres db用户提供AWS IAM auth?,postgresql,terraform,amazon-rds,amazon-iam,Postgresql,Terraform,Amazon Rds,Amazon Iam,通过查看这个AWS博客:我注意到我需要在使用主用户名和密码登录后创建一个DB用户: CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS'; 我可以看到terraform有mysql\u user来配置mysql数据库用户: 但是,我找不到postgres\u用户。有没有办法为postgres用户提供IAM auth 在Postgres中,用户被称为“角色”。他们说: 角色可以被视为“用户”、“组”或两
CREATE USER {dbusername} IDENTIFIED WITH AWSAuthenticationPlugin as 'RDS';
我可以看到terraform有mysql\u user
来配置mysql数据库用户:
但是,我找不到
postgres\u用户
。有没有办法为postgres用户提供IAM auth 在Postgres中,用户被称为“角色”。他们说:
角色可以被视为“用户”、“组”或两者,具体取决于其使用方式
因此,要创建的TF资源是
要使IAM用户能够担任此角色,请执行以下操作
根据这些说明,最终的TF代码如下所示:
module "db" {
source = "terraform-aws-modules/rds/aws"
// ...
}
provider "postgresql" {
// ...
}
resource "postgresql_role" "pguser" {
login = true
name = var.pg_username
password = var.pg_password
roles = ["rds_iam"]
}
resource "aws_iam_user" "pguser" {
name = var.pg_username
}
resource "aws_iam_user_policy" "pguser" {
name = var.pg_username
user = aws_iam_user.pguser.id
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds-db:connect"
],
"Resource": [
"arn:aws:rds-db:${var.region}:${data.aws_caller_identity.current.account_id}:dbuser:${module.db.this_db_instance_resource_id}/${var.pg_username}"
]
}
]
}
EOF
}
模块“db”{
source=“地形aws模块/rds/aws”
// ...
}
提供程序“postgresql”{
// ...
}
资源“postgresql_角色”“pguser”{
login=true
name=var.pg\u用户名
密码=var.pg_密码
角色=[“rds_iam”]
}
资源“aws\U iam\U用户”“pguser”{
name=var.pg\u用户名
}
资源“aws\U iam\U用户策略”“pguser”{
name=var.pg\u用户名
user=aws\u iam\u user.pguser.id
政策=
module "db" {
source = "terraform-aws-modules/rds/aws"
// ...
}
provider "postgresql" {
// ...
}
resource "postgresql_role" "pguser" {
login = true
name = var.pg_username
password = var.pg_password
roles = ["rds_iam"]
}
resource "aws_iam_user" "pguser" {
name = var.pg_username
}
resource "aws_iam_user_policy" "pguser" {
name = var.pg_username
user = aws_iam_user.pguser.id
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rds-db:connect"
],
"Resource": [
"arn:aws:rds-db:${var.region}:${data.aws_caller_identity.current.account_id}:dbuser:${module.db.this_db_instance_resource_id}/${var.pg_username}"
]
}
]
}
EOF
}