こんにちは。よっしーです(^^)
今日は、awscliを使用した利用可能なRDSインスタンスの調べる方法についてご紹介します。
背景
AWS環境でRDSを構築しようとした際に、RDSのどのバージョンが利用できるのかを調査したときの方法を備忘として残しました。
aws cliの設定
下記のコマンドで aws cli の使用するバージョンを指定します。
asdf local awscli 2.13.7
詳しい設定方法は下記の記事をご覧ください。
RDSの情報取得
下記のコマンドを実行します。
aws rds describe-db-engine-versions --profile terraform
下記のような出力なっていれば成功です。
% aws rds describe-db-engine-versions --profile terraform
{
"DBEngineVersions": [
{
"Engine": "aurora-mysql",
"EngineVersion": "5.7.mysql_aurora.2.07.9",
"DBParameterGroupFamily": "aurora-mysql5.7",
"DBEngineDescription": "Aurora MySQL",
"DBEngineVersionDescription": "Aurora (MySQL 5.7) 2.07.9",
"ValidUpgradeTarget": [
{
"Engine": "aurora-mysql",
"EngineVersion": "5.7.mysql_aurora.2.07.10",
"Description": "Aurora (MySQL 5.7) 2.07.10",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false,
"SupportedEngineModes": [
"provisioned"
],
"SupportsParallelQuery": false,
"SupportsGlobalDatabases": true,
"SupportsBabelfish": false,
"SupportsLocalWriteForwarding": false
},
{
"Engine": "aurora-mysql",
"EngineVersion": "5.7.mysql_aurora.2.11.2",
"Description": "Aurora (MySQL 5.7) 2.11.2",
"AutoUpgrade": true,
"IsMajorVersionUpgrade": false,
"SupportedEngineModes": [
"provisioned"
],
"SupportsParallelQuery": true,
"SupportsGlobalDatabases": true,
"SupportsBabelfish": false,
"SupportsLocalWriteForwarding": false
},
特定の情報を表示
これだと情報が多すぎるので、下記のコマンドを実行します。
aws rds describe-db-engine-versions \
--query "DBEngineVersions[*].[{Engine:Engine,Desc:DBEngineVersionDescription,Vesion:EngineVersion}]" \
--out table \
--profile terraform
下記のような出力なっていれば成功です。
% aws rds describe-db-engine-versions \
--query "DBEngineVersions[*].[{Engine:Engine,Desc:DBEngineVersionDescription,Vesion:EngineVersion}]" \
--out table \
--profile terraform
------------------------------------------------------------------------------------------------------------------------
| DescribeDBEngineVersions |
+-------------------------------------------------------+-----------------------+--------------------------------------+
| Desc | Engine | Vesion |
+-------------------------------------------------------+-----------------------+--------------------------------------+
| Aurora (MySQL 5.7) 2.07.9 | aurora-mysql | 5.7.mysql_aurora.2.07.9 |
| Aurora (MySQL 5.7) 2.07.10 | aurora-mysql | 5.7.mysql_aurora.2.07.10 |
| Aurora MySQL (compatible with MySQL 5.7.2.08.3) | aurora-mysql | 5.7.mysql_aurora.2.08.3 |
| Aurora (MySQL 5.7) 2.11.1 | aurora-mysql | 5.7.mysql_aurora.2.11.1 |
| Aurora (MySQL 5.7) 2.11.2 | aurora-mysql | 5.7.mysql_aurora.2.11.2 |
| Aurora (MySQL 5.7) 2.11.3 | aurora-mysql | 5.7.mysql_aurora.2.11.3 |
| Aurora MySQL 2.12.0 (compatible with MySQL 5.7.40) | aurora-mysql | 5.7.mysql_aurora.2.12.0 |
| Aurora MySQL 3.01.0 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.01.0 |
| Aurora MySQL 3.01.1 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.01.1 |
特定のRDSだけ抽出
今回はaurora-mysqlを調査したかったので、aurora-mysqlを条件にいれます。
aws rds describe-db-engine-versions \
--query "DBEngineVersions[*].[{Engine:Engine,Desc:DBEngineVersionDescription,Vesion:EngineVersion}]" \
--out table \
--profile terraform \
--engine aurora-mysql
下記のような出力なっていれば成功です。
% aws rds describe-db-engine-versions \
--query "DBEngineVersions[*].[{Engine:Engine,Desc:DBEngineVersionDescription,Vesion:EngineVersion}]" \
--out table \
--profile terraform \
--engine aurora-mysql
----------------------------------------------------------------------------------------------------
| DescribeDBEngineVersions |
+-----------------------------------------------------+---------------+----------------------------+
| Desc | Engine | Vesion |
+-----------------------------------------------------+---------------+----------------------------+
| Aurora (MySQL 5.7) 2.07.9 | aurora-mysql | 5.7.mysql_aurora.2.07.9 |
| Aurora (MySQL 5.7) 2.07.10 | aurora-mysql | 5.7.mysql_aurora.2.07.10 |
| Aurora MySQL (compatible with MySQL 5.7.2.08.3) | aurora-mysql | 5.7.mysql_aurora.2.08.3 |
| Aurora (MySQL 5.7) 2.11.1 | aurora-mysql | 5.7.mysql_aurora.2.11.1 |
| Aurora (MySQL 5.7) 2.11.2 | aurora-mysql | 5.7.mysql_aurora.2.11.2 |
| Aurora (MySQL 5.7) 2.11.3 | aurora-mysql | 5.7.mysql_aurora.2.11.3 |
| Aurora MySQL 2.12.0 (compatible with MySQL 5.7.40) | aurora-mysql | 5.7.mysql_aurora.2.12.0 |
| Aurora MySQL 3.01.0 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.01.0 |
| Aurora MySQL 3.01.1 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.01.1 |
| Aurora MySQL 3.02.0 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.02.0 |
| Aurora MySQL 3.02.1 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.02.1 |
| Aurora MySQL 3.02.2 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.02.2 |
| Aurora MySQL 3.02.3 (compatible with MySQL 8.0.23) | aurora-mysql | 8.0.mysql_aurora.3.02.3 |
| Aurora MySQL 3.03.0 (compatible with MySQL 8.0.26) | aurora-mysql | 8.0.mysql_aurora.3.03.0 |
| Aurora MySQL 3.03.1 (compatible with MySQL 8.0.26) | aurora-mysql | 8.0.mysql_aurora.3.03.1 |
| Aurora MySQL 3.04.0 (compatible with MySQL 8.0.28) | aurora-mysql | 8.0.mysql_aurora.3.04.0 |
+-----------------------------------------------------+---------------+----------------------------+
対応するインスタンスを抽出
利用可能なRDSのバージョンがわかったので、対応するインスタンスを調べました。今回は、8.0.mysql_aurora.3.02.0を対象に調べました。
aws rds describe-orderable-db-instance-options \
--engine aurora-mysql \
--engine-version "8.0.mysql_aurora.3.02.0" \
--query "OrderableDBInstanceOptions[].{DBInstanceClass:DBInstanceClass,SupportedEngineModes:SupportedEngineModes[0],EngineVersion:EngineVersion}" \
--out table \
--profile terraform
下記のような出力になっていれば成功です。
% aws rds describe-orderable-db-instance-options \
--engine aurora-mysql \
--engine-version "8.0.mysql_aurora.3.02.0" \
--query "OrderableDBInstanceOptions[].{DBInstanceClass:DBInstanceClass,SupportedEngineModes:SupportedEngineModes[0],EngineVersion:EngineVersion}" \
--out table \
--profile terraform
------------------------------------------------------------------------
| DescribeOrderableDBInstanceOptions |
+-----------------+---------------------------+------------------------+
| DBInstanceClass | EngineVersion | SupportedEngineModes |
+-----------------+---------------------------+------------------------+
| db.r5.12xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r5.16xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r5.24xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r5.2xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r5.4xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r5.8xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r5.large | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r5.xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r6g.12xlarge| 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r6g.16xlarge| 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r6g.2xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r6g.4xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r6g.8xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r6g.large | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.r6g.xlarge | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.serverless | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.t3.large | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.t3.medium | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.t4g.large | 8.0.mysql_aurora.3.02.0 | provisioned |
| db.t4g.medium | 8.0.mysql_aurora.3.02.0 | provisioned |
+-----------------+---------------------------+------------------------+
解説
aws rds describe-db-engine-versions
aws rds describe-db-engine-versions \
--query "DBEngineVersions[*].[{Engine:Engine,Desc:DBEngineVersionDescription,Vesion:EngineVersion}]" \
--out table \
--profile terraform
このコマンドは、Amazon Web Services (AWS) のコマンドラインインターフェース (CLI) を使用して、AWS RDS(Relational Database Service)のデータベースエンジンバージョンに関する情報を取得するためのものです。RDSは、クラウド内でリレーショナルデータベースを簡単にセットアップ、運用、スケーリングするためのサービスです。
コマンドの各部分を解説します:
aws rds describe-db-engine-versions
: これはAWS CLIのaws rds
サブコマンドを使用して、RDSデータベースエンジンバージョンに関する情報を取得するコマンドです。--query "DBEngineVersions[*].[{Engine:Engine,Desc:DBEngineVersionDescription,Vesion:EngineVersion}]"
: これは、取得した情報から特定の情報だけを抽出するためのJMESPathクエリです。JMESPathは、AWS CLIなどでデータ構造を操作するためのクエリ言語です。このクエリは、DBEngineVersions
配列内の各要素からエンジン名、エンジンバージョン、およびエンジンの説明を抽出し、それらのフィールドを含む辞書の配列として返します。--out table
: このオプションは、出力をテーブル形式で表示するためのものです。このオプションを指定することで、取得したデータがテーブルとして整形されて表示されます。--profile terraform
: このオプションは、AWS CLIが使用するプロファイルを指定します。AWS CLIの設定ファイルにおいて、terraform
という名前のプロファイルが定義されている場合、このプロファイルの認証情報や設定が使用されます。プロファイルを指定しない場合は、デフォルトの設定が使用されます。
このコマンド全体の目的は、AWS RDSの利用可能なデータベースエンジンバージョンに関する情報をテーブル形式で表示することです。また、terraform
という名前のプロファイルを使用してコマンドを実行します。具体的な出力内容は、実際にコマンドを実行した環境やその時点のAWSサービスの状態に依存します。
JMESPathとは
JMESPath(JSON Matching Expression Path)は、データ構造をクエリおよび変換するためのドメイン固有言語です。主にJSON形式のデータを操作するために使用されますが、他のデータフォーマットにも適用できることがあります。JMESPathは、AWS CLIや他のツールやサービスでデータの選択、フィルタリング、変換を行う際に広く利用されています。
JMESPathは、次のような特徴を持っています:
- シンプルな構文: JMESPathは比較的シンプルな構文を持っており、JSONオブジェクトの階層的なデータ構造を表現するために使われます。
- ドット表記: ドット表記を使用して、JSONオブジェクト内の要素を辿ることができます。例えば、
foo.bar
はfoo
オブジェクト内のbar
キーを表します。 - フィルタリング:
[]
を使用して、配列内の要素をフィルタリングすることができます。例えば、people[?age > 18]
はpeople
配列内でage
が18より大きい要素を抽出します。 - プロジェクション: データ構造の一部を選択するために、オブジェクトの一部または特定のフィールドをプロジェクトできます。例えば、
{name: name, age: age}
という式は、name
とage
フィールドだけを残すことになります。 - 演算子: JMESPathには比較演算子、論理演算子、算術演算子などがあり、条件や変換を行うために使用できます。
JMESPathの例をいくつか示します:
person.name
:person
オブジェクト内のname
フィールドの値を取得します。people[?age > 18].name
:people
配列内でage
が18より大きい要素のname
フィールドの値を抽出します。employees[].[first_name, last_name]
:employees
配列内の各要素からfirst_name
とlast_name
の値を抽出します。
JMESPathはAWS CLIのコマンドで使用されるほか、Pythonや他のプログラミング言語でもライブラリとして利用できます。詳細な構文や演算子については、公式のJMESPathドキュメントやチュートリアルを参照することをおすすめします。
aws rds describe-orderable-db-instance-options
aws rds describe-orderable-db-instance-options \
--engine aurora-mysql \
--engine-version "8.0.mysql_aurora.3.02.0" \
--query "OrderableDBInstanceOptions[].{DBInstanceClass:DBInstanceClass,SupportedEngineModes:SupportedEngineModes[0],EngineVersion:EngineVersion}" \
--out table \
--profile terraform
このコードは、Amazon Web Services(AWS)のコマンドラインインターフェース(CLI)を使用して、Aurora MySQLデータベースエンジンに関する注文可能なデータベースインスタンスオプションに関する情報を取得するためのものです。AuroraはAWSのリレーショナルデータベースサービスの一種で、高性能かつ耐障害性のあるデータベースソリューションを提供します。
コードの各部分を解説します:
aws rds describe-orderable-db-instance-options
: これはAWS CLIのaws rds
サブコマンドを使用して、注文可能なデータベースインスタンスオプションに関する情報を取得するコマンドです。--engine aurora-mysql
: このオプションは、データベースエンジンを指定します。ここではAurora MySQLエンジンを指定しています。--engine-version "8.0.mysql_aurora.3.02.0"
: このオプションは、データベースエンジンのバージョンを指定します。ここではAurora MySQLの特定のバージョンを指定しています。--query "OrderableDBInstanceOptions[].{DBInstanceClass:DBInstanceClass,SupportedEngineModes:SupportedEngineModes[0],EngineVersion:EngineVersion}"
: これは、取得した情報から特定の情報だけを抽出するためのJMESPathクエリです。OrderableDBInstanceOptions
配列内の各要素から、DBインスタンスクラス、サポートされているエンジンモード、およびエンジンバージョンを抽出し、それらのフィールドを含む辞書の配列として返します。--out table
: このオプションは、取得したデータをテーブル形式で表示するためのものです。--profile terraform
: このオプションは、AWS CLIが使用するプロファイルを指定します。ここでは、terraform
という名前のプロファイルが使用されます。
このコードの目的は、特定のAurora MySQLエンジンバージョンにおける作成可能なDBインスタンスオプションの情報をテーブル形式で表示することです。また、terraform
という名前のプロファイルを使用してコマンドを実行します。具体的な出力内容は、実際にコマンドを実行した環境やその時点のAWSサービスの状態に依存します。
おわりに
今日は、awscliを使用した利用可能なRDSインスタンスの調べる方法についてご紹介しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント