Marcar recursos do Amazon RDS
Uma tag do Amazon RDS é um par de nome-valor que você define e associa a um recurso do Amazon RDS, como uma instância ou um snapshot de banco de dados. O nome é referido como chave. Opcionalmente, é possível fornecer um valor para a chave.
Você pode usar o AWS Management Console, a AWS CLI ou a API do Amazon RDS para adicionar, listar e excluir tags em recursos do Amazon RDS. Ao usar a CLI ou a API, forneça o nome do recurso da Amazon (ARN) do recurso do RDS com o qual deseja trabalhar. Para obter mais informações sobre a criação de um ARN, consulte Criar um ARN para o Amazon RDS.
Tópicos
- Por que usar tags de recurso do Amazon RDS?
- Como as tags de recurso do Amazon RDS funcionam
- Práticas recomendadas para marcação de recursos do Amazon RDS
- Gerenciamento de tags no Amazon RDS
- Copiar tags para snapshots de banco de dados
- Tutorial: especificar quais instâncias de banco de dados devem ser interrompidas usando tags
Por que usar tags de recurso do Amazon RDS?
É possível usar tags para fazer o seguinte:
-
Categorize recursos do RDS por aplicação, projeto, departamento, ambiente e assim por diante. Por exemplo, é possível usar uma chave de tag para definir uma categoria, na qual o valor da tag é um item nessa categoria. É possível criar a tag
environment=prod
. Ou você pode definir uma chave de tag comoproject
e um valor de tag deSalix
, o que indica que um recurso do Amazon RDS está atribuído ao projeto Salix. -
Automatize tarefas de gerenciamento de recursos. Por exemplo, é possível criar uma janela de manutenção para instâncias marcadas com
environment=prod
que seja diferente da janela para instâncias marcadas comenvironment=test
. Também é possível configurar snapshots de banco de dados automáticos para instâncias marcadas comenvironment=prod
. -
Controle o acesso aos recursos do RDS em uma política do IAM. Faça isso usando a chave de condição global
aws:ResourceTag/
. Por exemplo, uma política pode permitir que somente usuários do grupotag-key
DBAdmin
modifiquem instâncias de banco de dados marcadas comenvironment=prod
. Consulte informações sobre como gerenciar o acesso a recursos marcados com políticas do IAM em Gerenciamento de identidade e acesso no Amazon RDS e em Controlar o acesso aos recursos da AWS no Guia do usuário do AWS Identity and Access Management. -
Monitore recursos com base em uma tag. Por exemplo, é possível criar um painel do Amazon CloudWatch para instâncias de banco de dados marcadas com
environment=prod
. -
Monitore custos agrupando despesas de recursos marcados com tags semelhantes. Por exemplo, se marcar os recursos do RDS associados ao projeto Salix com
project=Salix
, você poderá gerar relatórios de custos e alocar despesas para esse projeto. Para ter mais informações, consulte Como o faturamento da AWS funciona com tags no Amazon RDS.
Como as tags de recurso do Amazon RDS funcionam
AWSA não aplica nenhum significado semântico às suas tags. Tags são interpretadas estritamente como sequências de caracteres.
Tópicos
Conjuntos de tags no Amazon RDS
Cada recurso do Amazon RDS tem um contêiner chamado conjunto de tags. O contêiner inclui todas as tags atribuídas ao recurso. Um recurso tem exatamente um conjunto de tags.
Um conjunto de tags contém de 0 a 50 tags. Se você adicionar uma tag a um recurso do RDS que tenha a mesma chave que uma tag existente no recurso, o novo valor substituirá o antigo.
Estrutura de tags no Amazon RDS
A estrutura de uma tag do RDS é a seguinte:
- Chave de tag
-
A chave é o nome obrigatório da tag. O valor da string deve ter de 1 a 128 caracteres Unicode e não pode ter os prefixos
aws:
ourds:
. A string pode conter apenas o conjunto de letras, números e espaços em branco Unicode,_
,.
,:
,/
,=
,+
,-
e@
. O regex Java é"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
. As chaves da tag fazem distinção entre maiúsculas e minúsculas. Assim, as chavesproject
eProject
são distintas.Uma chave é exclusiva a um conjunto de tags. Por exemplo, não pode haver um par de chaves em um conjunto de tags com a mesma chave mas com valores diferentes, como
project=Trinity
eproject=Xanadu
. - Valor da tag
-
O valor é um valor de string opcional da tag. O valor da string deve ter de 1 a 256 caracteres Unicode. A string pode conter apenas o conjunto de letras, números e espaços em branco Unicode,
_
,.
,:
,/
,=
,+
,-
e@
. O regex Java é"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
. Os valores de tags diferenciam maiúsculas de minúsculas. Assim, os valoresprod
eProd
são distintos.Os valores não precisam ser exclusivos em um conjunto de tags e podem ser nulos. Por exemplo, você pode ter um par de valor-chave em um conjunto de tag de
project=Trinity
ecost-center=Trinity
.
Recursos do Amazon RDS elegíveis para marcação
Você pode marcar os seguintes recursos do Amazon RDS:
-
Instâncias de banco de dados
-
clusters de banco de dados
-
Endpoints do cluster de banco de dados
-
Réplicas de leitura
-
DB snapshots
-
Snapshots de cluster de banco de dados
-
Instâncias de bancos de dados reservadas
-
Assinaturas de eventos
-
Grupos de opções de banco de dados
-
Grupos de parâmetros do banco de dados
-
Grupos de parâmetros de cluster de banco de dados
-
Grupos de sub-redes de banco de dados
-
RDS Proxies
-
Endpoint do RDS Proxy
nota
Atualmente, você não pode etiquetar RDS Proxies e endpoints do RDS Proxy usando o AWS Management Console.
-
Implantações azuis/verdes
-
Integrações ETL zero (pré-visualização)
Como o faturamento da AWS funciona com tags no Amazon RDS
Também é possível utilizar tags para organizar sua fatura da AWS para refletir sua própria estrutura de custo. Para fazer isso, inscreva-se para obter a fatura da sua Conta da AWS com os valores de chave de tag incluídos. Então, para ver o custo de recursos combinados, organize suas informações de faturamento de acordo com recursos com os mesmos valores de chave de tags. Por exemplo, é possível marcar vários recursos com um nome de aplicação específico, e depois organizar suas informações de faturamento para ver o custo total daquela aplicação em vários serviços. Para obter mais informações, consulte Usar tags de alocação de custos no Guia do usuário do AWS Billing.
Como as tags de alocação de custos funcionam com snapshots de de banco de dados
É possível adicionar uma tag a um snapshot dede banco de dados. No entanto, sua conta não refletirá esse agrupamento. Para que tags de alocação de custo sejam aplicadas a snapshots de de banco de dados, as seguintes condições devem ser atendidas:
-
As tags devem ser anexadas à instância de banco de dados principal.
-
A instância de banco de dados principal deve estar na mesma Conta da AWS que o snapshot do de banco de dados.
-
A instância de banco de dados principal deve estar na mesma Região da AWS que o snapshot do de banco de dados.
Os snapshots do de banco de dados serão considerados órfãos se não estiverem na mesma região da instância de banco de dados principal. Os custos de snapshots órfãos são agregados em um único item de linha não marcado. Os snapshots do de banco de dados entre contas não são considerados órfãos quando as seguintes condições são atendidas:
-
Eles estão na mesma região da instância de banco de dados principal.
-
A instância de banco de dados principal pertence à conta de origem.
nota
Se a instância de banco de dados principal pertencer a uma conta diferente, as tags de alocação de custos não se aplicarão aos snapshots de várias contas na conta de destino.
Práticas recomendadas para marcação de recursos do Amazon RDS
Ao usar tags, sugerimos seguir estas práticas recomendadas:
-
Convenções de documentos para uso de tags que são seguidas por todas as equipes da organização. Acima de tudo, os nomes devem ser descritivos e consistentes. Por exemplo, padronize o formato
environment:prod
em vez de marcar alguns recursos comenv:production
.Importante
Não armazene informações de identificação pessoal (PII) nem outras informações confidenciais ou sigilosas em tags.
-
Automatize a marcação para garantir a consistência. Por exemplo, é possível usar as seguintes técnicas:
-
Inclua tags em um modelo do AWS CloudFormation. Ao criar recursos com o modelo, eles são marcados automaticamente.
-
Defina e aplique tags usando funções do AWS Lambda.
-
Crie um documento do SSM que inclua etapas para adicionar tags aos recursos do RDS.
-
-
Use tags somente quando necessário. É possível adicionar até 50 tags a um único recurso do RDS, mas a prática recomendada é evitar a proliferação e a complexidade desnecessárias de tags.
-
Revise as tags periodicamente para verificar a relevância e a precisão. Remova ou modifique as tags desatualizadas conforme necessário.
-
Considere criar tags com o Editor de Tags da AWS no AWS Management Console. É possível usar o Editor de Tags para adicionar tags a vários recursos compatíveis da AWS ao mesmo tempo, incluindo os recursos do RDS. Para obter mais informações, consulte o Tag Editor no Guia do usuário dos Grupos de recursos da AWS.
Gerenciamento de tags no Amazon RDS
Você pode fazer o seguinte:
-
Crie tags ao criar um recurso, por exemplo, ao executar o comando
create-db-instance
da AWS CLI. -
Adicione tags a um recurso existente usando o comando
add-tags-to-resource
. -
Liste as tags associadas a um recurso específico usando o comando
list-tags-for-resource
. -
Atualize as tags usando o comando
add-tags-to-resource
. -
Remova as tags de um recurso usando o comando
remove-tags-from-resource
.
Os procedimentos a seguir mostram como executar operações típicas de marcação em recursos relacionados a instâncias de banco de dados e. Observe que as tags ficam armazenadas em cache para fins de autorização. Por esse motivo, ao adicionar ou atualizar tags nos recursos do Amazon RDS, pode demorar vários minutos para que as modificações sejam disponibilizadas.
O processo para marcar um recurso do Amazon RDS é semelhante para todos os recursos. O procedimento a seguir mostra como marcar uma instância de banco de dados do Amazon RDS.
Para adicionar uma tag a uma instância de banco de dados
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Databases (Bancos de dados).
nota
Para filtrar a lista de instâncias de bancos de dados no painel Databases (Bancos de dados), digite uma string de texto de Filter databases (Filtrar bancos de dados). Somente instâncias de banco de dados que contiverem a string aparecerão.
-
Escolha no nome da instância de banco de dados que você deseja marcar para mostrar os detalhes.
-
Na seção de detalhes, role para baixo até a seção Tags.
-
Escolha Adicionar. A janela Add tags (Adicionar tags) é exibida.
-
Digite um valor para Tag key (Chave de tag) e Value (Valor).
-
Para adicionar outra tag, escolha Add another Tag (Adicionar outra tag) e digite um valor para Tag key (Chave de tag) e Value (Valor).
Repita esta etapa quantas vezes for necessário.
-
Escolha Adicionar.
Para excluir uma tag de uma instância de banco de dados
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Databases (Bancos de dados).
nota
Para filtrar a lista de instâncias de bancos de dados no painel Databases (Bancos de dados), digite uma string de texto na caixa Filter databases (Filtrar bancos de dados). Somente instâncias de banco de dados que contiverem a string aparecerão.
-
Escolha o nome da instância de banco de dados para mostrar os detalhes.
-
Na seção de detalhes, role para baixo até a seção Tags.
Escolha a tag que você deseja excluir.
-
Selecione Delete (Excluir) e escolha Delete (Excluir) na janela Delete tags (Excluir tags).
É possível adicionar, listar ou remover tags de uma instância de banco de dados usando a AWS CLI.
Para adicionar uma ou mais etiquetas a um recurso do Amazon RDS, use o comando da AWS CLI
add-tags-to-resource
.Para listar as etiquetas em um recurso do Amazon RDS, use o comando da AWS CLI
list-tags-for-resource
.Para remover uma ou mais etiquetas de um recurso do Amazon RDS, use o comando da AWS CLI
remove-tags-from-resource
.
Para saber mais sobre como criar o ARN necessário, consulte Criar um ARN para o Amazon RDS.
É possível adicionar, listar ou remover tags de uma instância de banco de dados usando a API do Amazon RDS.
Para adicionar uma tag a um recurso do Amazon RDS, use a operação
AddTagsToResource
.Para listar tags atribuídas a um recurso do Amazon RDS, use
ListTagsForResource
.Para remover tags de um recurso do Amazon RDS, use a operação
RemoveTagsFromResource
.
Para saber mais sobre como criar o ARN necessário, consulte Criar um ARN para o Amazon RDS.
As tags usam o seguinte esquema ao trabalhar com o XML usando a API do Amazon RDS:
<Tagging> <TagSet> <Tag> <Key>Project</Key> <Value>Trinity</Value> </Tag> <Tag> <Key>User</Key> <Value>Jones</Value> </Tag> </TagSet> </Tagging>
A tabela a seguir fornece uma lista das tags XML permitidas e suas características. Os valores de Key
e Value
diferenciam letras maiúsculas de minúsculas. Por exemplo, project=Trinity
e PROJECT=Trinity
são tags distintas.
Elemento de marcação por tag | Descrição |
---|---|
TagSet | Um conjunto de tags é um contêiner de todas as tags atribuídas a um recurso do Amazon RDS. Só pode haver um conjunto de tags por recurso. Você trabalha com um TagSet somente por meio da API do Amazon RDS. |
Tag | Uma tag é um par de chave-valor definido pelo usuário. Pode haver de 1 a 50 tags em um conjunto de tags. |
Chave |
Uma chave é o nome obrigatório da tag. Consulte as restrições em Estrutura de tags no Amazon RDS. O valor da string pode ter de 1 a 128 caracteres Unicode e não pode ter os prefixos As chaves devem ser exclusivas a um conjunto de tags. Por exemplo, não pode haver um par de chaves em um conjunto de tags com a mesma chave mas com valores diferentes, como projeto/Trinity e projeto/Xanadu. |
Valor |
Um valor é o valor opcional da tag. Consulte as restrições em Estrutura de tags no Amazon RDS. O valor da string pode ter de 1 a 256 caracteres Unicode e não pode ter os prefixos Os valores não têm que ser exclusivos em um conjunto de tags e podem ser nulos. Por exemplo, você pode ter um par de chave-valor em um conjunto de tags definido como projeto/Trinity e centro-custos/Trinity. |
Copiar tags para snapshots de banco de dados
Ao criar ou restaurar uma instância de banco de dados, você pode especificar que as tags da instância de banco de dados sejam copiadas para snapshots da instância de banco de dados. A cópia de tags garante que os metadados dos snapshots de banco de dados correspondam aos da instância de banco de dados de origem. Também garante que quaisquer políticas de acesso dos snapshots de banco de dados também correspondam às da instância de banco de dados de origem.
Você pode especificar que as tags sejam copiados para snapshots de banco de dados para as seguintes ações:
Criar uma instância de banco de dados.
Restaurar uma instância de banco de dados.
Como criar uma réplica de leitura.
Copiar um snapshot de banco de dados.
Na maioria dos casos, as tags não são copiadas por padrão. No entanto, quando você restaura uma instância de banco de dados de um snapshot do banco de dados, o RDS verifica se você deve especificar novas tags. Se sim, as novas tags serão adicionadas à instância de banco de dados restaurada. Se não houver novas tags, o RDS adicionará as tags da instância de banco de dados de origem no momento da criação do snapshot à instância de banco de dados restaurada.
Para evitar que tags da fonte de instâncias de banco de dados sejam adicionadas a instâncias de banco de dados restauradas, recomendamos que você especifique novas tags ao restaurar uma instância de banco de dados.
nota
Em alguns casos, você pode incluir um valor para o parâmetro --tags
do comando create-db-snapshot da AWS CLI. Ou pode fornecer pelo menos uma tag à operação da API CreateDBSnapshot. Nesses casos, o RDS não copia tags da instância de banco de dados de origem para o novo snapshot de banco de dados. Essa funcionalidade é aplicável mesmo que a instância de banco de dados de origem tenha a opção --copy-tags-to-snapshot
(CopyTagsToSnapshot
) ativada.
Se você seguir essa abordagem, poderá criar uma cópia de uma instância de banco de dados de um snapshot de banco de dados. Essa abordagem evita adicionar tags que não se aplicam à nova instância de banco de dados. Você cria o snapshot de banco de dados com o comando create-db-snapshot
da AWS CLI (ou a operação CreateDBSnapshot
da API do RDS). Depois de criar o snapshot de banco de dados, é possível adicionar tags conforme descrito posteriormente neste tópico.
Tutorial: especificar quais instâncias de banco de dados devem ser interrompidas usando tags
Este tutorial pressupõe que você tenha várias instâncias de banco de dados em um ambiente de desenvolvimento ou teste. Você precisa manter essas instâncias de banco de dados por vários dias. Algumas instâncias de banco de dados executam testes noturnos, enquanto outras podem ser interrompidas durante a noite e iniciadas novamente no dia seguinte.
O tutorial a seguir mostra como atribuir uma tag às instâncias de banco de dados que são adequadas para interrupção durante a noite. O tutorial mostra como um script pode detectar quais instâncias de banco de dados têm a tag e, então, interromper as instâncias marcadas. Neste exemplo, a parte de valor do par chave-valor não importa. A presença da tag stoppable
significa que a instância de banco de dados tem essa propriedade definida pelo usuário.
No tutorial a seguir, os comandos e APIs de marcação funcionam com ARNs, o que permite que o RDS funcione perfeitamente em regiões da AWS, contas da AWS e diferentes tipos de recurso que possam ter nomes curtos idênticos. Você pode especificar o ARN em vez do ID da instância de banco de dados em comandos CLI que operam em instâncias de banco de dados.
Para especificar quais instâncias de banco de dados devem ser interrompidas
-
Primeiro, determine o ARN de uma instância de banco de dados que você queira designar como passível de ser interrompida.
No exemplo a seguir, substitua o nome de suas próprias instâncias de banco de dados por
dev-test-db-instance
. Em comandos subsequentes que usam parâmetros ARN, substitua o ARN de sua própria instância de banco de dados. O ARN inclui seu próprio ID de conta daAWS e o nome da região daAWS onde sua instância de Bancos de Dados está localizada.$
aws rds describe-db-instances --db-instance-identifierdev-test-db-instance
\ --query "*[].{DBInstance:DBInstanceArn}" --output textarn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
-
Adicione a tag
stoppable
a essa instância de banco de dados.Selecione o nome dessa tag. Como esse exemplo trata a tag como um atributo presente ou ausente, ele omite a parte
Value=
do parâmetro--tags
. Essa abordagem significa que você pode evitar a criação de uma convenção de nomenclatura que codifique todas as informações relevantes nos nomes. Nessa convenção, você pode codificar informações no nome da instância de banco de dados ou nos nomes de outros recursos.$
aws rds add-tags-to-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
\ --tags Key=stoppable -
Confirme se a tag está presente na instância de banco de dados.
Os comandos a seguir recuperam as informações de tag para a instância de banco de dados no formato JSON e em texto separado por tabulação simples.
$
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
{ "TagList": [ { "Key": "stoppable", "Value": "" } ] }
aws rds list-tags-for-resource \ --resource-namearn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
--output textTAGLIST stoppable
-
Interrompa todas as instâncias de banco de dados designadas como
stoppable
.O exemplo a seguir cria um arquivo de texto que lista todas as instâncias de banco de dados. O comando shell percorre a lista, verifica se cada instância de banco de dados está marcada com o atributo relevante e executa o comando
aws rds stop-db-instance
para cada instância de banco de dados.$
aws rds describe-db-instances --query "*[].[DBInstanceArn]" --output text >/tmp/db_instance_arns.lst$
for arn in $(cat /tmp/db_instance_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep stoppable)" if [[ ! -z "$match" ]] then echo "DB instance $arn is tagged as stoppable. Stopping it now." # Note that you need to get the DB instance identifier from the ARN. dbid=$(echo $arn | sed -e 's/.*://') aws rds stop-db-instance --db-instance-identifier $dbid fi doneDB instance arn:arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance is tagged as stoppable. Stopping it now. { "DBInstance": { "DBInstanceIdentifier": "dev-test-db-instance", "DBInstanceClass": "db.t3.medium", ...
Você pode executar um script como o anterior no final de todos os dias para garantir que as instâncias de banco de dados não essenciais sejam interrompidas. Você também pode agendar um trabalho com um utilitário, como cron
, para realizar essa verificação todas as noites. Por exemplo, você pode fazer isso caso algumas instâncias de banco de dados sejam deixadas em execução por engano. Nesse caso, você pode ajustar o comando que prepara a lista de instâncias de banco de dados para conferir.
O comando a seguir produz uma lista de suas instâncias de banco de dados, mas apenas as que estão no estado available
. O script pode ignorar as instâncias de banco de dados que já estão paradas, pois elas terão valores de status diferentes, como stopped
ou stopping
.
$
aws rds describe-db-instances \ --query '*[].{DBInstanceArn:DBInstanceArn,DBInstanceStatus:DBInstanceStatus}|[?DBInstanceStatus == `available`]|[].{DBInstanceArn:DBInstanceArn}' \ --output textarn:aws:rds:us-east-1:123456789102:db:db-instance-2447 arn:aws:rds:us-east-1:123456789102:db:db-instance-3395 arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance arn:aws:rds:us-east-1:123456789102:db:pg2-db-instance
dica
Você pode usar a atribuição de tags e encontrar instâncias de banco de dados com essas tags a fim de reduzir custos de outras maneiras. Por exemplo, considere esse cenário com instâncias de banco de dados utilizadas para desenvolvimento e testes. Nesse caso, você pode designar que algumas instâncias de banco de dados sejam excluídas no final de cada dia. Ou você pode designar que suas instâncias de banco de dados sejam alteradas para classes de instância de banco de dados pequenas durante os períodos de baixa utilização esperada.