Observe a restrição nos documentos ao usar --db-instance-indentifier
:
--db-instance-identifier (string)
The user-supplied instance identifier. If this parameter is specified,
information from only the specific DB instance is returned. This parameter
isn't case-sensitive.
Constraints:
- If supplied, must match the identifier of an existing DBInstance
Portanto, você só pode usar essa opção se souber que o DB realmente existe.
Usando consultas
Para procurar por um banco de dados que pode ou não existir, você terá que usar a opção --query
:
$ aws rds describe-db-instances \
--query 'DBInstances[*].[DBName,DBInstanceIdentifier]' --output text
A estrutura DBINstances
JSON está acessível na ajuda do awscli:
$ aws rds describe-db-instances help --output text
...
...
{
"DBInstances": [
{
"PubliclyAccessible": false,
"MasterUsername": "mymasteruser",
"MonitoringInterval": 0,
"LicenseModel": "general-public-license",
...
...
"DBName": "sample",
...
...
"DBInstanceStatus": "stopped",
"EngineVersion": "5.6.27",
"AvailabilityZone": "us-east-1e",
"StorageType": "standard",
"StorageEncrypted": false,
"DBInstanceClass": "db.t2.micro",
"DbInstancePort": 0,
"DBInstanceIdentifier": "mydbinstance-1"
}
]
}
...
...
Usando filtros
Outra solução simples para a pergunta inicial é usar o parâmetro --filters
. A consulta retornará o identificador da instância (se a instância existir) ou uma string vazia (se ela não existir):
#!/usr/bin/env bash DBINSTANCEIDENTIFIER="greatdb" EXISTINGINSTANCE=$(aws rds describe-db-instances \ --query 'DBInstances[*].[DBInstanceIdentifier]' \ --filters Name=db-instance-id,Values=$DBINSTANCEIDENTIFIER \ --output text \ ) if [ -z $EXISTINGINSTANCE ] then echo "instance $DBINSTANCEIDENTIFIER does not exist!" else echo "instance $DBINSTANCEIDENTIFIER exists!" fi