この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは!DA(データアナリティクス)事業本部 サービスソリューション部の大高です。
最近、Amazon RDS for PostgreSQLで作成時に指定できるバージョンが一部廃止されていることを教えてもらいました。 一方で「実際にインスタンス作成時に利用できるバージョンはどうやって確認したらよいのか?」が気になったので調べてみました。
前提
このエントリではAWS CLIを利用しますが、わたしは以下のとおりバージョン2.4.23
のAWS CLIを利用しています。
% aws --version
aws-cli/2.4.23 Python/3.8.8 Darwin/20.6.0 exe/x86_64 prompt/off
rds describe-db-engine-versions コマンド
AWS CLIにはrds describe-db-engine-versions
というコマンドがあります。
このコマンドでインスタンス作成時に指定できるバージョンが分かるようなので少し試してみました。
DBインスタンスのデフォルトバージョン
まずは、デフォルトのバージョン表示についてです。
以下の公式ドキュメントに記載されているように、rds describe-db-engine-versions
コマンドに--default-only
オプションを指定して実行すると、DBインスタンス作成時のデフォルトバージョンが確認できます。
% aws rds describe-db-engine-versions --default-only --engine postgres
実際に実行すると以下のようになりました。
% aws rds describe-db-engine-versions --default-only --engine postgres
{
"DBEngineVersions": [
{
"Engine": "postgres",
"EngineVersion": "13.4",
"DBParameterGroupFamily": "postgres13",
"DBEngineDescription": "PostgreSQL",
"DBEngineVersionDescription": "PostgreSQL 13.4-R1",
"ValidUpgradeTarget": [
{
"Engine": "postgres",
"EngineVersion": "13.5",
"Description": "PostgreSQL 13.5-R1",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false
},
{
"Engine": "postgres",
"EngineVersion": "14.1",
"Description": "PostgreSQL 14.1-R1",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": true
}
],
"ExportableLogTypes": [
"postgresql",
"upgrade"
],
"SupportsLogExportsToCloudwatchLogs": true,
"SupportsReadReplica": true,
"SupportedFeatureNames": [
"Lambda",
"s3Export",
"s3Import"
],
"Status": "available",
"SupportsParallelQuery": false,
"SupportsGlobalDatabases": false,
"MajorEngineVersion": "13",
"SupportsBabelfish": false
}
]
}
DBEngineVersionDescription
とEngineVersion
あたりにバージョン情報が、Status
に利用可否が表示されているのが分かりますね。
2022/03/07現在だと13.4
がデフォルトバージョンになるようです。
利用できるバージョンを一覧で表示したい
今度は、これをベースに一覧表示してみたいと思います。
一覧表示をする場合には--query
オプションと、--output table
オプションを利用すると良さそうなので、以下のエントリを参考にさせていただきつつ、試してみました。
--query
オプションには、先程確認した際に利用できそうだったDBEngineVersionDescription
、EngineVersion
、Status
を含めてみます。また、--output table
と指定することで表形式で出力できます。
実際に試したコマンドは以下のようになります。
% aws rds describe-db-engine-versions \
--engine postgres \
--query 'DBEngineVersions[].[DBEngineVersionDescription,EngineVersion,Status]' \
--output table
-------------------------------------------------
| DescribeDBEngineVersions |
+-----------------------+---------+-------------+
| PostgreSQL 9.6.9-R1 | 9.6.9 | available |
| PostgreSQL 9.6.11-R1 | 9.6.11 | available |
| PostgreSQL 9.6.15-R1 | 9.6.15 | available |
| PostgreSQL 9.6.22-R1 | 9.6.22 | available |
| PostgreSQL 9.6.23-R1 | 9.6.23 | available |
| PostgreSQL 9.6.24-R1 | 9.6.24 | available |
| PostgreSQL 10.17-R1 | 10.17 | available |
| PostgreSQL 10.18-R1 | 10.18 | available |
| PostgreSQL 10.19-R1 | 10.19 | available |
| PostgreSQL 11.1-R1 | 11.1 | available |
| PostgreSQL 11.4-R1 | 11.4 | available |
| PostgreSQL 11.5-R1 | 11.5 | available |
| PostgreSQL 11.6-R1 | 11.6 | available |
| PostgreSQL 11.8-R1 | 11.8 | available |
| PostgreSQL 11.10-R1 | 11.10 | available |
| PostgreSQL 11.12-R1 | 11.12 | available |
| PostgreSQL 11.13-R1 | 11.13 | available |
| PostgreSQL 11.14-R1 | 11.14 | available |
| PostgreSQL 12.6-R1 | 12.6 | available |
| PostgreSQL 12.7-R1 | 12.7 | available |
| PostgreSQL 12.8-R1 | 12.8 | available |
| PostgreSQL 12.9-R1 | 12.9 | available |
| PostgreSQL 13.3-R1 | 13.3 | available |
| PostgreSQL 13.4-R1 | 13.4 | available |
| PostgreSQL 13.5-R1 | 13.5 | available |
| PostgreSQL 14.1-R1 | 14.1 | available |
+-----------------------+---------+-------------+
ここで表示されたバージョンが、2022/03/07現在で利用できるバージョンということが分かりました。
利用できなくなったバージョンも含めて表示したい
最後に、利用できなくなったバージョンも含めて表示してみます。
標準だと利用できるバージョンしか表示されないので、--include-all
オプションを追加して利用できなくなったバージョンも表示させます。
% aws rds describe-db-engine-versions \
--engine postgres \
--include-all \
--query 'DBEngineVersions[].[DBEngineVersionDescription,EngineVersion,Status]' \
--output table
--------------------------------------------------
| DescribeDBEngineVersions |
+-----------------------+---------+--------------+
| PostgreSQL 9.3.1-R1 | 9.3.1 | deprecated |
| PostgreSQL 9.3.2-R1 | 9.3.2 | deprecated |
| PostgreSQL 9.3.3-R1 | 9.3.3 | deprecated |
| PostgreSQL 9.3.5-R1 | 9.3.5 | deprecated |
| PostgreSQL 9.3.6-R1 | 9.3.6 | deprecated |
| PostgreSQL 9.3.9-R1 | 9.3.9 | deprecated |
| PostgreSQL 9.3.10-R1 | 9.3.10 | deprecated |
| PostgreSQL 9.3.12-R1 | 9.3.12 | deprecated |
| PostgreSQL 9.3.14-R1 | 9.3.14 | deprecated |
| PostgreSQL 9.3.16-R1 | 9.3.16 | deprecated |
| PostgreSQL 9.3.17-R1 | 9.3.17 | deprecated |
| PostgreSQL 9.3.19-R1 | 9.3.19 | deprecated |
| PostgreSQL 9.3.20-R1 | 9.3.20 | deprecated |
| PostgreSQL 9.3.22-R1 | 9.3.22 | deprecated |
| PostgreSQL 9.3.23-R1 | 9.3.23 | deprecated |
| PostgreSQL 9.3.24-R1 | 9.3.24 | deprecated |
| PostgreSQL 9.3.25-R1 | 9.3.25 | deprecated |
| PostgreSQL 9.4.1-R1 | 9.4.1 | deprecated |
| PostgreSQL 9.4.4-R1 | 9.4.4 | deprecated |
| PostgreSQL 9.4.5-R1 | 9.4.5 | deprecated |
| PostgreSQL 9.4.7-R1 | 9.4.7 | deprecated |
| PostgreSQL 9.4.9-R1 | 9.4.9 | deprecated |
| PostgreSQL 9.4.11-R1 | 9.4.11 | deprecated |
| PostgreSQL 9.4.12-R1 | 9.4.12 | deprecated |
| PostgreSQL 9.4.14-R1 | 9.4.14 | deprecated |
| PostgreSQL 9.4.15-R1 | 9.4.15 | deprecated |
| PostgreSQL 9.4.17-R1 | 9.4.17 | deprecated |
| PostgreSQL 9.4.18-R1 | 9.4.18 | deprecated |
| PostgreSQL 9.4.19-R1 | 9.4.19 | deprecated |
| PostgreSQL 9.4.20-R1 | 9.4.20 | deprecated |
| PostgreSQL 9.4.21-R1 | 9.4.21 | deprecated |
| PostgreSQL 9.4.23-R1 | 9.4.23 | deprecated |
| PostgreSQL 9.4.24-R1 | 9.4.24 | deprecated |
| PostgreSQL 9.4.25-R1 | 9.4.25 | deprecated |
| PostgreSQL 9.4.26-R1 | 9.4.26 | deprecated |
| PostgreSQL 9.5.2-R1 | 9.5.2 | deprecated |
| PostgreSQL 9.5.4-R1 | 9.5.4 | deprecated |
| PostgreSQL 9.5.6-R1 | 9.5.6 | deprecated |
| PostgreSQL 9.5.7-R1 | 9.5.7 | deprecated |
| PostgreSQL 9.5.9-R1 | 9.5.9 | deprecated |
| PostgreSQL 9.5.10-R1 | 9.5.10 | deprecated |
| PostgreSQL 9.5.12-R1 | 9.5.12 | deprecated |
| PostgreSQL 9.5.13-R1 | 9.5.13 | deprecated |
| PostgreSQL 9.5.14-R1 | 9.5.14 | deprecated |
| PostgreSQL 9.5.15-R1 | 9.5.15 | deprecated |
| PostgreSQL 9.5.16-R1 | 9.5.16 | deprecated |
| PostgreSQL 9.5.18-R1 | 9.5.18 | deprecated |
| PostgreSQL 9.5.19-R1 | 9.5.19 | deprecated |
| PostgreSQL 9.5.20-R1 | 9.5.20 | deprecated |
| PostgreSQL 9.5.21-R1 | 9.5.21 | deprecated |
| PostgreSQL 9.5.22-R1 | 9.5.22 | deprecated |
| PostgreSQL 9.5.23-R1 | 9.5.23 | deprecated |
| PostgreSQL 9.5.24-R1 | 9.5.24 | deprecated |
| PostgreSQL 9.5.25-R1 | 9.5.25 | deprecated |
| PostgreSQL 9.6.1-R1 | 9.6.1 | deprecated |
| PostgreSQL 9.6.2-R1 | 9.6.2 | deprecated |
| PostgreSQL 9.6.3-R1 | 9.6.3 | deprecated |
| PostgreSQL 9.6.5-R1 | 9.6.5 | deprecated |
| PostgreSQL 9.6.6-R1 | 9.6.6 | deprecated |
| PostgreSQL 9.6.8-R1 | 9.6.8 | deprecated |
| PostgreSQL 9.6.9-R1 | 9.6.9 | available |
| PostgreSQL 9.6.10-R1 | 9.6.10 | deprecated |
| PostgreSQL 9.6.11-R1 | 9.6.11 | available |
| PostgreSQL 9.6.12-R1 | 9.6.12 | deprecated |
| PostgreSQL 9.6.14-R1 | 9.6.14 | deprecated |
| PostgreSQL 9.6.15-R1 | 9.6.15 | available |
| PostgreSQL 9.6.16-R1 | 9.6.16 | deprecated |
| PostgreSQL 9.6.17-R1 | 9.6.17 | deprecated |
| PostgreSQL 9.6.18-R1 | 9.6.18 | deprecated |
| PostgreSQL 9.6.19-R1 | 9.6.19 | deprecated |
| PostgreSQL 9.6.20-R1 | 9.6.20 | deprecated |
| PostgreSQL 9.6.21-R1 | 9.6.21 | deprecated |
| PostgreSQL 9.6.22-R1 | 9.6.22 | available |
| PostgreSQL 9.6.23-R1 | 9.6.23 | available |
| PostgreSQL 9.6.24-R1 | 9.6.24 | available |
| PostgreSQL 10.1-R1 | 10.1 | deprecated |
| PostgreSQL 10.3-R1 | 10.3 | deprecated |
| PostgreSQL 10.4-R1 | 10.4 | deprecated |
| PostgreSQL 10.5-R1 | 10.5 | deprecated |
| PostgreSQL 10.6-R1 | 10.6 | deprecated |
| PostgreSQL 10.7-R1 | 10.7 | deprecated |
| PostgreSQL 10.9-R1 | 10.9 | deprecated |
| PostgreSQL 10.10-R1 | 10.10 | deprecated |
| PostgreSQL 10.11-R1 | 10.11 | deprecated |
| PostgreSQL 10.12-R1 | 10.12 | deprecated |
| PostgreSQL 10.13-R1 | 10.13 | deprecated |
| PostgreSQL 10.14-R1 | 10.14 | deprecated |
| PostgreSQL 10.15-R1 | 10.15 | deprecated |
| PostgreSQL 10.16-R1 | 10.16 | deprecated |
| PostgreSQL 10.17-R1 | 10.17 | available |
| PostgreSQL 10.18-R1 | 10.18 | available |
| PostgreSQL 10.19-R1 | 10.19 | available |
| PostgreSQL 11.1-R1 | 11.1 | available |
| PostgreSQL 11.2-R1 | 11.2 | deprecated |
| PostgreSQL 11.4-R1 | 11.4 | available |
| PostgreSQL 11.5-R1 | 11.5 | available |
| PostgreSQL 11.6-R1 | 11.6 | available |
| PostgreSQL 11.7-R1 | 11.7 | deprecated |
| PostgreSQL 11.8-R1 | 11.8 | available |
| PostgreSQL 11.9-R1 | 11.9 | deprecated |
| PostgreSQL 11.10-R1 | 11.10 | available |
| PostgreSQL 11.11-R1 | 11.11 | deprecated |
| PostgreSQL 11.12-R1 | 11.12 | available |
| PostgreSQL 11.13-R1 | 11.13 | available |
| PostgreSQL 11.14-R1 | 11.14 | available |
| PostgreSQL 12.2-R1 | 12.2 | deprecated |
| PostgreSQL 12.3-R1 | 12.3 | deprecated |
| PostgreSQL 12.4-R1 | 12.4 | deprecated |
| PostgreSQL 12.5-R1 | 12.5 | deprecated |
| PostgreSQL 12.6-R1 | 12.6 | available |
| PostgreSQL 12.7-R1 | 12.7 | available |
| PostgreSQL 12.8-R1 | 12.8 | available |
| PostgreSQL 12.9-R1 | 12.9 | available |
| PostgreSQL 13.1-R1 | 13.1 | deprecated |
| PostgreSQL 13.2-R1 | 13.2 | deprecated |
| PostgreSQL 13.3-R1 | 13.3 | available |
| PostgreSQL 13.4-R1 | 13.4 | available |
| PostgreSQL 13.5-R1 | 13.5 | available |
| PostgreSQL 14.1-R1 | 14.1 | available |
+-----------------------+---------+--------------+
すべて表示されました。Status
がdeprecated
のレコードが廃止されたバージョンです。
なお、9.3
は2013年のリリースなので、Amazon RDS for PostgreSQLの歴史を感じますね。
DBインスタンスのデフォルトバージョンだけを表示したい
ここまでをふまえると、単純にDBインスタンスのデフォルトバージョンだけを表示したい場合は以下のコマンドで表示できますね。
% aws rds describe-db-engine-versions \
--engine postgres \
--default-only \
--query 'DBEngineVersions[].[EngineVersion]' \
--output text
13.4
まとめ
以上、Amazon RDS for PostgreSQL で作成時に指定できるバージョンを調べてみました。
個人的にはAWS CLIはjq
コマンドを組み合わせて使うことが多いのですが、今回--query
と--output
オプションを初めて使ってみて面白かったです。
どなたかのお役に立てば幸いです。それでは!