Criar um trabalho de operações em lote do S3 - Amazon Simple Storage Service

Criar um trabalho de operações em lote do S3

Com a funcionalidade Operações em Lote do Amazon S3, você pode executar operações em lote em grande escala em uma lista de objetos específicos do Amazon S3. Esta seção descreve as informações necessárias para criar um trabalho do Operações em lote do S3 e os resultados de uma solicitação CreateJob. Ela também fornece instruções para criar um trabalho de Operações em Lote usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI) e o AWS SDK for Java.

Ao criar um trabalho do S3 Batch Operations, você pode solicitar um relatório de conclusão para todas as tarefas ou somente para aquelas que apresentaram falha. Contanto que pelo menos uma tarefa tenha sido invocada com êxito, a funcionalidade Operações em Lote do S3 gera um relatório para tarefas que foram concluídas, que falharam ou que foram canceladas. Para ter mais informações, consulte Exemplos: relatórios de conclusão de operações em lote do S3.

O vídeo a seguir fornece uma breve demonstração de como criar um trabalho de Operações em Lote usando o console do Amazon S3.

Elementos da solicitação de trabalho de Operações em lote

Para criar um trabalho de operações em lote do S3, você deve fornecer as seguintes informações:

Operação

Especifique a operação que deseja que as operações em lote do S3 execute nos objetos no manifesto. Cada tipo de operação aceita parâmetros específicos para essa operação. A funcionalidade Operações em Lote possibilita a execução de uma operação em lote, com os mesmos resultados da operação executada individualmente em cada objeto.

Manifesto

O manifesto é uma lista de todos os objetos em que você deseja que a funcionalidade Operações em Lote do S3 execute a ação especificada. Você pode usar os seguintes métodos para especificar um manifesto para um trabalho de Operações em Lote:

  • Crie manualmente sua própria lista de objetos personalizada em formato CSV.

  • Escolha um relatório do Inventário do Amazon S3 existente em formato CSV.

  • Instruir a funcionalidade Operações em Lote para que gere um manifesto automaticamente com base nos critérios de filtro de objetos especificados ao criar um trabalho. Essa opção está disponível para trabalhos de replicação em lote criados no console do Amazon S3 ou para qualquer tipo de trabalho criado usando a AWS CLI, SDKs da AWS ou a API REST do Amazon S3.

nota
  • Independentemente de como você especifica o manifesto, a lista em si deve ser armazenada em um bucket de uso geral. A funcionalidade Operações em Lote não pode importar manifestos existentes nem salvar manifestos gerados em buckets de diretório. No entanto, os objetos descritos no manifesto podem ser armazenados em buckets de diretório. Para obter mais informações, consulte Directory buckets.

  • Se os objetos no manifesto estiverem em um bucket com versionamento, especificar os IDs de versão dos objetos instruirá a funcionalidade Operações em Lote a realizar a operação em uma versão específica. Se nenhum ID de versão for especificado, a funcionalidade Operações em Lote realizará a operação na versão mais recente dos objetos. Se o manifesto incluir um campo de ID de versão, você deverá fornecer um ID de versão para todos os objetos no manifesto.

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

Priority

Use prioridades de trabalho para indicar a prioridade relativa desse trabalho em relação a outros em execução na conta. Um número maior indica uma prioridade mais alta.

As prioridades de trabalho só têm significado em relação às prioridades definidas para outros trabalhos na mesma conta e região. Você pode escolher qualquer sistema de numeração adequado para você. Por exemplo, talvez você queira atribuir a todos os trabalhos Restaurar (RestoreObject) uma prioridade 1, a todos os trabalhos de Copiar (CopyObject) uma prioridade 2 e a todos os trabalhos de Substituir listas de controle de acesso (ACLs) (PutObjectAcl) uma prioridade 3.

A funcionalidade Operações em Lote do S3 prioriza trabalhos em ordem numérica, mas o rigor dessa ordem não é garantido. Por isso, não use prioridades de trabalho para garantir que um trabalho comece ou termine antes de outro. Caso precise garantir uma ordem rigorosa, aguarde a conclusão de uma tarefa para iniciar a próxima.

RoleArn

