Migrar un snapshot de Amazon RDS entre cuentas
Compartí y restaurá un snapshot de Amazon RDS entre cuentas de AWS, cubriendo bases de datos no cifradas, cifradas con la clave KMS predeterminada y cifradas con clave KMS personalizada, además del escenario cross-region.
Prerrequisitos
- Acceso a la consola de AWS en la cuenta origen y la cuenta destino
- Un Cluster configurado en SleakOps (Documentación de Cluster)
- Un Environment configurado (Documentación de Environment)
- El ID de la cuenta destino (formato de 12 dígitos)
Empecemos
Caso 1 — RDS no cifrada
En la cuenta origen:
- Ir a RDS → Snapshots.
- Seleccionar la snapshot → Actions → Share snapshot.
- Ingresar el ID de la cuenta destino (formato:
123456789012). - Confirmar.
En la cuenta destino:
- Ir a SleakOps → Dependencies → Create.
- Seleccionar Create an RDS from a snapshot.
- Ingresar el identificador de la snapshot compartida.
Caso 2 — RDS cifrada con la clave KMS predeterminada de AWS (aws/rds)
Las claves KMS administradas por AWS (aws/rds) no se pueden compartir directamente entre cuentas. Primero es necesario re-cifrar la snapshot con una clave administrada por el cliente (CMK).
En la cuenta origen:
- Crear una clave KMS personalizada con la política descripta en el Caso 3.
- Ir a RDS → Snapshots.
- Seleccionar la snapshot cifrada → Actions → Copy snapshot, eligiendo la clave KMS recién creada.
- Esperar a que finalice la copia.
- Sobre la nueva snapshot → Actions → Share snapshot.
- Ingresar el ID de la cuenta destino.
En la cuenta destino:
- Ir a SleakOps → Dependencies → Create.
- Seleccionar Create an RDS from a snapshot.
- Ingresar el identificador de la snapshot compartida.
Los snapshots sin cifrado pueden compartirse directamente entre cuentas. Si tu RDS usa cifrado, ver el Caso 3 más abajo para compartir la clave CMK.
Caso 3 — RDS cifrada con clave KMS personalizada (CMK)
En la cuenta origen — compartir la clave KMS:
- Ir a KMS → Customer managed keys.
- Seleccionar la clave usada para cifrar la RDS.
- En Key policy, agregar el siguiente statement en la sección de permisos:
{
"Sid": "Allow use of the key from destination account",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<<DESTINATION_ACCOUNT_ID>>:root"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey",
"kms:CreateGrant"
],
"Resource": "*"
}
En la cuenta origen — compartir la snapshot:
- Ir a RDS → Snapshots.
- Seleccionar la snapshot → Actions → Share snapshot.
- Ingresar el ID de la cuenta destino.
En la cuenta destino — copiar con clave KMS propia:
- Ir a RDS → Snapshots → Shared with me.
- Seleccionar la snapshot → Actions → Copy snapshot.
- Seleccionar una clave KMS de la cuenta destino (obligatorio).
- Esperar a que finalice la copia.
En la cuenta destino — restaurar:
- Ir a SleakOps → Dependencies → Create.
- Seleccionar Create an RDS from a snapshot.
- Ingresar el identificador de la snapshot copiada.
Caso especial — Snapshots en diferentes regiones
Si la snapshot está en una región diferente a donde querés restaurarla:
En la cuenta origen:
- Ir a RDS → Snapshots.
- Seleccionar la snapshot → Actions → Copy snapshot.
- En Destination Region, seleccionar la región destino.
- Si está cifrada con CMK, seleccionar una clave KMS válida en la región destino.
- Esperar que finalice la copia cross-region.
- Continuar con el proceso normal de compartir según el caso (1, 2 o 3).
Las claves KMS son específicas por región. Al copiar entre regiones, siempre usá una clave KMS de la región destino. Las copias cross-region pueden tardar horas dependiendo del tamaño de la snapshot.