¿Cómo puedo solucionar los problemas de restauración de mi clúster de ElastiCache desde S3?

7 minutos de lectura
0

Al restaurar mi copia de seguridad de Amazon ElastiCache para Redis desde Amazon Simple Storage Service (Amazon S3), se produce un error en la creación del clúster. Recibo un mensaje de error “Create-failed” (Error al crear) o “Permission denied” (Permiso denegado). ¿Cómo puedo solucionar este problema?

Descripción breve

Las siguientes son las razones habituales por las que se produce un error al restaurar una copia de seguridad de ElastiCache desde Amazon S3:

  • Está intentando restaurar una copia de seguridad fuera de las restricciones de la copia de seguridad.
  • ElastiCache no pudo recuperar el archivo de Amazon S3.
  • El archivo de copia de seguridad de ElastiCache se encuentra en un bucket de Amazon S3 en otra región.
  • Va a restaurar un archivo .rdb que contiene varias bases de datos en un clúster de ElastiCache (modo de clúster habilitado).

Resolución

Está intentando restaurar una copia de seguridad fuera de las restricciones de la copia de seguridad

Al restaurar una copia de seguridad de ElastiCache para Redis, es importante tener en cuenta las siguientes restricciones de copia de seguridad:

  • No se puede restaurar desde una copia de seguridad creada con un clúster de Redis (modo de clúster habilitado) a un clúster de Redis (modo de clúster desactivado).
  • Al restaurar una copia de seguridad hecha desde un clúster de ElastiCache (modo de clúster habilitado), no puede seleccionar la opción de modo de clúster desactivado en la consola de ElastiCache. Solo está disponible la opción de modo de clúster habilitado.
  • Al exportar una copia de seguridad de clúster de ElastiCache (modo de clúster habilitado) a Amazon S3, se crean varios archivos .rdb (uno para cada partición). Si intenta propagar la copia de seguridad desde Amazon S3, solo puede hacer referencia a una copia de seguridad (.rdb). Esto da como resultado la propagación de las claves de una sola partición. Si se intenta evitar esto mediante la inclusión de un comodín, se produce el siguiente error:
    Error: Object or bucket does not exist for S3 object: examplebucket/cluster-mode-enabled-*.rdb (El objeto o el bucket no existen para el objeto de S3: examplebucket/cluster-mode-enabled-*.rdb).
  • No puede restaurar una copia de seguridad desde un clúster que utilice la organización de datos en niveles. Por ejemplo, no puede restaurar un nodo r6gd en un clúster que no utilice la organización de datos en niveles, como un nodo r6g.
  • No se puede restaurar desde un clúster de Redis (modo de clúster desactivado) a un clúster de Redis (modo de clúster habilitado) si el archivo .rdb hace referencia a más de una base de datos. Si se intenta hacer esto, se produce el siguiente error:
    Error: To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0 (Para restaurar una instantánea en modo de clúster, todas las claves del archivo RDB deben residir en la base de datos 0).

ElastiCache couldn't retrieve the file from Amazon S3 (ElastiCache no pudo recuperar el archivo de Amazon S3)

Este error se produce cuando ElastiCache no tiene los permisos necesarios para acceder a la copia de seguridad de ElastiCache almacenada en el bucket de S3. Puede confirmar el problema de permisos si revisa los eventos de ElastiCache.

El siguiente ejemplo de evento de ElastiCache muestra que la creación de “prueba” del grupo de replicación de Redis falló porque ElastiCache no pudo recuperar el archivo de copia de seguridad de S3:

Restore from snapshot failed for node group 0001 in replication group test. Failed to retrieve file from S3

Tras determinar que la causa del error es que ElastiCache no pudo recuperar el archivo de Amazon S3, confirme que su región es una de las siguientes:

Una región habilitada requiere una política de bucket que permita a ElastiCache recuperar el archivo de copia de seguridad de Amazon S3.

Si su bucket de S3 se encuentra en una de las siguientes regiones, debe permitir que el servicio ElastiCache acceda al archivo de copia de seguridad en S3:

Nota: El ID canónico de las regiones de China (Pekín), China (Ningxia) y AWS GovCloud (Oeste de EE. UU.) es diferente de las regiones de AWS predeterminadas:

China (Pekín) y China (Ningxia)

Canonical ID: b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

Región AWS GovCloud (Oeste de EE. UU.)

Canonical ID: 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

Regiones predeterminadas de AWS

Canonical ID: 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

Tras conceder acceso a ElastiCache al objeto de copia de seguridad .rdb en Amazon S3 mediante una política de bucket o de ID canónica, restaure el clúster de Redis.

El archivo de copia de seguridad de ElastiCache se encuentra en un bucket de Amazon S3 en otra región

El siguiente mensaje de error indica que está intentando restaurar una copia de seguridad de ElastiCache que se encuentra en un bucket de Amazon S3 dentro de otra región:

“Permission denied to access S3 object. Please use the S3 object in the same region” (Permiso denegado para acceder al objeto de S3. Utilice el objeto de S3 en la misma región).

Para resolver este problema, lleve a cabo las siguientes acciones:

1.    Copie la copia de seguridad (.rdb) del bucket de S3 que contiene la copia de seguridad en un bucket de S3 ubicado en la región en la que se está restaurando el clúster de Redis.

A continuación, se muestra un ejemplo de comando de la interfaz de la línea de comandos de AWS (AWS CLI) que puede usar para copiar elementos entre buckets de Amazon S3 ubicados en diferentes regiones:

aws s3 cp s3://SourceBucketName/BackupName.rdb s3://DestinationBucketName/BackupName.rdb --acl bucket-owner-full-control --source-region SourceRegionName --region DestinationRegionName

Nota: Si recibe errores mientras ejecuta los comandos de AWS CLI, asegúrese de que está utilizando la versión más reciente de AWS CLI.

2.    Una vez completada la copia, confirme que el objeto de copia de seguridad (.rdb) tiene los permisos correctos asignados en forma de ID canónica o política de bucket. Consulte la sección anterior para obtener los ID canónicos correctos.

Ahora que el objeto de copia de seguridad se ha copiado en la región correcta y se han aplicado los permisos correctos, puede continuar restaurando el clúster.

Va a restaurar un archivo .rdb que contiene varias bases de datos en un clúster de ElastiCache (modo de clúster habilitado)

No puede restaurar un archivo de copia de seguridad de Redis (.rdb) que contenga varias bases de datos en un clúster de ElastiCache (modo de clúster habilitado). ElastiCache (modo de clúster habilitado) no admite varias bases de datos. Todas las claves deben residir en DB0. Puede confirmar si esta es la causa del error de restauración revisando los eventos de ElastiCache.

El siguiente ejemplo de evento de ElastiCache muestra que la creación de “prueba” del grupo de replicación de Redis ha fallado debido a que el archivo .rdb contiene varias bases de datos.

Restore from snapshot failed for node group 0001 in replication group test. To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0. Snapshot ID: arn:aws:s3:::example-bucket/multidb.rdb

Para corregir este problema, haga lo siguiente:

1.    Asegúrese de que todas las claves se migran a una sola base de datos.

Nota: Si la base de datos de origen se encuentra en ElastiCache Redis, no se admite el comando migrate.

2.    Una vez que todas las claves estén en la misma base de datos, puede crear una copia de seguridad local de su base de datos de Redis, cargar la copia de seguridad en Amazon S3 y continuar restaurando en un clúster de ElastiCache (modo de clúster habilitado).


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años