Especifique uma função do AWS Identity and Access Management (IAM) para executar o trabalho. A função do IAM usada deve ter permissões suficientes para realizar a operação especificada no trabalho. Por exemplo, para executar um trabalho CopyObject, o perfil do IAM deve ter a permissão s3:GetObject para o bucket de origem e a permissão s3:PutObject para o bucket de destino. A função também precisa de permissões para ler o manifesto e gravar o relatório de conclusão do trabalho.

Para obter mais informações sobre funções do IAM, consulte Funções do IAM no Manual do usuário do IAM.

Para obter mais informações sobre as permissões do Amazon S3, consulte Ações de política do Amazon S3.

nota

Os trabalhos de Operações em Lote que realizam ações em buckets de diretório exigem permissões específicas. Para obter mais informações, consulte AWS Identity and Access Management (IAM) for S3 Express One Zone.

Relatório

Especifique se deseja que as operações em lote do S3 gerem um relatório de conclusão. Caso solicite um relatório de conclusão do trabalho, você deve fornecer os parâmetros para o relatório neste elemento. As informações necessárias incluem o seguinte]:

  • O bucket no qual você deseja armazenar o relatório.

    nota

    O relatório deve ser armazenado em um bucket de uso geral. A funcionalidade Operações em Lote não pode salvar relatórios em buckets de diretório. Para obter mais informações, consulte Directory buckets.

  • O formato do relatório

  • Se você deseja que o relatório inclua os detalhes de todas as tarefas ou apenas das tarefas que apresentaram falha.

  • Uma string de prefixo opcional.

Tags (opcional)

Você pode rotular e controlar o acesso aos trabalhos de operações em lote do S3 adicionando tags. Você pode usar etiquetas para identificar quem é responsável por um trabalho de Operações em Lote ou para controlar como os usuários interagem com os trabalhos de Operações em Lote. A presença de marcações de trabalho pode conceder ou limitar a capacidade do usuário de cancelar um trabalho, ativar um trabalho no estado de confirmação ou alterar o nível de prioridade de um trabalho. Por exemplo, você pode conceder a um usuário permissão para invocar a operação CreateJob, desde que o trabalho seja criado com a etiqueta "Department=Finance".

Você pode criar trabalhos com tags anexadas a eles e pode adicionar tags a trabalhos depois de criá-los.

Para ter mais informações, consulte Controlar o acesso e rotular trabalhos usando tags.

Description (opcional)

Para rastrear e monitorar seu trabalho, você também pode fornecer uma descrição de até 256 caracteres. O Amazon S3 inclui essa descrição sempre que retorna informações sobre um trabalho ou exibe detalhes do trabalho no console do Amazon S3. É possível classificar e filtrar os trabalhos com facilidade de acordo com as descrições atribuídas. As descrições não precisam ser exclusivas, de maneira que você possa usar descrições como categorias (por exemplo, "Tarefas de cópia de log semanais") para ajudar a rastrear grupos de tarefas semelhantes.

Especificar um manifesto

Um manifesto é um objeto do Amazon S3 que contém as chaves de objeto em que você deseja que o Amazon S3 atue. Você pode fornecer um manifesto de uma das seguintes maneiras:

  • Crie um arquivo de manifesto manualmente.

  • Use um manifesto existente.

  • Instruir a funcionalidade Operações em Lote para que gere um manifesto automaticamente com base nos critérios de filtro de objetos especificados ao criar um trabalho. Essa opção está disponível para trabalhos de replicação em lote criados no console do Amazon S3 ou para qualquer tipo de trabalho criado usando a AWS CLI, SDKs da AWS ou a API REST do Amazon S3.

nota

Independentemente de como você especifica o manifesto, a lista em si deve ser armazenada em um bucket de uso geral. A funcionalidade Operações em Lote não pode importar manifestos existentes nem salvar manifestos gerados em buckets de diretório. No entanto, os objetos descritos no manifesto podem ser armazenados em buckets de diretório. Para obter mais informações, consulte Directory buckets.

Criar um arquivo de manifesto

Para criar um arquivo de manifesto manualmente, especifique a chave de objeto do manifesto, a ETag (etiqueta de entidade) e o ID da versão opcional em uma lista em formato CSV. O conteúdo do manifesto deve estar codificado em URL.

