Como soluciono problemas das Operações em Lote do Amazon S3?

10 minuto de leitura
0

Quando eu crio um trabalho das Operações em Lote do Amazon Simple Storage Service (Amazon S3) para objetos em um bucket, o Amazon S3 retorna um erro. Ou o trabalho em lote falha.

Breve descrição

Se um trabalho das Operações em Lote do Amazon S3 encontrar um problema que não permita sua execução com êxito, o trabalho falhará. Um trabalho que falha gera um ou mais códigos e motivos de falha. Para visualizar os códigos e motivos de falha relativos a uma Operação em Lote do Amazon S3, solicite os detalhes do trabalho. Você também pode examinar os códigos e motivos de falha no relatório de conclusão do trabalho.

Para evitar que os trabalhos executem um grande número de operações malsucedidas, o Amazon S3 impõe um limite de falha de tarefas em cada trabalho das Operações em Lote. O Amazon S3 monitora a taxa de falha de tarefas após a execução de pelo menos 1.000 tarefas. Se um trabalho exceder a taxa de falha de 50%, o trabalho falhará. Para resolver essa falha, analise as causas das falhas e corrija-as. Em seguida, reenvie o trabalho.

Resolução

O formato do arquivo de manifesto está incorreto (.csv ou JSON)

As Operações em Lote do Amazon S3 oferecem suporte a arquivos de manifesto .csv e JSON (relatório de inventário do Amazon S3). Se o arquivo de manifesto não estiver correto, você deverá criar um novo trabalho em lote no Amazon S3 e especificar o formato correto.

  • Para o relatório de inventário do Amazon S3, use um relatório no formato CSV e especifique o arquivo manifest.json associado ao relatório de inventário.

  • Para arquivos .csv, inclua o nome do bucket e a chave do objeto em cada linha do arquivo de manifesto. Opcionalmente, inclua a versão do objeto. Se você incluir IDs de versão no manifesto, será preciso especificar os IDs de todos os objetos. Caso contrário, não inclua nenhum ID de versão. As chaves de objeto devem ser codificadas em URL.

    Observação: se os objetos no seu manifesto estiverem em um bucket versionado, você deverá especificar os IDs de versão dos objetos. Caso contrário, o trabalho em lote falhará. Ou o Amazon S3 pode aplicar o trabalho em lote à versão incorreta do objeto.

Para obter mais informações, consulte Especificar um manifesto.

O arquivo de manifesto especifica vários nomes de bucket ou contém várias linhas de cabeçalho

Com as Operações em Lote do S3, todos os objetos que o arquivo de manifesto lista devem existir no mesmo bucket. Caso contrário, você receberá este erro:

"Reasons for failure: Cannot have more than 1 bucket per Job. JOB_ID"

Para trabalhos de Operação em Lote do S3, certifique-se de que seu arquivo de manifesto especifique somente um nome de bucket e não contenha nenhuma linha de cabeçalho. Neste exemplo, o Amazon S3 retorna um erro porque o arquivo de manifesto contém várias linhas de cabeçalho.

bucket,key
my-batch-bucket,object001.txt
my-batch-bucket,object002.txt
my-batch-bucket,object003.txt
my-batch-bucket,object004.txt

O perfil do IAM não tem permissões para ler o arquivo de manifesto

O perfil do AWS Identity and Access Management (IAM) que cria o trabalho das Operações em Lote do S3 deve ter permissões de leitura GetObject sobre o arquivo manifesto. Verifique os metadados do objeto em busca de qualquer incompatibilidade de acesso com a propriedade do objeto do S3. Além disso, procure qualquer chave incompatível do AWS Key Management Service (AWS KMS) que criptografe o arquivo de manifesto.

Se o perfil do IAM não tiver as permissões corretas, você receberá esses erros ao criar uma tarefa das Operações em Lote do S3:

Exemplo de erro da AWS CLI

"Reason for failure Reading the manifest is forbidden: AccessDenied"

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

**Exemplo de erro do console do Amazon S3 **

"Warning: Unable to get the manifest object's ETag. Specify a different object to continue"

Observação: as Operações em Lote do S3 oferecem suporte a relatórios de inventário em CSV criptografados pelo AWS KMS. As Operações em Lote do S3 não oferecem suporte a arquivos de manifesto .csv criptografados pelo AWS KMS. Para obter mais informações, consulte Configurar um inventário usando o console do S3.

O trabalho em lotes está em uma região diferente

Os trabalhos de cópia das Operações em Lote do S3 devem estar na mesma região da AWS do bucket de destino para onde os objetos serão copiados. Ao criar um trabalho em lotes, selecione a mesma região do seu bucket de destino. Por exemplo, se o bucket de destino estiver na região us-west-2, selecione us-west-2 como a região do trabalho em lote.

O bucket de destino do relatório de inventário do S3 está ausente

Deve haver um bucket de destino para o manifesto gerado pelas Operações em Lote do S3. A política de bucket do Amazon S3 também deve permitir a ação s3:PutObject. Se o relatório for enviado para outra conta da AWS, confirme se o bucket de destino permite que o perfil do IAM execute a ação s3:PutObject.

A política de confiança do perfil do IAM está ausente

Observação: certifique-se de especificar um perfil do IAM e não um usuário do IAM.

A política de confiança para um perfil do IAM define as condições que devem ser atendidas para que outras entidades principais o assumam. Para permitir que a entidade principal do serviço das Operações em Lote do S3 assuma o perfil do IAM, anexe uma política de confiança ao perfil.

