Como resolvo problemas com a exclusão do meu snapshot do Amazon EBS?

7 minuto de leitura
0

Estou tentando excluir meu snapshot do Amazon Elastic Block Store (Amazon EBS), mas não consigo. Como resolver esse problema?

Breve descrição

A seguir estão os motivos comuns pelos quais a exclusão de snapshots do Amazon EBS falha:

  • O usuário ou a função do AWS Identity and Access Management (IAM) não tem permissão para executar a ação da API DeleteSnapshot.
  • Outra conta é proprietária do snapshot e o compartilha com sua conta da AWS.
  • O snapshot do dispositivo raiz do volume do EBS é usado por uma imagem de máquina da Amazon (AMI) registrada.
  • O snapshot está na Lixeira.
  • O snapshot é criado no AWS Backup ou o snapshot criado no AWS Backup é restaurado a partir da Lixeira.
  • O snapshot é criado usando o Amazon Data Lifecycle Manager e é inserido ou restaurado a partir da Lixeira.
  • Os resultados da API DeleteSnapshot não são imediatamente visíveis para os comandos subsequentes.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

O usuário ou a função do IAM não tem permissão para executar a ação da API DeleteSnapshot

No AWS CloudTrail, você recebe a mensagem de erro: "You are not authorized to perform this operation. Encoded authorization failure message: Bght_tAZ......" (Você não tem autorização para realizar esta operação. Mensagem de falha de autorização codificada: Bght_taz......)

Para decodificar a mensagem de falha de autorização, execute o seguinte comando:

$  aws sts decode-authorization-message --encoded-message encoded_message

Nota: Substitua encoded_message pela mensagem de falha de autorização codificada recebida.

Também é possível usar o simulador de políticas do IAM para solucionar problemas. Verifique a política relacionada ao usuário ou à função do IAM para ver se ela tem uma regra que nega a ação ec2:DeleteSnapshot.

Exemplo de política JSON que nega a ação ec2:DeleteSnapshot:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Deny",
      "Action": "ec2:DeleteSnapshot",
      "Resource": "*"
    }
  ]
}

Além disso, verifique se há regras que negam quaisquer condições que devem ser satisfeitas para que a operação seja concluída, como ec2:SnapshotID. Atualize a política de usuário ou função do IAM para permitir a exclusão de snapshots.

Para obter uma lista de chaves de condição relacionadas, consulte a seção DeleteSnapshot de Ações, recursos e chaves de condição para o Amazon EC2.

O snapshot pertence e é compartilhado por uma conta diferente da AWS

O usuário recebe a mensagem de erro: "The snapshot 'snap-abcdef1234567890' does not exist." (O snapshot 'snap-abcdef1234567890' não existe.)

Não é possível excluir um snapshot da sua conta que pertença a outra conta e seja compartilhado com sua conta. Caso tenha acesso à qual o snapshot pertence, será possível excluí-lo. Caso contrário, será necessário entrar em contato com o proprietário dessa conta.

Para verificar o proprietário do snapshot, execute o seguinte comando describe-snapshots da AWS CLI:

$ aws ec2 describe-snapshots --snapshot-id snap-abcdef1234567890

Nota: Substitua snap-abcdef1234567890 pelo ID de seu snapshot.

Também é possível encontrar informações sobre o snapshot no console do Amazon Elastic Compute Cloud (Amazon EC2). Para obter mais informações, consulte View Amazon EBS snapshot information (Visualizar as informações do snapshot do Amazon EBS).

Caso seja o proprietário do snapshot e deseje revogar o compartilhamento com outras contas, siga estas etapas:

  1. Abra o console do Amazon EC2.
  2. No painel de navegação, selecione Snapshots.
  3. Selecione o snapshot compartilhado e, em seguida, escolha Actions, Modify permissions (Ações, Modificar permissões).
  4. Em Shared accounts (Contas compartilhadas), selecione o ID da conta da qual deseja revogar o compartilhamento do snapshot. Em seguida, escolha Remove selected (Remover selecionado).
  5. Escolha Save changes (Salvar alterações).

O snapshot do dispositivo raiz de volume do Amazon EBS é usado por uma AMI registrada

Você recebe a mensagem de erro: "The snapshot 'snap-abcdef1234567890' is currently in use by ami-abcdef1234567890." (O snapshot 'snap-abcdef1234567890' está sendo usado atualmente por ami-abcdef1234567890)

Use o Console de Gerenciamento da AWS ou a AWS CLI para cancelar o registro de sua AMI. Em seguida, exclua o snapshot.

É possível encontrar o ID da AMI na mensagem de erro. Ou ainda, é possível executar o seguinte comando describe-snapshots da AWS CLI:

$ aws ec2 describe-snapshots --snapshot-ids snap-abcdef1234567890

É possível encontrar o ID da AMI na seção Description (Descrição):