Por padrão, o Amazon S3 usa criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) automaticamente para criptografar um manifesto carregado para um bucket do Amazon S3. Os manifestos que usam a criptografia no servidor com chaves fornecidas pelo cliente (SSE-C) não são compatíveis. Manifestos que usam criptografia no lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) só são compatíveis quando usam relatórios de inventário no formato CSV.

O manifesto deve conter o nome do bucket, a chave de objeto e, opcionalmente, a versão de cada objeto. Qualquer outro campo no manifesto não é usado pelas operações em lote do S3.

nota

Se os objetos no manifesto estiverem em um bucket com versionamento, especificar os IDs de versão dos objetos instruirá a funcionalidade Operações em Lote a realizar a operação em uma versão específica. Se nenhum ID de versão for especificado, a funcionalidade Operações em Lote realizará a operação na versão mais recente dos objetos. Se o manifesto incluir um campo de ID de versão, você deverá fornecer um ID de versão para todos os objetos no manifesto.

Veja a seguir um exemplo de manifesto no formato CSV sem os IDs de versão.

Examplebucket,objectkey1 Examplebucket,objectkey2 Examplebucket,objectkey3 Examplebucket,photos/jpgs/objectkey4 Examplebucket,photos/jpgs/newjersey/objectkey5 Examplebucket,object%20key%20with%20spaces

Veja a seguir um exemplo de manifesto em formato CSV que inclui IDs de versão.

Examplebucket,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p Examplebucket,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF Examplebucket,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI Examplebucket,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4 Examplebucket,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs Examplebucket,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w

Especificar um arquivo de manifesto existente

É possível especificar um arquivo de manifesto na solicitação de criação de um trabalho usando um dos seguintes formatos:

  • Relatório da funcionalidade Inventário Amazon S3: deve ser um relatório da funcionalidade Inventário Amazon S3 em formato CSV. É necessário especificar o arquivo manifest.json associado ao relatório de inventário. Para obter mais informações sobre relatórios de inventário, consulte Inventário do Amazon S3. Se o relatório de inventário incluir IDs de versões, o recurso Operações em lote do S3 operará nas versões especificadas do objeto.

    nota
    • A funcionalidade Operações em Lote do S3 oferece suporte a relatórios de inventário em CSV criptografados com SSE-KMS.

    • Se você enviar um manifesto de relatório de inventário criptografado com SSE-KMS, a política do IAM deverá incluir as permissões "kms:Decrypt" e "kms:GenerateDataKey" para o objeto manifest.json e todos os arquivos de dados CSV associados.

  • Arquivo CSV: cada linha no arquivo deve incluir o nome do bucket, a chave do objeto e, opcionalmente, a versão do objeto. As chaves de objeto devem ser codificadas em URL conforme mostrado nos exemplos a seguir. O manifesto deve incluir ou omitir IDs de versão para todos os objetos. Para obter mais informações sobre o formato de manifesto CSV, consulte JobManifestSpec na Referência da API do Amazon Simple Storage Service.

    nota

    A funcionalidade Operações em Lote do S3 não oferece suporte a arquivos de manifesto em CSV criptografados com SSE-KMS.

Importante

Ao usar um manifesto criado manualmente e um bucket com versionamento, recomendamos especificar os IDs de versão dos objetos. Quando você cria um trabalho, o recurso Operações em lote do S3 analisa todo o manifesto antes de executar o trabalho. No entanto, ele não tira snapshots do estado do bucket.

Como os manifestos podem conter bilhões de objetos, os trabalhos podem levar muito tempo para serem executados, o que pode afetar a versão de um objeto em que o trabalho atua. Suponha que você substitua um objeto por uma nova versão enquanto um trabalho estiver em execução e não especifique o ID de versão desse objeto. Nesse caso, o Amazon S3 realizará a operação na versão mais recente do objeto, não na versão que existia quando você criou o trabalho. A única maneira de evitar esse comportamento é especificar o ID de versão do objeto listado no manifesto.

Gerar um manifesto automaticamente

Você pode instruir o Amazon S3 a gerar um manifesto automaticamente com base nos critérios de filtro de objetos especificados ao criar um trabalho. Essa opção está disponível para trabalhos de replicação em lote criados no console do Amazon S3 ou para qualquer tipo de trabalho criado usando a AWS CLI, SDKs da AWS ou a API REST do Amazon S3. Para obter mais informações sobre replicação em lote, consulte Replicar objetos existentes com o S3 Batch Replication.

