Como faço para copiar e restaurar um snapshot do Amazon Redshift Serverless para uma conta diferente da AWS?

Data da última atualização: 11/10/2022

Quero copiar e restaurar um snapshot do Amazon Redshift Serverless de uma conta da AWS para outra conta da AWS. Como posso fazer isso?

Resolução

Execute uma cópia e restauração de uma conta da AWS para outra usando o console do Amazon Redshift ou a AWS Command Line Interface (AWS CLI).

Antes de começar, considere o seguinte:

  • Você pode restaurar um snapshot para um namespace do Amazon Redshift Serverless somente se ele estiver no statusAvailable (Disponível) e associado a um workgroup (grupo de trabalho) disponível.
  • A restauração de um namespace do Amazon Redshift Serverless a partir de um snapshot substitui todos os bancos de dados do namespace por bancos de dados no snapshot.
  • Durante a restauração, o Amazon Redshift Serverless não estará disponível.

Copiar e restaurar usando o console do Amazon Redshift

Converter um ponto de recuperação do Amazon Redshift Serverless em um snapshot na conta de origem

  1. Abra o console do Amazon Redshift.
  2. No painel de navegação, escolha Redshift serverless (Redshift com tecnologia sem servidor) e Data backup (Backup de dados).
  3. Em Recovery points (Pontos de recuperação), escolha a Creation time (Hora de criação) do ponto de recuperação que você deseja converter em um snapshot.
  4. Escolha Create snapshot from recovery point (Criar snapshot a partir do ponto de recuperação).
  5. Insira um Snapshot identifier (Identificador de snapshot) e um retention period (período de retenção).
  6. Escolha Create (Criar).

Compartilhar o snapshot na conta de origem com outra conta da AWS

  1. Abra o console do Amazon Redshift.
  2. No painel de navegação, escolha Redshift serverless (Redshift com tecnologia sem servidor) e Data backup (Backup de dados).
  3. Escolha o snapshot que você criou anteriormente.
  4. Escolha Actions, Manage access (Ações, Gerenciar acesso).
  5. Escolha Add AWS account (Adicionar conta da AWS) localizada em Provide access to serverless accounts (Fornecer acesso a contas com tecnologia sem servidor) e insira um AWS account ID (ID de conta da AWS) (destino).
  6. Escolha Save changes (Salvar alterações).

Restaurar o snapshot em um namespace do Amazon Redshift Serverless na conta de destino

  1. Abra o console do Amazon Redshift.
  2. No painel de navegação, escolha Redshift serverless (Redshift com tecnologia sem servidor) e Data backup (Backup de dados).
  3. Escolha o snapshot compartilhado com o ID da conta da AWS a ser restaurado. Você pode restaurar somente um snapshot por vez.
  4. Escolha Actions, Restore to serverless namespace (Ações, Restaurar para namespace com tecnologia sem servidor).
  5. Escolha um namespace disponível para restaurar. Você pode restaurar somente em namespaces com o status Available (Disponível).
  6. Escolha Restore (Restaurar).

Copiar e restaurar usando a CLI da AWS

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.

Converter um ponto de recuperação do Amazon Redshift Serverless em um snapshot na conta de origem

1.    Use o comando list-recovery-points para obter uma lista de instantâneos criados após o start-time (horário de início). Execute o comando a seguir e substitua namespacename pelo seu namespace, us-west-2 pela região da AWS e start-time pelo horário de início do ponto de recuperação em UTC:

aws redshift-serverless list-recovery-points --namespace-name <namespacename> --region <region name> --start-time <starttime>

No exemplo a seguir, o cluster Redshift Serverless está na região Oeste dos EUA (Oregon) com um namespace default (padrão) e um horário de início de 2022-09-06T07:10 UTC:

aws redshift-serverless list-recovery-points --namespace-name default --region us-west-2 --start-time 2022-09-06T07:10

2.    Use o comando convert-recovery-point-to-snapshot para criar um snapshot e um período de retenção. Execute o comando a seguir e substitua recoveryPointId pela saída do ID do ponto de recuperação da etapa 1, days pelo número de dias para reter o snapshot name pelo nome de seu snapshot e us-west-2 por sua região da AWS:

aws redshift-serverless convert-recovery-point-to-snapshot --recovery-point-id <recoveryPointId> --retention-period <days> --snapshot-name <snapshot name> --region <region name>

No exemplo a seguir, o snapshot é denominado snapshot01 com um período de retenção de três dias e está na região Oeste dos EUA (Oregon).

aws redshift-serverless convert-recovery-point-to-snapshot --recovery-point-id 72acee50-34df-45f6-865f-46aa178ada82 --retention-period 3 --snapshot-name snapshot01 --region us-west-2

3.    Use o comando get-snapshot para confirmar que o instantâneo foi criado. Execute o comando a seguir e substitua o snapshot name pelo nome do seu snapshot:

aws redshift-serverless get-snapshot --snapshot-name <snapshot name>

Compartilhar o snapshot na conta de origem com outra conta da AWS

Use o comando put-resource-policy para fornecer acesso ao snapshot para outra conta da AWS. Execute o comando a seguir e substitua o destination account ID pelo ID da conta da AWS de destino e snapshot arn pelo ARN do snapshot:

aws redshift-serverless put-resource-policy --policy "{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\”<destination account ID>\”]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}" --resource-arn <snapshot arn>

No exemplo a seguir, o acesso é fornecido ao ARN do snapshot na conta número123456789012:

aws redshift-serverless put-resource-policy --policy "{\"Version\": \"2012-10-17\", \"Statement\" : [{ \"Sid\": \"AllowUserRestoreFromSnapshot\", \"Principal\":{\"AWS\": [\"123456789012\"]}, \"Action\": [\"redshift-serverless:RestoreFromSnapshot\"] , \"Effect\": \"Allow\" }]}" --resource-arn arn:aws:redshift-serverless:us-west-2:112233445566:snapshot/4978ca91-24ba-4196-91ad-9d372f72b0fe

Restaurar o snapshot em um namespace do Amazon Redshift Serverless na conta de destino

1.    Use o comando list-snapshots para listar o snapshot na sua região da AWS. Execute o comando a seguir e substitua us-west-2 por sua região da AWS:

aws redshift-serverless list-snapshots  --region us-west-2

2.    Use o comando restore-from-snapshot para restaurar o snapshot em um Amazon Redshift Serverless. Execute o comando a seguir e substitua o snapshot name pelo nome do seu snapshot, o workgroup name pelo nome do seu grupo de trabalho e o snapshot arnpelo ARN do snapshot do comando anterior:

aws redshift-serverless  restore-from-snapshot --namespace-name <namespace name > --workgroup-name <workgroup name> --snapshot-arn <snapshot arn>

No exemplo a seguir, o ID da conta 112233445566 tem um Amazon Redshift Serverless no estado Available (Disponível) com um nome de namespace de restore e um nome de grupo de trabalho de restore:

aws redshift-serverless restore-from-snapshot --namespace-name restore --workgroup-name restore --snapshot-arn arn:aws:redshift-serverless:us-west-2:112233445566:snapshot/4978ca91-24ba-4196-91ad-9d372f72b0fe

Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?