1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ElastiCache】RBAC(Role-Based Access Control)が有効なRedisClusterにJedisで接続する

Posted at

RBAC(Role-Based Access Control)が有効になっているElastiCache RedisClusterに、EC2で動作するアプリケーションから、JavaのRedisクライアントライブラリであるJedisを使って接続する。

前提

  • 『Authenticating users with Role-Based Access Control (RBAC) 』(https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.RBAC.html) に従ってRedisClusterが作成されている
  • アプリケーションの動作するEC2から、RedisClusterへネットワーク設定的にアクセス可能である
    • openssl s_client -connect エンドポイント:6379 -quiet 等のコマンドで確認できる
  • 認証するユーザーのアクセス文字列に +cluster+ping が設定されている
    • +ping は設定しなくても繋がるが、設定しておかないとログにerrorが吐かれる

コード

import redis.clients.jedis.{BinaryJedisCluster, HostAndPort, JedisCluster, JedisPoolConfig}

// JedisClusterインスタンス生成 (RedisClusterへの接続)
val jedis = new JedisCluster(
  new HostAndPort("Clusterの設定エンドポイント", 6379),
  BinaryJedisCluster.DEFAULT_TIMEOUT, // connectionTimeout: Int
  BinaryJedisCluster.DEFAULT_TIMEOUT, // soTimeout: Int
  BinaryJedisCluster.DEFAULT_MAX_ATTEMPTS, // maxAttempts: Int
  "ユーザー名", // user: String
  "パスワード", // password: String
  null, // clientName: String
  new JedisPoolConfig(), // poolConfig: GenericObjectPoolConfig[Jedis]
  true// ssl: Boolean
)

// あとは生成したインスタンスを使って、許可されているコマンドを実行できる
jedis.set("test1", "テスト1")
jedis.set("test2", "テスト2")
jedis.set("test3", "テスト3")

println(jedis.get("test1")) // "テスト1"
println(jedis.get("test2")) // "テスト2"
println(jedis.get("test3")) // "テスト3"

エンドポイント、ユーザー名、パスワードは環境や設定に合わせて置き換えること。
connectionTimeoutsoTimeoutmaxAttempts もアプリケーションに合わせて適切に設定すること。
ちなみにデフォルト値は以下。

public static final int DEFAULT_TIMEOUT = 2000;
public static final int DEFAULT_MAX_ATTEMPTS = 5;
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?