0
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?

AWS CLIのコマンドで調べたことの備忘録

Last updated at Posted at 2024-04-09

AWS CLIでDB系の操作をした時に、やりたいことを実現するためにいろいろと調べたことのまとめを、99%自分用メモとして、1%は社内向け情報共有として本記事を書きました。

DBのパラメータグループの中から特定のパラメータの値を変更する例

aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name <myParameterGroupName> \
--parameters "ParameterName=binlog_format,ParameterValue=MIXED,ApplyMethod=pending-reboot" \
             "ParameterName=read_only,ParameterValue=1,ApplyMethod=immediate" \
             "ParameterName=sql_mode,ParameterValue='STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION',ApplyMethod=immediate" \
--no-cli-pager

memo

  • 変更したいパラメータのApply typeの値によってApplyMethodに指定できる値が違う
    • Apply typeDynamicのものはApplyMethod=immediateが使える
    • Apply typeStaticのものはApplyMethod=pending-rebootじゃないとダメ
      →DB再起動しないと値が反映されない
  • String型のパラメータの値に,(カンマ)を含めたい場合は'(シングルクォーテーション)で囲む

DBのパラメータグループの中から特定のパラメータ名と値を取得する例

aws rds describe-db-cluster-parameters \
--db-cluster-parameter-group-name <myParameterGroupName> \
--query 'Parameters[?ParameterName == `binlog_format` || 
                     ParameterName == `read_only` || 
                     ParameterName == `sql_mode`].{Name:ParameterName,Value:ParameterValue}' \
--output table \
--no-cli-pager

出力結果

-------------------------------------------------------------------------------------------------------------------------------------------------------
|                                                             DescribeDBClusterParameters                                                             |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+
|     Name      |                                                                Value                                                                |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+
|  binlog_format|  MIXED                                                                                                                              |
|  read_only    |  1                                                                                                                                  |
|  sql_mode     |  STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION   |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------+

memo

フィルタリングについての覚書

  • describe-db-cluster-parametersのoptput情報の親がParameters[]
  • [?ParameterName == `binlog_format` 部分は絞り込み条件
    • 文字列は`(バッククォート)で」囲む。
    • 今回はParameterNameを3つ抽出したいので||で結合している。
    • 1つの場合は[?ParameterName == `binlog_format`]となる。
  • Parameters[]の中からParameterNameとParameterValueのみ抽出
    • {}内は抽出する項目にラベルを付与するための記述
      • これをやると表形式の場合は列名のように出力される。
        json形式の場合はラベル:値というように出力される。
    • 抽出する項目にラベルを付与しない場合は、{...} 部分は [ParameterName,ParameterValue]のように記載する。この場合は値のみ出力される。

DBインスタンスの情報を取得する例

aws rds describe-db-instances \
--query 'DBInstances[?contains(DBInstanceIdentifier,`dev`)].{
    DBClusterIdentifier:DBClusterIdentifier
,   DBInstanceIdentifier:DBInstanceIdentifier
,   DBParameterGroupName:DBParameterGroups[0].DBParameterGroupName
,   EngineVersion:EngineVersion
,   Status:DBInstanceStatus
}' \
--output table \
--no-cli-pager

出力結果

-----------------------------------------------------------------------------------------------------------------------
|                                                 DescribeDBInstances                                                 |
+---------------------+----------------------------+------------------------+---------------------------+-------------+
| DBClusterIdentifier |   DBInstanceIdentifier     | DBParameterGroupName   |       EngineVersion       |   Status    |
+---------------------+----------------------------+------------------------+---------------------------+-------------+
|  testrdbdev57       |  testrdbdev57-instance-1   |  testrdbdev-aurora57   |  5.7.mysql_aurora.2.11.2  |  available  |
|  testrdbdev57       |  testrdbdev57-instance-2   |  testrdbdev-aurora57   |  5.7.mysql_aurora.2.11.2  |  available  |
|  testrdbdevsb57     |  testrdbdevsb57-instance-1 |  testrdbdevsb-aurora57 |  5.7.mysql_aurora.2.11.1  |  available  |
|  testrdbdevsb57     |  testrdbdevsb57-instance-2 |  testrdbdevsb-aurora57 |  5.7.mysql_aurora.2.11.1  |  available  |
+---------------------+----------------------------+------------------------+---------------------------+-------------+

フィルタリングについての覚書

  • ?contains(DBInstanceIdentifier,`dev`)DBInstanceIdentifierに指定の文字列を含むものだけ抽出している。
  • DBParameterGroupsは配列型なので[0]とすることで1要素のみ抽出している。
    → パラメータグループを1つしか割当していないと分かっていたので決め打ち

DBクラスターからライターインスタンスの情報を取得する例

aws rds describe-db-clusters \
--query 'DBClusters[?contains(DBClusterIdentifier,`green`)].{
    DBClusterIdentifier:DBClusterIdentifier
,   InstanceIdentifier:DBClusterMembers[?IsClusterWriter==`true`]|[0].DBInstanceIdentifier
,   WriterInstance:DBClusterMembers[?IsClusterWriter==`true`]|[0].IsClusterWriter
}' \
--output table \
--no-cli-pager

出力結果

----------------------------------------------------------------------------
|                            DescribeDBClusters                            |
+---------------------+---------------------------------+------------------+
| DBClusterIdentifier |       InstanceIdentifier        | WriterInstance   |
+---------------------+---------------------------------+------------------+
| shard1-green-xxxxxx |  shard1-instance-2-green-xxxxxx |  True            |
| shard2-green-xxxxxx |  shard2-instance-1-green-xxxxxx |  True            |
| shard3-green-xxxxxx |  shard3-instance-1-green-xxxxxx |  True            |
| shard4-green-xxxxxx |  shard4-instance-1-green-xxxxxx |  True            |
| shard5-green-xxxxxx |  shard5-instance-1-green-xxxxxx |  True            |
| shard6-green-xxxxxx |  shard6-instance-2-green-xxxxxx |  True            |
+---------------------+---------------------------------+------------------+

memo

  • Blue/Greenデプロイを作成した時に、Green環境のライターインスタンスのIdentifierが取得したかった。

フィルタリングについての覚書

  • ?IsClusterWriter==`true` で絞り込みすることによってライターインスタンスのみ取得できた。

(A or B or C) and D という条件で絞り込みする例

aws rds describe-db-instances \
--query 'DBInstances[?contains(DBInstanceIdentifier,`A`) || 
                      contains(DBInstanceIdentifier,`B`) || 
                      contains(DBInstanceIdentifier,`C`)] | 
                      [?contains(DBInstanceIdentifier,`D`)].{
    DBInstanceIdentifier:DBInstanceIdentifier
,   EngineVersion:EngineVersion
,   Status:DBInstanceStatus
,   ParameterGroupName:DBParameterGroups[0].DBParameterGroupName
,   ParameterStatus:DBParameterGroups[0].ParameterApplyStatus
}' \
--output table \
--no-cli-pager

参考リンク

0
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
0
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?