我使用 terraform 创建了一个带有 redis 的弹性缓存实例。这是我使用的代码:
resource "aws_security_group" "main" {
name = "redis-security-group"
description = "Controls access to the redis instance"
vpc_id = var.vpc_id
ingress {
protocol = "-1"
from_port = 0
to_port = 0
cidr_blocks = ["0.0.0.0/0"]
}
egress {
protocol = "-1"
from_port = 0
to_port = 0
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_elasticache_subnet_group" "main" {
name = "db-subnet-group"
subnet_ids = var.public_subnets_ids
}
resource "aws_elasticache_cluster" "main" {
cluster_id = "redis-cluster"
subnet_group_name = aws_elasticache_subnet_group.main.name
security_group_ids = [aws_security_group.main.id]
engine = "redis"
node_type = "cache.t3.small"
num_cache_nodes = 1
parameter_group_name = "default.redis6.x"
snapshot_retention_limit = 0
engine_version = "6.x"
port = 6379
}
如您所见,我没有定义任何类型的密码(我没有在文档中看到该选项)。如果我尝试从正确配置的 EC2 实例进行连接(您无法从外部 aws 访问 redis 弹性缓存),我可以在不指定用户/密码的情况下完美连接。
当我的网络服务器尝试连接到它时,问题就出现了,因为我没有指定密码。我收到以下错误:
redis.exceptions.ResponseError: AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?
没有密码的连接字符串适用于redis-cli
,但不适用于 python 中的 redis。所以,我想知道以下几点:
- 有没有办法通过 terraform/bash 脚本在我的 redis 实例中设置密码?这样我就可以从我的 python web 服务器正常使用它。
- 有没有办法将 python redis 设置为不需要密码?