【サンプルコマンドあり】ElastiCache(Redis)の パラメータグループまとめ

記事タイトルとURLをコピーする

はじめに

ElastiCache(Redis) のパラメータグループについてまとめました。

Memcached は触ってないので、今回は対象外です。

追加でわかったことがあれば追記します。

記事目安...5分

ElastiCache(Redis) パラメータグループとは?

ElastiCache 上にデプロイされた Redis の設定(=パラメータ) をAWS上で管理するリソースです。
RDS のパラメータグループとほぼ同じイメージです。

パラメータグループのパラメータ値を変更すると、アタッチされている ElastiCache 上にデプロイ中の Redis の設定情報が書き換わります。
あくまで、ElastiCache の設定情報を管理するわけではありません。

従って、ElastiCache の設定変更はマネコン やCLI で実施、Redis の設定変更はパラメータグループで実施するイメージです。(厳密にいえば、パラメータグループもマネコンや CLIで変更しますが。)

f:id:swx-sugaya:20210824185403p:plain

参考: https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ParameterGroups.html

パラメータグループの全体像

パラメータグループの全体像を図にすると以下のようなイメージです。

f:id:swx-sugaya:20210818190351p:plain

大きく3段階に分かれるので、上から紹介していきます。

f:id:swx-sugaya:20210818190459p:plain

①デフォルトかカスタムかで分かれる

まず、パラメータグループは大きく2種類に大きく分かれます。

  • デフォルトパラメータグループ
  • カスタムパラメータグループ

デフォルトパラメータグループ

デフォルトパラメータグループは AWS により最初から用意されているパラメータグループです。
パラメータ値の変更やパラメータグループの削除はできません。

You cannot modify or delete the default parameter groups.
引用元: https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ParameterGroups.Management.html

カスタムパラメータグループ

一方、カスタムパラメータグループは、ユーザが作成するパラメータグループです。
こちらはパラメータ値の変更, パラメータグループの削除どちらも制限なく実行できます。

比較表

デフォルトPG カスタムPG
作成者 AWS ユーザ
パラメータ変更 ×
PGの削除 ×

②Redis のバージョンごとに分かれる

デフォルトとカスタム両パラメータグループは、さらに 各 Redis のバージョンごとにも分かれます。

パラメータグループで指定したバージョンと ElastiCache Redis のバージョンが合致していないとアタッチはできないのでご注意ください。

③ノード用かクラスタ―用かで分かれる

各パラメータグループは、Redis バージョンが同じでも、さらに以下2種類に分かれます。

  • ノード用パラメータグループ
  • クラスター用パラメータグループ

どちらをアタッチするかは、「クラスタモード」を有効にするか否かで決定します。
有効の場合、クラスター用パラメータグループをアタッチします。

なお、両パラメータグループの違いは以下パラメータの値のみとなります(※)。
どうやらこのパラメータ値で制御しているようです。

パラメータ項目 クラスター用PGの値 ノード用PGの値
cluster-enabled yes no

※ CLI による出力 × diff コマンド で確認しました。

管理されるパラメータはどのような種類に分かれているのか?

パラメータグループで管理されるパラメータについても補足します。
ややこしいことにパラメータも2種類に分かれます。

  • Genearal Parameters
  • NodeType Specific Parameters

Genearal Parameters は全てのノードタイプで共通のパラメータです。

NodeType Specific Parameters は、特定のノードタイプでしか使えないパラメータです。

Tips

AWS CLI でパラメータグループのパラメータを取得する

■ 実行環境

$ aws --version
aws-cli/2.1.23 Python/3.7.3 Linux/4.19.128-microsoft-standard exe/x86_64.ubuntu.20 prompt/off

Case1. 指定したパラメータグループの Genearal Parameters を抜き出す

以下コマンドで指定したパラメータグループの Genearal Parameters を抜き出せます。

$ PG_NAME=<パラメータグループの名前> # e.g. default.redis6.x.cluster.on
$ Delimiter=<区切り文字> # e.g. ,
$ aws elasticache describe-cache-parameters \
--cache-parameter-group-name ${PG_NAME} \
--query "Parameters[].[ParameterName,ParameterValue,Description,Source,DataType,AllowedValues,IsModifiable,MinimumEngineVersion,ChangeType]" \
--output text | \
tr "\t" ${Delimiter}

Case2. 指定したパラメータグループの NodeType Specific Parameters を抜き出す

CLI で NodeType Specific Parameters を抜き出す方法は、調べた限りでは分かりませんでした orz

マネコンから取得する必要があります。

もし、やり方を知っている人いたらコメントください。

まとめ

一応ざっくりまとめです。

  • ElastiCache のパラメータグループは、①デフォルトか否か、②Redis バージョン、③クラスター用かノード用かで分かれる
  • パラメータグループのパラメータも、Genearal Parameters と NodeType Specific Parameters で分かれる
  • CLI では Genearal Parameters しか抜き出せない(たぶん)

以上です!

追加でわかったことあればまた記述します。

菅谷 歩 (記事一覧)