From ab53bfb44efd0beca0fc5a2f89a02f2c84bfd7b9 Mon Sep 17 00:00:00 2001 From: Michele Cereda Date: Wed, 28 Jan 2026 17:36:42 +0100 Subject: [PATCH] refactor(aws/rds/snippets): give rds its own file --- snippets/aws/other commands.fish | 82 ---------------------------- snippets/aws/rds.fish | 92 ++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 82 deletions(-) create mode 100644 snippets/aws/rds.fish diff --git a/snippets/aws/other commands.fish b/snippets/aws/other commands.fish index ffa8690..2fcdf53 100644 --- a/snippets/aws/other commands.fish +++ b/snippets/aws/other commands.fish @@ -382,88 +382,6 @@ aws kms list-aliases --query 'Aliases[?AliasName.contains(@,`staging`)]' aws kms list-aliases --query 'Aliases[?AliasName.contains(@,`prod`)]|[*].{"Alias":@.AliasName,"KeyId":@.TargetKeyId}' -### -# RDS -# ------------------ -# Names are case-insensitive and will be shown as lowercase. -### - -aws rds describe-db-instances --db-instance-identifier 'some-test' --output 'yaml' \ - --query 'DBInstances[].{"DBInstanceStatus":DBInstanceStatus,"PendingModifiedValues":PendingModifiedValues}' - -aws rds start-export-task \ - --export-task-identifier 'db-finalSnapshot-2024' \ - --source-arn 'arn:aws:rds:eu-west-1:012345678901:snapshot:db-prod-final-2024' \ - --s3-bucket-name 'backups' --s3-prefix 'rds' \ - --iam-role-arn 'arn:aws:iam::012345678901:role/CustomRdsS3Exporter' \ - --kms-key-id 'arn:aws:kms:eu-west-1:012345678901:key/abcdef01-2345-6789-abcd-ef0123456789' - -# Change the storage type -aws rds modify-db-instance --db-instance-identifier 'instance-name' --storage-type 'gp3' --apply-immediately - -# Show available upgrade target versions for a given DB engine version. -aws rds describe-db-engine-versions --engine 'postgres' --engine-version '13' \ - --query 'DBEngineVersions[*].ValidUpgradeTarget[*]' -aws rds describe-db-engine-versions --engine 'postgres' --engine-version '13.12' \ - --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}[?AutoUpgrade==`true`][]' - -# Start upgrading. -# Requires downtime. -aws rds modify-db-instance --db-instance-identifier 'my-db-instance' --engine-version '14.20' --apply-immediately -aws rds modify-db-instance --db-instance-identifier 'my-db-instance' \ - --engine-version '14.15' --allow-major-version-upgrade --no-apply-immediately - -# Max 5 running at any given time, RDS cannot queue -echo {1..5} | xargs -p -n '1' -I '{}' aws rds start-export-task … - -aws rds describe-export-tasks --query 'ExportTasks[].WarningMessage' --output 'json' - -aws rds restore-db-instance-to-point-in-time \ - --source-db-instance-identifier 'awx' --target-db-instance-identifier 'awx-pitred' \ - --restore-time '2024-07-31T09:29:40+00:00' \ - --allocated-storage '20' - -aws rds restore-db-instance-from-db-snapshot \ - --db-instance-identifier 'awx-pitr-snapshot' \ - --db-snapshot-identifier 'rds:awx-2024-07-30-14-15' - -aws rds delete-db-instance --db-instance-identifier 'awx' -aws rds delete-db-instance --db-instance-identifier 'awx-with-backups' \ - --skip-final-snapshot --delete-automated-backups --no-cli-pager - -aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' -aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' \ - --query "Parameters[?ParameterName=='shared_preload_libraries']" --output 'table' -aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' \ - --query "Parameters[?ParameterName=='shared_preload_libraries'].ApplyMethod" --output 'text' -aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' \ - --output 'json' --query "Parameters[?ApplyType!='dynamic']" - -aws rds create-db-snapshot --db-instance-identifier 'some-db-instance' --db-snapshot-identifier 'some-db-snapshot' - -aws rds describe-db-instances --db-instance-identifier 'some-instance' \ - --query 'DBInstances[0].InstanceCreateTime' --output 'text' - -aws rds describe-db-instances --db-instance-identifier 'some-db-instance' --output 'text' \ - --query 'DBInstances[0].Endpoint|join(`:`,[Address,to_string(Port)])' -aws rds describe-db-instances --db-instance-identifier 'some-db-instance' --output 'text' \ - --query ' - DBInstances[0] - | join(``, [ - `postgresql://`, - MasterUsername, - `:`, - `PASSWORD_PLACEHOLDER`, - `@`, - Endpoint.Address, - `:`, - to_string(Endpoint.Port), - `/`, - DBName || `postgres` - ]) - ' - - ### # Route53 # ------------------ diff --git a/snippets/aws/rds.fish b/snippets/aws/rds.fish new file mode 100644 index 0000000..501ce55 --- /dev/null +++ b/snippets/aws/rds.fish @@ -0,0 +1,92 @@ +#!/usr/bin/env fish + +### +# DB instances' names are case-insensitive. +# Keep them here in lowercase. +### + +aws rds describe-db-instances --db-instance-identifier 'some-test' --output 'yaml' \ + --query 'DBInstances[].{"DBInstanceStatus":DBInstanceStatus,"PendingModifiedValues":PendingModifiedValues}' + +aws rds start-export-task \ + --export-task-identifier 'db-finalSnapshot-2024' \ + --source-arn 'arn:aws:rds:eu-west-1:012345678901:snapshot:db-prod-final-2024' \ + --s3-bucket-name 'backups' --s3-prefix 'rds' \ + --iam-role-arn 'arn:aws:iam::012345678901:role/CustomRdsS3Exporter' \ + --kms-key-id 'arn:aws:kms:eu-west-1:012345678901:key/abcdef01-2345-6789-abcd-ef0123456789' + +# Change the storage type +aws rds modify-db-instance --db-instance-identifier 'instance-name' --storage-type 'gp3' --apply-immediately + +# Show available upgrade target versions for a given DB engine version. +aws rds describe-db-engine-versions --engine 'postgres' --engine-version '13' \ + --query 'DBEngineVersions[*].ValidUpgradeTarget[*]' +aws rds describe-db-engine-versions --engine 'postgres' --engine-version '13.12' \ + --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}[?AutoUpgrade==`true`][]' + +# Start upgrading. +# Requires downtime. +aws rds modify-db-instance --db-instance-identifier 'my-db-instance' --engine-version '14.20' --apply-immediately +aws rds modify-db-instance --db-instance-identifier 'my-db-instance' \ + --engine-version '14.15' --allow-major-version-upgrade --no-apply-immediately + +# Max 5 running at any given time, RDS cannot queue +echo {1..5} | xargs -p -n '1' -I '{}' aws rds start-export-task … + +aws rds describe-export-tasks --query 'ExportTasks[].WarningMessage' --output 'json' + +aws rds restore-db-instance-to-point-in-time \ + --source-db-instance-identifier 'awx' --target-db-instance-identifier 'awx-pitred' \ + --restore-time '2024-07-31T09:29:40+00:00' \ + --allocated-storage '20' +aws rds restore-db-instance-to-point-in-time \ + --source-db-instance-identifier 'awx' --target-db-instance-identifier 'awx-pitred' \ + --use-latest-restorable-time \ + --db-instance-class 'db.m8g.xlarge' \ + --no-multi-az --availability-zone 'eu-west-1a' \ + --db-subnet-group-name 'default' --no-publicly-accessible \ + --db-parameter-group-name 'postgresql14' --option-group-name 'default:postgres-14' \ + --storage-type 'gp3' \ + --no-dedicated-log-volume \ + --no-auto-minor-version-upgrade \ + --no-deletion-protection + +aws rds restore-db-instance-from-db-snapshot \ + --db-instance-identifier 'awx-pitr-snapshot' \ + --db-snapshot-identifier 'rds:awx-2024-07-30-14-15' + +aws rds delete-db-instance --db-instance-identifier 'awx' +aws rds delete-db-instance --db-instance-identifier 'awx-with-backups' \ + --skip-final-snapshot --delete-automated-backups --no-cli-pager + +aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' +aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' \ + --query "Parameters[?ParameterName=='shared_preload_libraries']" --output 'table' +aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' \ + --query "Parameters[?ParameterName=='shared_preload_libraries'].ApplyMethod" --output 'text' +aws rds describe-db-parameters --db-parameter-group-name 'default.postgres15' \ + --output 'json' --query "Parameters[?ApplyType!='dynamic']" + +aws rds create-db-snapshot --db-instance-identifier 'some-db-instance' --db-snapshot-identifier 'some-db-snapshot' + +aws rds describe-db-instances --db-instance-identifier 'some-instance' \ + --query 'DBInstances[0].InstanceCreateTime' --output 'text' + +aws rds describe-db-instances --db-instance-identifier 'some-db-instance' --output 'text' \ + --query 'DBInstances[0].Endpoint|join(`:`,[Address,to_string(Port)])' +aws rds describe-db-instances --db-instance-identifier 'some-db-instance' --output 'text' \ + --query ' + DBInstances[0] + | join(``, [ + `postgresql://`, + MasterUsername, + `:`, + `PASSWORD_PLACEHOLDER`, + `@`, + Endpoint.Address, + `:`, + to_string(Endpoint.Port), + `/`, + DBName || `postgres` + ]) + '