Redis 连接中的 NOPERM 问题

问题描述 投票:0回答:1
    @Bean
    fun redisConnectionFactory(): LettuceConnectionFactory {
        val redisConfiguration = RedisClusterConfiguration().apply {
            val (host, port, username, password) = redisProperties

            addClusterNode(RedisNode(host, port))
            this.username = username
            this.password = RedisPassword.of(password)
        }
        val lettuceClientConfiguration = LettuceClientConfiguration.builder().useSsl().build()
        return LettuceConnectionFactory(redisConfiguration, lettuceClientConfiguration)
    }

    @Bean
    fun redisCommands(): RedisModulesCommands<String, String> {
        val (host, port, username, password) = redisProperties

        val redisUri = RedisURI.builder()
            .withHost(host)
            .withPort(port)
            .withAuthentication(username, password.toCharArray())
            .withSsl(true)
            .build()

        val redisModulesClient = RedisModulesClusterClient.builder(redisUri)
            .build()
        val connect = redisModulesClient.connect()
        return connect.sync()
    }

    @Bean
    fun configureRedisAction() = ConfigureRedisAction.NO_OP

当我应用与 AWS ElastiCache 的连接时(设置访问 Stirng 是

on ~* -@all +@read +@write
)。

我看到这个错误日志。

Caused by: io.lettuce.core.RedisCommandExecutionException: NOPERM this user has no permissions to run the 'cluster|nodes' command

但我只是只使用redis命令

jsonGet 
jsonSet
不是
cluster|nodes
.

我该如何解决这个问题..?请回答我的问题。

我设置了 LettuceConnectionFactory 和 RedisModulesCommands。我希望与 AWS ElastiCache 成功连接。

redis spring-data-redis amazon-elasticache lettuce
1个回答
0
投票

在将客户端配置为连接到启用集群模式的部署时,客户端使用

CLUSTER NODES
命令发现集群中的所有节点并连接到它们。

因此,您需要为要连接的用户启用

CLUSTER NODES
命令。

您可以使用 ModifyUser 操作修改用户的访问字符串。例如,使用 AWS CLI:

aws elasticache modify-user --region $REGION --user-id $USER_ID --access-string "on ~* -@all +@read +@write +cluster|nodes"

并不是说更改会在下一个维护窗口中生效。为确保立即应用更改,您可以调用 ModifyReplicationGroup 操作并将

ApplyImmediately
设置为 `true。例如,使用 AWS CLI:

aws elasticache modify-replication-group --region us-east-1 --replication-group-id $REPLICATION_GROUP_ID --apply-immediately

相关文档:

© www.soinside.com 2019 - 2024. All rights reserved.