Para gerar um manifesto automaticamente, especifique os seguintes elementos como parte da solicitação de criação de trabalho:

  • Informações sobre o bucket que contém seus objetos de origem, incluindo o proprietário do bucket e o nome do recurso da Amazon (ARN).

  • Informações sobre a saída do manifesto, incluindo um sinalizador para criar um arquivo de manifesto, o proprietário do bucket de saída, o ARN, o prefixo, o formato do arquivo e o tipo de criptografia.

  • Critérios opcionais para filtrar objetos por data de criação, nome da chave, tamanho, classe de armazenamento e etiquetas.

Critérios de filtro de objetos

Para filtrar a lista de objetos a serem incluídos em um manifesto gerado automaticamente, você pode especificar os critérios a seguir. Para obter mais informações, consulte JobManifestGeneratorFilter na Referência da API do Amazon S3.

CreatedAfter

Se fornecido, o manifesto gerado incluirá somente objetos de bucket de origem que foram criados após esse período.

CreatedBefore

Se fornecido, o manifesto gerado incluirá somente objetos de bucket de origem que foram criados antes desse período.

EligibleForReplication

Se fornecido, o manifesto gerado só incluirá os objetos que estiverem qualificados para replicação de acordo com a configuração de replicação no bucket de origem.

KeyNameConstraint

Se fornecido, o manifesto gerado incluirá somente os objetos do bucket de origem cujas chaves de objeto correspondam às restrições de string especificadas para MatchAnySubstring, MatchAnyPrefix e MatchAnySuffix.

MatchAnySubstring: se fornecido, o manifesto gerado incluirá objetos se a string especificada aparecer em qualquer lugar dentro da string da chave do objeto.

MatchAnyPrefix: se fornecido, o manifesto gerado incluirá objetos se a string especificada aparecer no início da string da chave do objeto.

MatchAnySuffix: se fornecido, o manifesto gerado incluirá objetos se a string especificada aparecer no final da string da chave do objeto.

MatchAnyStorageClass

Se fornecido, o manifesto gerado incluirá somente os objetos do bucket de origem que estiverem armazenados com a classe de armazenamento especificada.

ObjectReplicationStatuses

Se fornecido, o manifesto gerado só incluirá os objetos do bucket de origem que tenham um dos status de replicação especificados.

ObjectSizeGreaterThanBytes

Se fornecido, o manifesto gerado só incluirá os objetos do bucket de origem cujo tamanho de arquivo for maior que o número especificado de bytes.

ObjectSizeLessThanBytes

Se fornecido, o manifesto gerado só incluirá os objetos do bucket de origem cujo tamanho de arquivo for menor que o número especificado de bytes.

nota

Não é possível clonar a maioria dos trabalhos que têm manifestos gerados automaticamente. Os trabalhos de replicação em lote podem ser clonados, exceto quando usam os critérios de filtro de manifesto KeyNameConstraint, MatchAnyStorageClass, ObjectSizeGreaterThanBytes ou ObjectSizeLessThanBytes.

A sintaxe para especificar os critérios do manifesto varia de acordo com o método usado para criar o trabalho. Para ver exemplos, consulte Criar uma tarefa.

Criar uma tarefa

Você pode criar trabalhos de Operações em Lote do S3 usando o console do Amazon S3, a AWS CLI, AWS SDKs ou a API REST do Amazon S3.

Para obter mais informações sobre como criar uma solicitação de trabalho, consulte Elementos da solicitação de trabalho de Operações em lote.

Pré-requisitos

Antes de criar um trabalho de Operações em Lote, confirme se você configurou as permissões relevantes. Para ter mais informações, consulte Conceder permissões para operações em lote do Amazon S3.