Este exemplo de política de confiança concede acesso ao Amazon S3. Ela reduz todos os riscos associados ao escalonamento de privilégios:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "batchoperations.s3.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

As permissões do IAM para criar um trabalho em lote estão ausentes

Antes de criar e executar trabalhos das Operações em Lote do S3, conceda ao perfil do IAM as permissões necessárias. Se o seu perfil do IAM não tiver as permissões necessárias para realizar o trabalho das Operações em Lote do S3, o trabalho em lote falhará.

Para criar um trabalho das Operações em Lote do S3, conceda ao perfil do IAM as permissões s3:CreateJob. A mesma entidade que cria o trabalho também deve ter permissões iam:PassRole. Isso permite que a entidade transmita o perfil do IAM que você especifica para o trabalho em lote. Para obter mais informações, consulte Elementos de política JSON do IAM: Resource.

Falta acesso ao bucket de origem, ao relatório de inventário do S3 ou ao bucket de destino

Certifique-se de que o perfil do IAM usado para Operações em Lote do S3 tenha as permissões necessárias para realizar o trabalho em lote.

Aqui está um exemplo de política do IAM para a operação de cópia:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectTagging"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::{{DestinationBucket}}/*"
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:GetObjectAcl",
        "s3:GetObjectTagging",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::{{SourceBucket}}",
        "arn:aws:s3:::{{SourceBucket}}/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::{{ManifestBucket}}/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::{{ReportBucket}}/*"
      ]
    }
  ]
}

Para obter mais informações, consulte Conceder permissões para operações em lote do Amazon S3.

O SCP da organização é restritivo

Se você usa o AWS Organizations, confirme que não há nenhuma declaração Negar que negue o acesso ao Amazon S3. Por exemplo, sua política de controle de serviço (SCP) nega explicitamente todas as ações do S3. Nesse caso, você pode receber um erro de Acesso negado ao criar um trabalho em lote.

Este exemplo de política nega explicitamente todas as ações do S3:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Principal": "*",
      "Effect": "Deny",
      "Action": "s3:*",
      "Resource": "*"
    }
  ]
}

Para aplicar uma política restritiva, adicione o perfil do IAM que as Operações em Lote do S3 usam para realizar a operação na lista de permissões. Este exemplo adiciona uma exceção à política:

{
  "Version": "2012-10-17",
  "Statement": \[
    {
      "Principal": "\*",
      "Effect": "Deny",
      "Action": "s3:\*",
      "Resource": "\*",
      "Condition": {
        "StringNotLike": {
          "aws:userId": \[
            "AROAEXAMPLEID:\*",
            "AIDAEXAMPLEID",
            "111111111111"
          \]
        }
      }
    }
  \]
}

O ID de versão de um objeto está ausente no manifesto

Se um trabalho das Operações em Lote encontrar um objeto no manifesto com um campo de ID de versão vazio, você receberá este erro:

"Error: BUCKET_NAME,prefix/file_name,failed,400,InvalidRequest,Task failed due to missing VersionId"

Se o formato do manifesto usar IDs de versão durante a operação, o campo ID da versão não poderá ser uma string vazia. Em vez disso, o campo ID de versão deve ser uma string "nula". Os trabalhos sem versão não encontram esse erro. Eles operam na versão mais recente de cada objeto e não nos IDs de versão encontrados no manifesto. Para corrigir esse erro, converta os IDs de versão vazios em strings nulas.

Observação: as operações em lote falham nesse objeto específico, mas não em todo o trabalho.

O relatório de trabalho não é entregue quando o modo de retenção do bloqueio de objetos do Amazon S3 está ativado

Ao configurar o modo de retenção do bloqueio de objetos em um bucket de destino no modo de governança ou no modo de conformidade, você pode receber este erro:

"Error: Reasons for failure. The job report could not be written to your bucket. Please check your permissions."

O Amazon S3 não oferece suporte ao bloqueio de objetos para buckets de destino com configurações de modo de retenção. Quando o modo de retenção é configurado, o bucket é protegido por write-once-read-many (WORM). Para corrigir esse erro, escolha um bucket de destino para seus relatórios de conclusão de trabalhos que não tenha o modo de retenção do bloqueio de objetos configurado.

Observação: é o relatório de conclusão que falha, não o trabalho. O trabalho é concluído com êxito e todos os objetos são processados.

As versões de ETag não coincidem

Ao especificar o manifesto no trabalho de operação em lote, você pode especificar a chave do objeto do manifesto, a ETag e o ID de versão opcional. Ao especificar o arquivo de manifesto, verifique se o valor da ETag corresponde à ETag da versão mais recente do objeto do manifesto no bucket do S3. Na guia Operações em lote do console do Amazon S3, verifique a ETag do objeto do manifesto nas propriedades do arquivo de manifesto. Na AWS CLI, verifique o valor da ETag transmitido pela especificação do manifesto.

Se a ETag preenchida que está no console ou na AWS CLI não corresponder à ETag no bucket do S3, esse erro ocorrerá:

"Error reading the manifest. Caused by: ETag mismatch. Expected ETag: 69f52a4e9f797e987155d9c8f5880897"

Anote a ETag esperada nesse erro e verifique se as duas versões da sua ETag correspondem. Para obter mais informações, consulte Especificar um manifesto.

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses