Share Your AWS re:Post Experience - Quick 3 Question Survey and Earn a re:Post Badge
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey
¿Cómo puedo solucionar los errores al cargar datos entre Amazon Aurora y Amazon S3?
Quiero corregir los errores al cargar datos entre Amazon Aurora y Amazon Simple Storage Service (Amazon S3).
Descripción corta
Para cargar datos como un archivo de texto entre Amazon Aurora y Amazon S3, utilice el comando SELECT INTO OUTFILE S3 o LOAD DATA FROM S3. Al ejecutar cualquiera de los comandos, es posible que reciba errores como los siguientes:
- Código de error: 1871. Missing Credentials
- Incorrect Command: missing file/prefix/manifest keyword
- Error code: 1045. Access denied error
- Error code: 1815. Internal error: Unable to initialize
- Error Code: 1871. S3 API returned error: Access Denied
Resolución
Ejecución del comando SELECT INTO OUTFILE S3 o LOAD DATA FROM S3
Siga estos pasos:
-
Cree un bucket de S3 y copie el ARN.
-
Cree una política de AWS Identity and Access Management (IAM) para el bucket de S3 con permisos. Especifique el ARN del bucket y, a continuación, otorgue permisos a los objetos del ARN del bucket. En caso de no utilizar una política FullS3Access, ejecute una política personalizada similar a la siguiente:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::<your_bucket_name>", "arn:aws:s3:::<your_bucket_name>/*" ] } ] }
-
Cree un rol de IAM para el servicio Amazon Relational Database Service (Amazon RDS). A continuación, adjunte la política de IAM que haya creado. La relación de confianza es similar a la siguiente:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Cree un grupo personalizado de parámetros de clúster de base de datos para Amazon Aurora. Para la versión 1 o 2 de la edición de Amazon Aurora compatible con MySQL, edite aurora_select_into_s3_role o aws_default_s3_role con el valor del ARN del rol de IAM. Para la versión 3 de Aurora compatible con MySQL, edite el rol aws_default_s3_role con el valor del ARN del rol de IAM.
-
Adjunte el rol de IAM al clúster de base de datos que haya creado. Para obtener más información, consulte Asociación de un rol de IAM con un clúster de base de datos Amazon Aurora MySQL.
-
Inicie sesión en el clúster de base de datos de Amazon Aurora.
-
Para crear un usuario nuevo, ejecute el siguiente comando:
CREATE USER 'testsaveload'@'%' IDENTIFIED BY 'somepassword';show grants for 'testsaveload'@'%';
-
Para otorgar permisos al usuario, ejecute el siguiente comando:
GRANT SELECT, CREATE, INSERT, DROP ON *.* TO 'testsaveload'@'%';
-
Para las versiones 1 o 2 de Aurora MySQL, utilice la siguiente instrucción:
GRANT SELECT INTO S3 ON *.* TO 'testsaveload'@'%';GRANT LOAD FROM S3 ON *.* TO 'testsaveload'@'%';
-
Para la versión 3 de Aurora MySQL, utilice la siguiente instrucción:
GRANT AWS_SELECT_S3_ACCESS TO 'testsaveload'@'%'GRANT AWS_LOAD_S3_ACCESS TO 'testsaveload'@'%';
Nota: En la versión 3 de Aurora MySQL, utilice el parámetro de clúster de base de datos para activar activate_all_roles_on_login. Cuando un usuario se conecta a una instancia de base de datos, todos los roles se activan automáticamente. Para obtener más información, consulte Concesión de privilegios para cargar datos en Amazon Aurora MySQL. Ejecute el comando SELECT INTO OUTFILE S3 o LOAD DATA INTO S3:
SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';LOAD DATA FROM S3 PREFIX 's3-us-east-1://tests3saveloadaurora/testfile1prefix.part_00000' INTO TABLE test3001; LOAD DATA FROM S3 's3-us-east-1://tests3saveloadaurora/prefix3.part_00000' INTO TABLE test3000;
Código de error: 1871. Faltan credenciales
Si falta la conexión del rol de IAM al clúster de base de datos, consulte el paso 5 de la sección «Ejecute el comando SELECT INTO OUTFILE S3 o LOAD DATA FROM S3». El ARN del rol no se ha especificado, y solo el nombre del rol aparece en el grupo de parámetros. Consulte el paso 2.
Incorrect Command: missing file/prefix/manifest keyword
Si recibe este error, asegúrese de que la palabra clave del comando es correcta.
Código de error: 1045. Error de acceso denegado
Si escribe un comando incorrecto, es posible que se produzca un error como «1045: Access denied for user ''testsaveload'@'%';». Por ejemplo, el siguiente comando es incorrecto:
SELECT * from test1.test2034 INTO OUTFILE 's3://tests3saveloadaurora/testfile1prefix.part_00000';
Confirme que se ha introducido la palabra clave S3 en la consulta, por ejemplo, mediante el siguiente comando:
SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';
Código de error: 1815. Internal error: Unable to initialize
Si recibe este error, siga estos pasos:
- Confirme que el archivo exista en el bucket de S3 y, a continuación, confirme que el nombre que haya especificado en el script coincida con el del archivo. Confirme que los nombres del bucket, la carpeta y el objeto de S3 coincidan con el comando LOAD.
- Revise el paso 2 de la sección «Ejecute el comando SELECT INTO OUTFILE S3 o LOAD DATA FROM S3» para asegurarse de que ha establecido los permisos correctos.
- Si hay un error de sintaxis en el script LOAD, revise el script y vuelva a ejecutar el comando.
- Si el bucket de S3 y el clúster de base de datos se encuentran en regiones diferentes y en la ruta al bucket de S3 falta el valor de región, consulte los puntos de enlace y las cuotas de Amazon Simple Storage Service para obtener más información.
- Si la configuración de red de las instancias de lectura y escritura es diferente, consulte Conexiones de punto de enlace de Amazon Aurora para obtener más información.
Código de error: 1871. S3 API returned error: Acceso denegado
Es posible que reciba este error si tiene cifrado en el bucket de S3 o si hay un archivo cifrado en el bucket de S3. Si el estado de ServerSideEncryptionConfigurationExists no es falso, agregue kms:* a la política que haya adjuntado al rol de IAM utilizado para llevar a cabo la operación LOAD.
Por ejemplo, si no utiliza una política FULLS3Access, utilice el siguiente ejemplo de política personalizada:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:*", "kms:*" ], "Resource": [ "arn:aws:s3:::<your_bucket_name>", "arn:aws:s3:::<your_bucket_name>/*" ] } ] }
Error: La API de S3 ha devuelto un error: Recurso no encontrado: No hay cuerpo de respuesta.
Para resolver este error, asegúrese de que el ARN y el nombre del bucket sean correctos.
Información relacionada
Vídeos relacionados


Contenido relevante
- preguntada hace 3 meseslg...
- preguntada hace un meslg...
- preguntada hace 2 meseslg...
- preguntada hace 2 meseslg...
- preguntada hace 10 horaslg...
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 5 meses
- OFICIAL DE AWSActualizada hace un año