Para criar um trabalho em lote
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Selecione Batch Operations (Operações em lote) no painel de navegação do console do Amazon S3.

  3. Selecione Create job (Criar trabalho).

  4. Selecione a Region (região) onde você deseja criar o trabalho.

  5. Em Formato do manifesto, escolha o tipo de objeto do manifesto a ser usado.

    • Se você selecionar S3 inventory report (Relatório de inventário do S3), insira o caminho para o objeto manifest.json gerado pelo Amazon S3 como parte do relatório de inventário em formato CSV e, opcionalmente, o ID de versão do objeto do manifesto a ser usado, se não for a mais recente.

    • Se você selecionar CSV, insira o caminho para o objeto do manifesto formatado em CSV. O objeto do manifesto deve seguir o formato descrito no console. Opcionalmente, inclua o ID de versão do objeto do manifesto que deseja usar, se não for a mais recente.

    nota

    O console do Amazon S3 oferece suporte à geração automática de manifestos somente para trabalhos de replicação em lote. Para todos os outros tipos de trabalho, se você quiser que o Amazon S3 gere um manifesto automaticamente com base nos critérios de filtro especificados, deverá configurar o trabalho usando a AWS CLI, AWS SDKs ou a API REST do Amazon S3.

  6. Escolha Próximo.

  7. Em Operation (Operação), selecione a operação a ser executada em todos os objetos no manifesto. Preencha as informações da operação escolhida e, depois, selecione Next (Próximo).

  8. Preencha as informações para Configure additional options (Configurar opções adicionais) e, depois, selecione Next (Próximo).

  9. Em Review (Revisão), verifique as configurações. Se precisar fazer alterações, escolha Previous (Anterior). Caso contrário, selecione Create job (Criar trabalho).

Specify manifest

O exemplo a seguir mostra como criar um trabalho S3PutObjectTagging de Operações em Lote do S3 que atua em objetos listados em um arquivo de manifesto existente.

