Como resolvo erros ao carregar dados entre o Amazon Aurora e o Amazon S3?

6 minuto de leitura
0

Quero corrigir erros ao carregar dados entre o Amazon Aurora e o Amazon Simple Storage Service (Amazon S3).

Breve descrição

Para carregar dados como um arquivo de texto entre o Amazon Aurora e o Amazon S3, use o comando SELECT INTO OUTFILE S3 ou o comando LOAD DATA FROM S3. Ao executar qualquer um dos comandos, você poderá receber erros como os seguintes:

  1. Error Code: 1871. Missing Credentials
  2. Incorrect Command: missing file/prefix/manifest keyword
  3. Error code: 1045. Access denied error
  4. Error code: 1815. Internal error: Unable to initialize
  5. Error Code: 1871. S3 API returned error: Access Denied

Resolução

Execute o comando SELECT INTO OUTFILE S3 ou LOAD DATA FROM S3

Conclua as etapas a seguir:

  1. Crie um bucket do S3 e copie o ARN.

  2. Crie uma política do AWS Identity and Access Management (IAM) com permissões para o bucket do S3. Especifique o ARN do bucket e, em seguida, conceda permissões aos objetos dentro do ARN do bucket. Se não estiver usando uma política FullS3Access, execute uma política personalizada similar à seguinte:

    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": "s3:*",
          "Resource": [
            "arn:aws:s3:::<your_bucket_name>",
            "arn:aws:s3:::<your_bucket_name>/*"
          ]
        }
      ]
    }
  3. Crie um perfil do IAM para o serviço do Amazon Relational Database Service (Amazon RDS). Em seguida, anexe a política do IAM que você criou. A relação de confiança é semelhante à seguinte:

    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "Service": "rds.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
  4. Crie um grupo de parâmetros de cluster de banco de dados personalizado para o Amazon Aurora. Para a edição 1 ou 2 compatível com o Amazon Aurora MySQL, edite aurora_select_into_s3_role ou aws_default_s3_role para o valor do ARN do perfil do IAM. Para a versão 3 compatível com o Aurora MySQL, edite aws_default_s3_role para o valor do ARN do perfil do IAM.

  5. Anexe o perfil do IAM ao cluster de banco de dados que você criou. Para mais informações, consulte Associar um perfil do IAM a um cluster de banco de dados do Amazon Aurora MySQL.

  6. Faça login em seu cluster de banco de dados do Amazon Aurora.

  7. Para criar um novo usuário, execute o seguinte comando:

    CREATE USER 'testsaveload'@'%' IDENTIFIED BY 'somepassword';show grants for 'testsaveload'@'%';
  8. Para conceder permissões ao usuário, execute o seguinte comando:

    GRANT SELECT, CREATE, INSERT, DROP ON *.* TO 'testsaveload'@'%';
  9. Para o Aurora MySQL versão 1 ou 2, use a instrução a seguir:

    GRANT SELECT INTO S3 ON *.* TO 'testsaveload'@'%';GRANT LOAD FROM S3 ON *.* TO 'testsaveload'@'%';
  10. Para o Aurora MySQL versão 3, use a instrução a seguir:

GRANT AWS_SELECT_S3_ACCESS TO 'testsaveload'@'%'GRANT AWS_LOAD_S3_ACCESS TO 'testsaveload'@'%';

**Observação:**na versão 3 do Aurora MySQL, use o parâmetro de cluster de banco de dados para ativar activate_all_roles_on_login. Quando um usuário se conecta a uma instância de banco de dados, todas as funções são ativadas automaticamente. Para obter mais informações, consulte Conceder privilégios para carregar dados no Amazon Aurora MySQL. Execute o comando SELECT INTO OUTFILE S3 ou 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;

Error Code: 1871. Missing Credentials

Se o anexo do perfil do IAM ao cluster de banco de dados estiver ausente, consulte a etapa 5 na seção “Executar o comando SELECT INTO OUTFILE S3 ou LOAD DATA FROM S3”. Se o ARN do perfil não estiver especificado e somente o nome do perfil estiver listado no grupo de parâmetros, consulte a etapa 2.

Incorrect Command: missing file/prefix/manifest keyword

Se você receber esse erro, verifique se a palavra-chave do comando está correta.

Error code: 1045. Access denied error

Se você digitar um comando incorreto, poderá receber um erro como “1045: Access denied for user “testsaveload'@'%';”. Por exemplo, o comando a seguir está incorreto:

SELECT * from test1.test2034 INTO OUTFILE 's3://tests3saveloadaurora/testfile1prefix.part_00000';

Confirme se a palavra-chave S3 foi inserida na consulta, como o seguinte comando:

 SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';

Error code: 1815. Internal error: Unable to initialize

Se você receber esse erro, conclua as seguintes etapas:

  1. Confirme se o arquivo existe em seu bucket do S3 e, em seguida, confirme se o nome que você especificou no script corresponde ao nome do arquivo. Confirme se os nomes do bucket, da pasta e do objeto do S3 correspondem ao comando LOAD.
  2. Revise a etapa 2 na seção “Execute o comando SELECT INTO OUTFILE S3 ou LOAD DATA FROM S3” para verificar se você definiu as permissões corretas.
  3. Se houver um erro de sintaxe no script LOAD, revise seu script LOAD e execute o comando novamente.
  4. Se o bucket do S3 e o cluster de banco de dados estiverem em regiões diferentes e o caminho para o bucket do S3 não tiver o valor da região, consulte Endpoints e cotas do Amazon Simple Storage Service para mais informações.
  5. Se a configuração de rede para as instâncias de leitor e gravador for diferente, consulte Conexões de endpoint do Amazon Aurora para mais informações.

Error Code: 1871. S3 API returned error: Access Denied

Você pode receber esse erro se tiver criptografia no bucket do S3 ou se houver um arquivo criptografado dentro do bucket do S3. Se ServerSideEncryptionConfigurationExists não for falso, adicione kms:* à política que você anexou ao perfil do IAM usada para realizar a operação LOAD.

Por exemplo, se não estiver usando uma política FULLS3Access, use o exemplo de política personalizada a seguir:

{  "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: S3 API returned error: Resource Not Found: No response body.

Para resolver esse erro, verifique se o ARN e o nome do bucket estão corretos.

Informações relacionadas

Salvar dados a partir de um cluster de banco de dados do Amazon Aurora MySQL em arquivos de texto de um bucket do Amazon S3

Carregar dados em um cluster de banco de dados do Amazon Aurora MySQL a partir de arquivos de texto em um bucket do Amazon S3

AWS OFICIAL
AWS OFICIALAtualizada há 5 meses