添加对AWS IAM令牌连接到Redis的支持

xxhby3vn  于 2023-06-21  发布在  Redis
关注(0)|答案(1)|浏览(92)

我尝试连接到AWS ElasticCache Redis服务器,但总是遇到此错误:

{
            "name": "Redis connection health check",
            "status": "DOWN",
            "data": {
                "reason": "client [<default>]: timeout"
            }
        },

这是因为我需要在尝试连接之前生成一个令牌。我尝试使用低杠杆驱动程序解释这里。但是我找不到如何通过任何AwsCredentialsProvider。
这个来自AWS的sample code使用了Lettuce驱动程序。
这里有一些aws documentation
我必须使用它与STSAssumeRoleSessionCredentialsProvider
这里有一些AWS documentation
如何让它工作?
谢谢你

fcg9iug3

fcg9iug31#

对于这样的用例,您需要提供一个实现RedisHostsProvider的CDI bean:

@ApplicationScoped
@Identifier("my-host-provider") // the name of the host provider
public class ExampleRedisHostProvider implements RedisHostsProvider {
    @Override
    public Set<URI> getHosts() {
        // Compute your token
        var host = ...
        // Create the URI
        return Collections.singleton(URI.create(host));
    }
}

它是一个CDI bean,因此它可以创建应用程序配置(@ConfigProperty)或使用其他bean(使用普通的@Inject)。
然后,您需要配置Redis客户端以使用您的主机提供程序:

quarkus.redis.hosts-provider-name=my-host-provider
  • 参考资料 *:
  • https://quarkus.io/guides/redis-reference#programmatic-redis-hosts
  • https://quarkus.io/guides/redis-reference#customize-the-redis-options-programmatically

相关问题