{
  "Snapshots": [
    {
      "Description": "Created by CreateImage(i-abcdef1234567890) for ami-abcdef1234567890",
      "Encrypted": false,
      "OwnerId": "111122223333",
      "Progress": "100%",
      "SnapshotId": "snap-abcdef1234567890",
      "StartTime": "2022-11-12T03:15:16.272000+00:00",
      "State": "completed",
      "VolumeId": "vol-abcdef1234567890",
      "VolumeSize": 8,
      "StorageTier": "standard"
    }
  ]
}

O snapshot está na Lixeira

Você recebe a mensagem de erro: "An error occurred (InvalidSnapshot.NotFound) when calling the DeleteSnapshot operation. The snapshot 'snap-abcdef1234567890' does not exist." (Ocorreu um erro (InvalidSnapshot.NotFound) ao chamar a operação DeleteSnapshot. O snapshot 'snap-abcdef1234567890' não existe.)

Caso você exclua um snapshot usando a AWS CLI e receba a mensagem de erro anterior, o snapshot pode estar na Lixeira. Não é possível excluir um snapshot que está na Lixeira. O snapshot é excluído somente quando o período de retenção expira.

Para verificar se o snapshot está na Lixeira, execute o comando list-snapshots-in recycle-bin da AWS CLI:

aws ec2 list-snapshots-in-recycle-bin --snapshot-id snap-abcdef1234567890 --region region

Observação: substitua region pela sua região da AWS.

Exemplo de saída:

{
  "Snapshots": [
    {
      "SnapshotId": "snap-0460a240fc523552e",
      "RecycleBinEnterTime": "2022-11-13T16:33:54.707000+00:00",
      "RecycleBinExitTime": "2022-11-14T16:33:54.707000+00:00",
      "Description": "",
      "VolumeId": "vol-08d1428974b817a18"
    }
  ]
}

Caso precise excluir o snapshot antes que o período de retenção expire, é possível restaurá-lo da Lixeira. Certifique-se de que se seu usuário ou função do IAM possua as permissões corretas para visualizar e recuperar snapshots que estão na Lixeira.

Em seguida, verifique as regras de retenção da sua região da AWS. Para uma regra de retenção em nível de tag, modifique as tags do snapshot para que não correspondam à regra de retenção. Em seguida, exclua o snapshot. Para uma regra em nível de região, exclua a regra de retenção e, em seguida, exclua o snapshot. A exclusão da regra de retenção não afeta os outros snapshots na Lixeira.

O snapshot é criado no AWS Backup ou o snapshot criado no AWS Backup foi restaurado a partir da Lixeira

Você recebe a mensagem de erro: "snap-abcdef1234567890 This snapshot is managed by AWS Backup service and cannot be deleted via EC2 APIs. If you wish to delete this snapshot, please do so via the Backup console." (snap-abcdef1234567890 Esse snapshot é gerenciado pelo serviço do AWS Backup e não pode ser excluído por meio das APIs do EC2. Caso queira excluir esse snapshot, use o console de backup.)

Não é possível usar o console do Amazon EC2 ou a AWS CLI para excluir um snapshot criado e gerenciado no AWS Backup. É preciso excluir o snapshot a partir do console do AWS Backup. Anote o ID do snapshot e siga as etapas para excluir backups.

No entanto, não é possível usar o console do AWS Backup para excluir um snapshot criado no AWS Backup, enviado para a Lixeira e depois restaurado. É preciso excluir o snapshot usando o console do Amazon EC2 ou a AWS CLI.

O snapshot é criado usando o Amazon Data Lifecycle Manager e é armazenado na Lixeira

O Amazon Data Lifecycle Manager não gerencia snapshots na Lixeira que são criados usando o Amazon Data Lifecycle Manager ou políticas de snapshot. É preciso usar o console do Amazon EC2 ou a AWS CLI para excluir o snapshot.

Os resultados da API DeleteSnapshot não são imediatamente visíveis para as demandas subsequentes

Todas as APIs do Amazon EC2 seguem um modelo de consistência eventual. Isso significa que, ao usar a API DeleteSnapshot, os resultados podem não ser imediatamente visíveis para os comandos subsequentes executados.

Para verificar o status de um snapshot excluído recentemente, execute o seguinte comando describe-snapshots da AWS CLI:

$ aws ec2 describe-snapshots --region region --snapshot-ids snap-abcdef1234567890

Caso receba a seguinte mensagem de erro, o snapshot foi excluído com sucesso: "An error occurred (InvalidSnapshot.NotFound) when calling the DescribeSnapshots operation: The snapshot 'snap-abcdef1234567890' does not exist." (Ocorreu um erro (InvalidSnapshot.notFound) ao chamar a operação DescribeSnapshots: o snapshot 'snap-abcdef1234567890' não existe.)


AWS OFICIAL
AWS OFICIALAtualizada há um ano