Como criar uma tarefa S3PutObjectTagging de operações em lote
  1. Use os comandos a seguir para criar um perfil do AWS Identity and Access Management (IAM), depois crie uma política do IAM para atribuir as permissões relevantes. O perfil e a política a seguir concedem permissão ao Amazon S3 para adicionar etiquetas de objeto, que serão necessárias quando você criar o trabalho em uma etapa posterior.

    1. Use o exemplo de comando a seguir para criar um perfil do IAM para usar a funcionalidade Operações em Lote. Para usar esse exemplo de comando, substitua S3BatchJobRole pelo nome que você deseja dar ao perfil.

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      Registre o nome de recurso da Amazon (ARN) da função. Você precisará do ARN ao criar trabalhos.

    2. Use o exemplo de comando a seguir para criar uma política do IAM com as permissões necessárias e anexe-a ao perfil do IAM que você criou na etapa anterior. Para obter mais informações sobre as permissões necessárias, consulte Conceder permissões para operações em lote do Amazon S3.

      nota

      Os trabalhos de Operações em Lote que realizam ações em buckets de diretório exigem permissões específicas. Para obter mais informações, consulte AWS Identity and Access Management (IAM) for S3 Express One Zone.

      Para usar esse exemplo de comando, substitua user input placeholders da seguinte forma:

      • Substitua S3BatchJobRole pelo nome do seu perfil do IAM. Garanta que esse nome corresponda ao nome que você usou anteriormente.

      • Substitua PutObjectTaggingBatchJobPolicy pelo nome que você deseja atribuir à política do IAM.

      • Substitua DOC-EXAMPLE-DESTINATION-BUCKET pelo nome do bucket que contém os objetos aos quais você deseja aplicar etiquetas.

      • Substitua DOC-EXAMPLE-MANIFEST-BUCKET pelo nome do bucket que contém o manifesto.

      • Substitua DOC-EXAMPLE-REPORT-BUCKET pelo nome do bucket ao qual você deseja que o relatório de conclusão seja entregue.

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name PutObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-BUCKET/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET/*" ] } ] }'
  2. Use o exemplo de comando a seguir para criar um trabalho S3PutObjectTagging.

    O arquivo manifest.csv fornece uma lista de buckets e valores de chave de objeto. O trabalho aplica as etiquetas específicas aos objetos identificados no manifesto. O ETag é o ETag do objeto manifest.csv, que você pode obter no console do Amazon S3. Essa solicitação especifica o parâmetro no-confirmation-required para que você possa executar o trabalho sem precisar confirmá-lo com o comando update-job-status. Para obter mais informações, consulte create-job na Referência de comandos da AWS CLI.

    Para usar esse exemplo de comando, substitua os user input placeholders por suas próprias informações. Substitua IAM-role pelo ARN do perfil do IAM que você criou anteriormente.

    aws s3control create-job \ --region us-west-2 \ --account-id acct-id \ --operation '{"S3PutObjectTagging": { "TagSet": [{"Key":"keyOne", "Value":"ValueOne"}] }}' \ --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::my_manifests/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \ --report '{"Bucket":"arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET","Prefix":"final-reports", "Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ --priority 42 \ --role-arn IAM-role \ --client-request-token $(uuidgen) \ --description "job description" \ --no-confirmation-required

    Em resposta, o Amazon S3 retorna um ID de trabalho (por exemplo, 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). Você precisará do ID do trabalho para identificar, monitorar e modificar o trabalho.

Generate manifest

O exemplo a seguir mostra como criar um trabalho S3DeleteObjectTagging de Operações em Lote do S3 que gera automaticamente um manifesto com base em critérios de filtro de objetos. Esses critérios incluem a data de criação, o nome da chave, o tamanho, a classe de armazenamento e etiquetas.

Como criar uma tarefa S3DeleteObjectTagging de operações em lote
  1. Use os comandos a seguir para criar um perfil do AWS Identity and Access Management (IAM), depois crie uma política do IAM para atribuir as permissões. O perfil e a política a seguir concedem permissão ao Amazon S3 para excluir etiquetas de objeto, que serão necessárias quando você criar o trabalho em uma etapa posterior.

    1. Use o exemplo de comando a seguir para criar um perfil do IAM para usar a funcionalidade Operações em Lote. Para usar esse exemplo de comando, substitua S3BatchJobRole pelo nome que você deseja dar ao perfil.

      aws iam create-role \ --role-name S3BatchJobRole \ --assume-role-policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }'

      Registre o nome de recurso da Amazon (ARN) da função. Você precisará do ARN ao criar trabalhos.

    2. Use o exemplo de comando a seguir para criar uma política do IAM com as permissões necessárias e anexe-a ao perfil do IAM que você criou na etapa anterior. Para obter mais informações sobre as permissões necessárias, consulte Conceder permissões para operações em lote do Amazon S3.

      nota

      Os trabalhos de Operações em Lote que realizam ações em buckets de diretório exigem permissões específicas. Para obter mais informações, consulte AWS Identity and Access Management (IAM) for S3 Express One Zone.

      Para usar esse exemplo de comando, substitua user input placeholders da seguinte forma:

      • Substitua S3BatchJobRole pelo nome do seu perfil do IAM. Garanta que esse nome corresponda ao nome que você usou anteriormente.

      • Substitua DeleteObjectTaggingBatchJobPolicy pelo nome que você deseja atribuir à política do IAM.

      • Substitua DOC-EXAMPLE-DESTINATION-BUCKET pelo nome do bucket que contém os objetos aos quais você deseja aplicar etiquetas.

      • Substitua DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET pelo nome do bucket onde deseja salvar o manifesto.

      • Substitua DOC-EXAMPLE-REPORT-BUCKET pelo nome do bucket ao qual você deseja que o relatório de conclusão seja entregue.

      aws iam put-role-policy \ --role-name S3BatchJobRole \ --policy-name DeleteObjectTaggingBatchJobPolicy \ --policy-document '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/*" }, { "Effect":"Allow", "Action":[ "s3:PutInventoryConfiguration" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET/*" ] } ] }'

  2. Use o exemplo de comando a seguir para criar o trabalho S3DeleteObjectTagging.

    Neste exemplo, os valores na seção --report especificam o bucket, o prefixo, o formato e o escopo do relatório de trabalho que será gerado. A seção --manifest -generator especifica informações sobre o bucket de origem que contém os objetos sobre os quais o trabalho atuará, informações sobre a lista de saída do manifesto que será gerada para o trabalho e critérios de filtro para restringir o escopo de objetos a serem incluídos no manifesto por data de criação, restrições de nome, tamanho e classe de armazenamento. O comando também especifica a prioridade do trabalho, o perfil do IAM e a Região da AWS.

    Para obter mais informações, consulte create-job na Referência de comandos da AWS CLI.

    Para usar esse exemplo de comando, substitua os user input placeholders por suas próprias informações. Substitua IAM-role pelo ARN do perfil do IAM que você criou anteriormente.

    aws s3control create-job \ --account-id 012345678901 \ --operation '{ "S3DeleteObjectTagging": {} }' \ --report '{ "Bucket":"arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET", "Prefix":"reports", "Format":"Report_CSV_20180820", "Enabled":true, "ReportScope":"AllTasks" }' \ --manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "012345678901", "SourceBucket": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET", "EnableManifestOutput": true, "ManifestOutputLocation": { "ExpectedManifestBucketOwner": "012345678901", "Bucket": "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET", "ManifestPrefix": "prefix", "ManifestFormat": "S3InventoryReport_CSV_20211130" }, "Filter": { "CreatedAfter": "2023-09-01", "CreatedBefore": "2023-10-01", "KeyNameConstraint": { "MatchAnyPrefix": [ "prefix" ], "MatchAnySuffix": [ "suffix" ] }, "ObjectSizeGreaterThanBytes": 100, "ObjectSizeLessThanBytes": 200, "MatchAnyStorageClass": [ "STANDARD", "STANDARD_IA" ] } } }' \ --priority 2 \ --role-arn IAM-role \ --region us-east-1

    Em resposta, o Amazon S3 retorna um ID de trabalho (por exemplo, 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c). Você precisará desse ID de trabalho para identificar, monitorar e modificar o trabalho.

Specify manifest

O exemplo a seguir mostra como criar um trabalho S3PutObjectTagging de Operações em Lote do S3 que atua em objetos listados em um arquivo de manifesto existente. Para usar esse exemplo, substitua os user input placeholders por suas próprias informações.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.*; import java.util.UUID; import java.util.ArrayList; import static com.amazonaws.regions.Regions.US_WEST_2; public class CreateJob { public static void main(String[] args) { String accountId = "Account ID"; String iamRoleArn = "IAM Role ARN"; String reportBucketName = "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET"; String uuid = UUID.randomUUID().toString(); ArrayList tagSet = new ArrayList<S3Tag>(); tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne")); try { JobOperation jobOperation = new JobOperation() .withS3PutObjectTagging(new S3SetObjectTaggingOperation() .withTagSet(tagSet) ); JobManifest manifest = new JobManifest() .withSpec(new JobManifestSpec() .withFormat("S3BatchOperations_CSV_20180820") .withFields(new String[]{ "Bucket", "Key" })) .withLocation(new JobManifestLocation() .withObjectArn("arn:aws:s3:::my_manifests/manifest.csv") .withETag("60e460c9d1046e73f7dde5043ac3ae85")); JobReport jobReport = new JobReport() .withBucket(reportBucketName) .withPrefix("reports") .withFormat("Report_CSV_20180820") .withEnabled(true) .withReportScope("AllTasks"); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); s3ControlClient.createJob(new CreateJobRequest() .withAccountId(accountId) .withOperation(jobOperation) .withManifest(manifest) .withReport(jobReport) .withPriority(42) .withRoleArn(iamRoleArn) .withClientRequestToken(uuid) .withDescription("job description") .withConfirmationRequired(false) ); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
Generate manifest

O exemplo a seguir mostra como criar um trabalho s3PutObjectCopy de Operações em Lote do S3 que gera automaticamente um manifesto com base em critérios de filtro de objetos, incluindo a data de criação, o nome da chave e o tamanho. Para usar esse exemplo, substitua os user input placeholders por suas próprias informações.

package aws.example.s3control; import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3control.AWSS3Control; import com.amazonaws.services.s3control.AWSS3ControlClient; import com.amazonaws.services.s3control.model.CreateJobRequest; import com.amazonaws.services.s3control.model.CreateJobResult; import com.amazonaws.services.s3control.model.JobManifestGenerator; import com.amazonaws.services.s3control.model.JobManifestGeneratorFilter; import com.amazonaws.services.s3control.model.JobOperation; import com.amazonaws.services.s3control.model.JobReport; import com.amazonaws.services.s3control.model.KeyNameConstraint; import com.amazonaws.services.s3control.model.S3JobManifestGenerator; import com.amazonaws.services.s3control.model.S3ManifestOutputLocation; import com.amazonaws.services.s3control.model.S3SetObjectTaggingOperation; import com.amazonaws.services.s3control.model.S3Tag; import java.time.Instant; import java.util.Date; import java.util.UUID; import java.util.ArrayList; import static com.amazonaws.regions.Regions.US_WEST_2; public class test { public static void main(String[] args) { String accountId = "012345678901"; String iamRoleArn = "arn:aws:iam::012345678901:role/ROLE"; String sourceBucketName = "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET"; String reportBucketName = "arn:aws:s3:::DOC-EXAMPLE-REPORT-BUCKET"; String manifestOutputBucketName = "arn:aws:s3:::DOC-EXAMPLE-MANIFEST-OUTPUT-BUCKET"; String uuid = UUID.randomUUID().toString(); long minimumObjectSize = 100L; ArrayList<S3Tag> tagSet = new ArrayList<>(); tagSet.add(new S3Tag().withKey("keyOne").withValue("ValueOne")); ArrayList<String> prefixes = new ArrayList<>(); prefixes.add("s3KeyStartsWith"); try { JobOperation jobOperation = new JobOperation() .withS3PutObjectTagging(new S3SetObjectTaggingOperation() .withTagSet(tagSet) ); S3ManifestOutputLocation manifestOutputLocation = new S3ManifestOutputLocation() .withBucket(manifestOutputBucketName) .withManifestPrefix("manifests") .withExpectedManifestBucketOwner(accountId) .withManifestFormat("S3InventoryReport_CSV_20211130"); JobManifestGeneratorFilter jobManifestGeneratorFilter = new JobManifestGeneratorFilter() .withEligibleForReplication(true) .withKeyNameConstraint( new KeyNameConstraint() .withMatchAnyPrefix(prefixes)) .withCreatedBefore(Date.from(Instant.now())) .withObjectSizeGreaterThanBytes(minimumObjectSize); S3JobManifestGenerator s3JobManifestGenerator = new S3JobManifestGenerator() .withEnableManifestOutput(true) .withManifestOutputLocation(manifestOutputLocation) .withFilter(jobManifestGeneratorFilter) .withSourceBucket(sourceBucketName); JobManifestGenerator jobManifestGenerator = new JobManifestGenerator() .withS3JobManifestGenerator(s3JobManifestGenerator); JobReport jobReport = new JobReport() .withBucket(reportBucketName) .withPrefix("reports") .withFormat("Report_CSV_20180820") .withEnabled(true) .withReportScope("AllTasks"); AWSS3Control s3ControlClient = AWSS3ControlClient.builder() .withCredentials(new ProfileCredentialsProvider()) .withRegion(US_WEST_2) .build(); CreateJobResult createJobResult = s3ControlClient.createJob(new CreateJobRequest() .withAccountId(accountId) .withOperation(jobOperation) .withManifestGenerator(jobManifestGenerator) .withReport(jobReport) .withPriority(42) .withRoleArn(iamRoleArn) .withClientRequestToken(uuid) .withDescription("job description") .withConfirmationRequired(true) ); System.out.println("Created job " + createJobResult.getJobId()); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

Você pode usar a API REST para criar um trabalho do Batch Operations. Para obter mais informações, consulte CreateJob na Referência da API do Amazon Simple Storage Service.

Respostas do trabalho

Se a solicitação CreateJob for bem-sucedida, o Amazon S3 retornará um ID de trabalho. O ID de trabalho é um identificador exclusivo gerado pelo Amazon S3 automaticamente para que você possa identificar as operações em lote e monitorar o status do trabalho.

Quando você cria um trabalho pela AWS CLI, por AWS SDKs ou pela API REST, é possível definir a funcionalidade Operações em Lote do S3 para que comece a processar o trabalho automaticamente. O trabalho é executado assim que fica pronto em vez de aguardar o processamento de trabalhos de prioridade mais alta.

Ao criar um trabalho por meio do console do Amazon S3, você deve examinar os detalhes e confirmar se deseja executá-lo antes que a funcionalidade Operações em Lote comece a processá-lo. Se uma tarefa permanecer no estado suspenso por mais de 30 dias, ela apresentará falha.