

# Executar operações de objetos em massa com o Operações em Lote
<a name="batch-ops"></a>

Você pode usar operações em lote do S3 para executar operações em lote de grande escala em objetos do Amazon S3. As operações em lote do S3 podem executar uma única operação em listas de objetos do Amazon S3 especificadas. Um único trabalho pode realizar uma operação especificada em bilhões de objetos contendo exabytes de dados. O Amazon S3 monitora o progresso, envia notificações e armazena um relatório de conclusão detalhado de todas as ações, fornecendo uma experiência totalmente gerenciada, auditável e sem servidor. É possível usar o recurso Operações em Lote do S3 por meio do console do Amazon S3, da AWS Command Line Interface (AWS CLI), de SDKs da AWS ou da API REST do Amazon S3.

Use o recurso Operações em Lote do S3 para copiar objetos, atualizar a criptografia de objetos do lado do servidor e definir tags ou listas de controle de acesso (ACLs). Também é possível iniciar restaurações de objetos no S3 Glacier Flexible Retrieval ou invocar uma função do AWS Lambda para executar ações personalizadas usando seus objetos. É possível executar essas operações em uma lista personalizada de objetos ou usar um relatório do Amazon S3 Inventory para facilitar a geração de listas de objetos. O recurso Operações em Lote do Amazon S3 usa as mesmas operações da API do Amazon S3 que você já utiliza com o Amazon S3. 

**nota**  
Para obter mais informações sobre o uso da classe de armazenamento Amazon S3 Express One Zone com buckets de diretório, consulte [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) e [Trabalhar com buckets de diretório](directory-buckets-overview.md). Para obter mais informações sobre o uso da funcionalidade Operações em Lote com a classe S3 Express One Zone e buckets de diretório, consulte [Usar a funcionalidade Operações em Lote com buckets de diretório](directory-buckets-objects-Batch-Ops.md).

## Conceitos básicos sobre operações em lote do S3
<a name="batch-ops-basics"></a>

Você pode usar operações em lote do S3 para executar operações em lote de grande escala em objetos do Amazon S3. As operações em lote do S3 podem executar uma única operação ou ação em listas de objetos do Amazon S3 que você especificar. 

### Terminologia
<a name="batch-ops-terminology"></a>

Esta seção usa os termos *manifestos*, *trabalhos*, *operações* e *tarefas*, os quais estão definidos abaixo:

**Manifesto**  
Um manifesto é um objeto do Amazon S3 que contém as chaves de objeto em que você deseja que o Amazon S3 atue. Se quiser criar um trabalho de operações em lote, você deverá fornecer um manifesto. O manifesto gerado pelo usuário deve conter o nome do bucket, a chave de objeto e, opcionalmente, a versão de cada objeto. Se você fornecer um manifesto gerado pelo usuário, ele deverá estar na forma de um relatório da funcionalidade Inventário Amazon S3 ou um arquivo CSV.   
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 operações em lote criados com o console do Amazon S3 ou para qualquer tipo de trabalho criado com a AWS Command Line Interface (AWS CLI), SDKs da AWS ou a API REST do Amazon S3. 

**Trabalho**  
Um trabalho é a unidade básica de trabalho para operações em lote do S3. Uma tarefa contém todas as informações necessárias para executar a operação especificada nos objetos listados no manifesto. Depois que você tiver fornecido essas informações e solicitado o início do trabalho, ele executará a operação para cada objeto no manifesto. 

**Operação**  
A operação é o tipo de [ação](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html) da API, como copiar objetos, que você deseja que o trabalho de operações em lote execute. Cada trabalho executa um único tipo de operação em todos os objetos especificados no manifesto.

**Tarefa**  
Uma tarefa é a unidade de execução para um trabalho. Uma tarefa representa uma única chamada para uma operação de API do AWS Lambda ou do Amazon S3 a fim de executar a operação do trabalho em um único objeto. Ao longo da vida útil de um trabalho, as operações em lote do S3 criam uma tarefa para cada objeto especificado no manifesto.

### Como funciona um trabalho de operações em lote do S3
<a name="batch-ops-basics-how-it-works"></a>

Um trabalho é a unidade básica de trabalho para operações em lote do S3. Uma tarefa contém todas as informações necessárias para executar a operação especificada em uma lista de objetos. Para criar um trabalho, dê uma lista de objetos às operações em lote do S3 e especifique a ação a ser realizada neles. Para obter informações sobre as operações compatíveis com o S3 Batch Operations, consulte [Operações suportadas pelo S3 Batch Operations](batch-ops-operations.md).

Um trabalho em lote realiza a operação especificada em cada objeto incluído em seu *manifesto*. Um manifesto lista os objetos que você deseja que um trabalho em lote processe e ele é armazenado como um objeto em um bucket. Você pode usar um relatório de [Catalogar e analisar seus dados com o Inventário S3](storage-inventory.md) formatado em CSV como um manifesto, o que facilita a criação de grandes listas de objetos localizados em um bucket. Também é possível especificar um manifesto em um formato CSV simples que permite realizar operações em lotem em uma lista personalizada de objetos contidos em um único bucket. 

Depois de criar um trabalho, o Amazon S3 processará a lista de objetos no manifesto e executará a operação especificada em cada objeto. Enquanto um trabalho está em execução, é possível monitorar o andamento de maneira programática ou por meio do console do Amazon S3. Também é possível configurar uma tarefa para gerar um relatório de conclusão quando ele termina. O relatório de conclusão descreve os resultados de cada tarefa executada pelo trabalho. Para obter mais informações sobre como monitorar trabalhos, consulte [Gerenciar trabalhos de operações em lote do S3](batch-ops-managing-jobs.md). 

Há custos associados ao recurso Operações em Lote do S3. Você recebe cobrança pela criação de trabalhos no recurso Operações em Lote, inclusive trabalhos que são cancelados antes da conclusão. Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

Por padrão, os trabalhos do recurso Operações em Lote do S3 podem processar até 4 bilhões de objetos para todas as operações. Especificamente os trabalhos de cópia, marcação de objetos, bloqueio de objetos, invocação de uma função do AWS Lambda e replicação em lote podem comportar até 20 bilhões de objetos. Há um limite de seis trabalhos ativos de replicação em lote por conta da AWS. Para começar a criar um trabalho de operações em lote, consulte [Criar um trabalho de operações em lote do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html).

## Tutorial Operações em lote do S3
<a name="batch-ops-basics-tutorial"></a>

Os tutoriais a seguir apresentam procedimentos completos para algumas tarefas de operações em lote.
+ [Tutorial: vídeos de transcodificação em lote com o Operações em Lote do S3](tutorial-s3-batchops-lambda-mediaconvert-video.md)

# Conceder permissões para operações em lote
<a name="batch-ops-iam-role-policies"></a>

Antes de criar e executar trabalhos do S3 Batch Operations, você deve conceder as permissões necessárias. Para criar um trabalho do Amazon S3 Batch Operations, a permissão de usuário `s3:CreateJob` é necessária. A mesma entidade que cria o trabalho também deve ter a permissão `iam:PassRole` para passar o perfil do AWS Identity and Access Management (IAM) especificado para o trabalho ao Operações em Lote.

As seções a seguir fornecem informações sobre como criar uma função do IAM e anexar políticas. Para ter informações gerais sobre como especificar recursos do IAM, consulte [Elementos de política JSON do IAM: Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html) no *Guia do usuário do IAM*.

**Topics**
+ [

## Criar uma função do IAM das operações em lote do S3
](#batch-ops-iam-role-policies-create)
+ [

## Anexar políticas de permissões
](#batch-ops-iam-role-policies-perm)

## Criar uma função do IAM das operações em lote do S3
<a name="batch-ops-iam-role-policies-create"></a>

O Amazon S3 deve ter permissão para executar o S3 Batch Operations em seu nome. Conceda essas permissões por meio de uma função do AWS Identity and Access Management (IAM). Ao criar um trabalho do Operações em Lote do S3, especifique o perfil do IAM que deseja que o trabalho use. Pode ser um perfil do IAM existente. Ou, se você usar o console do Amazon S3 para criar o trabalho, pode ser um perfil do IAM criado pelo Amazon S3 em seu nome.

Se você optar por permitir que o Amazon S3 crie o perfil do IAM em seu nome, ele automaticamente criará e anexará políticas de confiança e de permissões a esse perfil. A política de confiança permite que a entidade principal de serviço (`batchoperations.s3.amazonaws.com`) do Operações em Lote do S3 assuma o perfil. A política de permissões autoriza todas as ações necessárias para executar o trabalho, com base nas configurações que você especifica para o trabalho. Por exemplo, se você configurar um trabalho para copiar objetos de um bucket para outro na sua Conta da AWS, a política de permissões autorizará determinadas ações, como `s3:GetObject` e `s3:PutObject`. É possível analisar as políticas de confiança e de permissões para o perfil antes de enviar o trabalho. Essa opção estará disponível somente se você usar o console do Amazon S3 para criar um trabalho e configurá-lo para usar uma lista de objetos gerada pelo S3 que use filtros ou se baseie em uma configuração de replicação. Após o envio do trabalho, o perfil do IAM permanecerá em sua conta. É possível usá-lo novamente para trabalhos subsequentes que executem a mesma operação ou excluí-lo quando a execução da tarefa for concluída.

Se preferir criar o perfil do IAM manualmente, os exemplos de política nesta seção podem ajudar a criá-lo. Para ter mais informações sobre como criar e usar perfil do IAM, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Guia do usuário do IAM*. Para ter informações sobre as permissões referentes a operações de API do S3 por tipo de recurso do S3, consulte [Permissões obrigatórias para operações de API do Amazon S3](using-with-s3-policy-actions.md). Para ver exemplos adicionais, consulte [Controlar permissões para o Operações em Lote usando tags de trabalho](batch-ops-job-tags-examples.md) e [Copiar objetos usando o S3 Batch Operations](batch-ops-examples-copy.md).

Em suas políticas do IAM, você também pode usar chaves de condição para filtrar permissões de acesso para trabalhos de operações em lote do S3. Consulte mais informações e uma lista completa das chaves de condição específicas do Amazon S3 em [Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) na *Referência de autorização do serviço*.

Para ter mais informações sobre as permissões referentes a operações de API do S3 de acordo com os tipos de recurso do S3, consulte [Permissões obrigatórias para operações de API do Amazon S3](using-with-s3-policy-actions.md).

O vídeo a seguir mostra como configurar permissões do IAM para trabalhos de operações em lote usando o console do Amazon S3.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/qpwHUrwAiUI//0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/qpwHUrwAiUI/)


### Política de confiança
<a name="batch-ops-iam-role-policies-trust"></a>

Para permitir que o principal do serviço de operações em lote do S3 assuma a função do IAM, anexe a política de confiança a seguir à função.

------
#### [ JSON ]

****  

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

------

## Anexar políticas de permissões
<a name="batch-ops-iam-role-policies-perm"></a>

Dependendo do tipo de operação, é possível anexar uma das seguintes políticas:

Antes de configurar as permissões, observe o seguinte:
+ Independentemente da operação, o Amazon S3 precisa de permissão para ler o objeto do manifesto no seu bucket do S3 e, opcionalmente, gerar um relatório para o bucket. Portanto, todas as políticas a seguir incluem essas permissões.
+ Para manifestos de relatório do Amazon S3 Inventory, as operações em lote do S3 necessitam de permissão de leitura para o objeto manifest.json e todos os arquivos de dados CSV associados.
+ Permissões específicas da versão, como `s3:GetObjectVersion`, somente são necessárias ao especificar o ID de versão dos objetos.
+ Se você estiver executando o S3 Batch Operations em objetos criptografados, a função do IAM também deverá ter acesso às chaves do AWS KMS usadas para criptografá-las.
+ Se você enviar um manifesto de relatório de inventário criptografado com o AWS 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.
+ Se o trabalho de operações em lote gerar um manifesto em um bucket com listas de controle de acesso (ACLs) habilitadas e estiver em outra Conta da AWS, você deverá conceder a permissão `s3:PutObjectAcl` na política do IAM do perfil do IAM configurado para o trabalho em lote. Se você não incluir essa permissão, o trabalho em lote falhará com o erro `Error occurred when preparing manifest: Failed to write manifest`.

### Copiar objetos: PutObject
<a name="batch-ops-put-copy-object-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket",
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Substituir a marcação de objetos: PutObjectTagging
<a name="batch-ops-put-object-tagging-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObjectTagging",
        "s3:PutObjectVersionTagging"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Excluir a marcação de objetos: DeleteObjectTagging
<a name="batch-ops-delete-object-tagging-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "s3:DeleteObjectTagging",
              "s3:DeleteObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Substituir a lista de controle de acesso: PutObjectAcl
<a name="batch-ops-put-object-acl-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Restaurar objetos: RestoreObject
<a name="batch-ops-initiate-restore-policy"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect":"Allow",
      "Action":[
          "s3:RestoreObject"
      ],
      "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
      ]
    },
    {
      "Effect":"Allow",
      "Action":[
        "s3:PutObject"
      ],
      "Resource":[
        "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
      ]
    }
  ]
}
```

------

### Aplicar retenção do Bloqueio de Objetos: PutObjectRetention
<a name="batch-ops-put-object-lock-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectRetention",
                "s3:BypassGovernanceRetention"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Aplicar retenção legal do Bloqueio de Objetos: PutObjectLegalHold
<a name="batch-ops-put-object-legal-hold-policy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:GetBucketObjectLockConfiguration",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:PutObjectLegalHold",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
        }
    ]
}
```

------

### Replicar objetos existentes: InitiateReplication com um manifesto gerado pelo S3
<a name="batch-ops-batch-replication-policy"></a>

Use essa política se estiver usando e armazenando um manifesto gerado pelo S3. Consulte mais informações sobre o uso de operações em lote para replicação de objetos existentes em [Replicar objetos existentes com o Replicação em Lote](s3-batch-replication-batch.md).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:PutInventoryConfiguration"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"    
         ]
      }
   ]
}
```

------

### Replicar objetos existentes: InitiateReplication com um manifesto do usuário
<a name="batch-ops-batch-replication-policy-user"></a>

Use essa política se estiver usando um manifesto fornecido pelo usuário. Consulte mais informações sobre o uso de Operações em Lote para replicação de objetos existentes em [Replicar objetos existentes com o Replicação em Lote](s3-batch-replication-batch.md).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Action":[
            "s3:InitiateReplication"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
         ]
      },
      {
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"    
         ]
      }
   ]
}
```

------

### Calcular soma de verificação: permitir `GetObject`, `GetObjectVersion`, `RestoreObject` e `PutObject`
<a name="batch-ops-compute-object-checksum-policies"></a>

Use essa política se estiver tentando usar a operação **Calcular soma de verificação** com o recurso Operações em Lote do S3. São necessárias permissões para `GetObject`, `GetObjectVersion` e `RestoreObject` para obter e ler os bytes dos dados armazenados. Substitua os espaços reservados para entrada do usuário por suas próprias informações. Para ter mais informações sobre a operação **Calcular soma de verificação**, consulte [Verificar a integridade do objeto para dados em repouso no Amazon S3](checking-object-integrity-at-rest.md).

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:RestoreObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket2/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket3/*"
      ]
    }
  ]
}
```

### Atualizar a criptografia de objetos
<a name="batch-ops-update-encryption-policies"></a>

É necessário anexar a política de permissões a seguir para possibilitar que o recurso Operações em Lote leia um manifesto, atualize o tipo de criptografia de objetos e grave um relatório de conclusão. Para usar essas permissões, substitua os *`user input placeholders`* por suas próprias informações. Para ter mais informações sobre como usar essa operação e as permissões que você deve atribuir ao perfil usado pela entidade principal do IAM, consulte [Atualizar a criptografia de objetos](batch-ops-update-encryption.md).

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        }
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

# Criar um trabalho de operações em lote do S3
<a name="batch-ops-create-job"></a>

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 para Java.

Ao criar um trabalho do Operações em Lote do S3, é possível 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 obter mais informações, consulte [Exemplos: relatórios de conclusão de operações em lote do S3](batch-ops-examples-reports.md).

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.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/qpwHUrwAiUI//0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/qpwHUrwAiUI/)


**Topics**
+ [

## Elementos da solicitação de trabalho de Operações em lote
](#batch-ops-create-job-request-elements)
+ [

## Especificar um manifesto
](#specify-batchjob-manifest)
+ [

## Gerar uma lista de objetos automaticamente e salvá-la como um arquivo de manifesto
](#automatically-generate-manifest-file)
+ [

## Criar um arquivo de manifesto
](#create-manifest-file)
+ [

## Usar um manifesto existente
](#specify-existing-manifest-file)
+ [

## Criar um trabalho
](#to-create-batch-ops-job)
+ [

## Respostas do trabalho
](#batch-ops-create-job-response-elements)

## Elementos da solicitação de trabalho de Operações em lote
<a name="batch-ops-create-job-request-elements"></a>

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**  
Um *manifesto* é uma lista de objetos do Amazon S3 que contém as chaves de objeto que você deseja que o Amazon S3 utilize. Você pode usar os seguintes métodos para especificar um manifesto para um trabalho de Operações em Lote:  
+ Operações em lote diretas para gerar uma lista de objetos com base nos metadados que você especificar. Você pode salvar essa lista como um arquivo de manifesto e usá-la ao criar seu trabalho. Essa opção está disponível para qualquer tipo de trabalho criado usando o console do Amazon S3, a AWS CLI, SDKs da AWS ou a API REST do Amazon S3.
+ Gere uma lista de objetos automaticamente com base em uma configuração de replicação existente. Você pode salvar essa lista como um arquivo de manifesto e usá-la novamente para futuros trabalhos. 
+ Crie um arquivo de manifesto manualmente.
+ Use um manifesto existente. 
+ Independentemente de como você especifica os objetos nos quais deseja trabalhar, o manifesto em si deve ser armazenado em um bucket de uso geral. O recurso Operações em Lote não pode importar manifestos existentes nem salvar listas de objetos como manifesto 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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).
+ 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 obter mais informações, consulte [Especificar um manifesto](#specify-batchjob-manifest).

**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, é aconselhável atribuir a todos os trabalhos de **restauração** (`RestoreObject`) uma prioridade 1, a todos os trabalhos de **cópia** (`CopyObject`) uma prioridade 2 e a todos os trabalhos de **substituição de 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. O perfil do IAM usado 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. O perfil também precisa de permissões para ler o manifesto e gravar o relatório de conclusão.  
O perfil do IAM pode ser um perfil existente. Ou, se você usar o console do Amazon S3 para criar o trabalho, pode ser um perfil do IAM criado automaticamente pelo Amazon S3 em seu nome. Para obter mais informações, consulte [Conceder permissões para operações em lote](batch-ops-iam-role-policies.md).  
Para obter mais informações sobre funções do IAM, consulte [Funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) no *Manual do usuário do IAM*. Para obter mais informações sobre as permissões do Amazon S3, consulte [Ações de políticas para o Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions).  
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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

**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, você deve fornecer os parâmetros para o relatório nesse elemento. As seguintes informações são exibidas:  
+ 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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).
+ 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.
Se o campo `CreateJob.Report.ExpectedBucketOwner` for fornecido, ele exigirá correspondência com o proprietário do bucket do relatório de conclusão. Se não houver correspondência, o trabalho falhará.  
Os relatórios de conclusão são sempre criptografados com a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).

**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 obter mais informações, consulte [Controlar o acesso e rotular trabalhos usando tags](batch-ops-job-tags.md).

**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
<a name="specify-batchjob-manifest"></a>

Um *manifesto* é uma lista de objetos do Amazon S3 que contém as chaves de objeto que você deseja que o Amazon S3 utilize. Você pode usar os seguintes métodos para especificar um manifesto para um trabalho de Operações em Lote:
+ Operações em lote diretas para gerar uma lista de objetos com base nos metadados que você especificar. Você pode salvar essa lista como um manifesto e usá-la novamente para trabalhos futuros. Essa opção está disponível para qualquer tipo de trabalho criado usando o console do Amazon S3, a AWS CLI, SDKs da AWS ou a API REST do Amazon S3.
+ Gere uma lista de objetos automaticamente com base em uma configuração de replicação existente. Você pode salvar essa lista como um manifesto e usá-la novamente para futuros trabalhos. 
+ Crie um arquivo de manifesto manualmente.
+ Use um manifesto existente. 

**nota**  
O recurso Operações em Lote do Amazon S3 não permite a geração de listas de objetos entre regiões. 
Independentemente de como você especifica os objetos nos quais deseja trabalhar, o manifesto em si deve ser armazenado em um bucket de uso geral. O recurso Operações em Lote não pode importar manifestos existentes nem salvar listas de objetos como manifesto 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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).

## Gerar uma lista de objetos automaticamente e salvá-la como um arquivo de manifesto
<a name="automatically-generate-manifest-file"></a>

É possível instruir o Amazon S3 a gerar uma lista de objetos automaticamente com base nos metadados especificados. Você pode salvar essa lista como um manifesto e usá-la novamente para trabalhos futuros. Essa opção está disponível para qualquer tipo de trabalho criado usando o console do Amazon S3, a AWS CLI, SDKs da AWS ou a API REST do Amazon S3. 

Para gerar uma lista de objetos automaticamente e salvá-la como um arquivo de manifesto, 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 de chave, tamanho, tipo de criptografia, ARN da chave do KMS, chave do bucket e classe de armazenamento. No caso de trabalhos de replicação, também é possível usar tags para filtrar objetos. 

### Critérios de filtro de objetos
<a name="manifest-generator-filter-criteria"></a>

Para filtrar a lista de objetos a serem incluídos em uma lista de objetos gerada automaticamente, você pode especificar os critérios a seguir. Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html) 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.

**MatchAnyObjectEncryption**  
 Se fornecida, a lista de objetos gerada e salva como um arquivo de manifesto inclui somente objetos do bucket de origem com o tipo de criptografia do lado do servidor indicado (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C ou NOT-SSE). Se selecionar SSE-KMS ou DSSE-KMS, você pode, opcionalmente, filtrar ainda mais seus resultados especificando o ARN de uma chave do KMS específica. Se você selecionar SSE-KMS, também poderá, opcionalmente, filtrar ainda mais seus resultados pelo status “Chave do bucket habilitada”. 

**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 listas de objetos geradas automaticamente salvas como manifestos. 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 obter exemplos, consulte [Criar um trabalho](#to-create-batch-ops-job).

## Criar um arquivo de manifesto
<a name="create-manifest-file"></a>

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. Usar um manifesto criado manualmente com o AWS KMS não é compatível.

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.

```
amzn-s3-demo-bucket1,objectkey1
amzn-s3-demo-bucket1,objectkey2
amzn-s3-demo-bucket1,objectkey3
amzn-s3-demo-bucket1,photos/jpgs/objectkey4
amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5
amzn-s3-demo-bucket1,object%20key%20with%20spaces
```

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

```
amzn-s3-demo-bucket1,objectkey1,PZ9ibn9D5lP6p298B7S9_ceqx1n5EJ0p
amzn-s3-demo-bucket1,objectkey2,YY_ouuAJByNW1LRBfFMfxMge7XQWxMBF
amzn-s3-demo-bucket1,objectkey3,jbo9_jhdPEyB4RrmOxWS0kU0EoNrU_oI
amzn-s3-demo-bucket1,photos/jpgs/objectkey4,6EqlikJJxLTsHsnbZbSRffn24_eh5Ny4
amzn-s3-demo-bucket1,photos/jpgs/newjersey/objectkey5,imHf3FAiRsvBW_EHB8GOu.NHunHO1gVs
amzn-s3-demo-bucket1,object%20key%20with%20spaces,9HkPvDaZY5MVbMhn6TMn1YTb5ArQAo3w
```

## Usar um manifesto existente
<a name="specify-existing-manifest-file"></a>

É possível especificar um manifesto existente na criação de um trabalho de operações em lote 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 [Catalogar e analisar seus dados com o Inventário S3](storage-inventory.md). 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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestSpec.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestSpec.html) 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.

## Criar um trabalho
<a name="to-create-batch-ops-job"></a>

 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](#batch-ops-create-job-request-elements). 

**Pré-requisitos**  
Antes de criar um trabalho de Operações em Lote, confirme se você configurou as permissões relevantes. Para obter mais informações, consulte [Conceder permissões para operações em lote](batch-ops-iam-role-policies.md).

### Usar o console do S3
<a name="batch-ops-create-job-console"></a>

**Como criar um trabalho de operações em lote usando o console do S3**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Selecione **Operações em lotes** no painel de navegação do console do Amazon S3.

1. Escolha **Criar trabalho**.

1. Em **Escolher região e escopo**, escolha e visualize a região da AWS onde você deseja criar o trabalho.
**nota**  
Para operações de cópia, você deve criar o trabalho na mesma região que o bucket de destino. Para todas as outras operações, você deve criar o trabalho na mesma região que os objetos arquivados no manifesto.

1. Em **Escopo**, especifique a lista de objetos aos quais você aplicará o trabalho de operações em lote.

   Em **Lista de objetos**, você pode optar por gerar um manifesto usando uma lista de objetos, gerar um manifesto usando uma configuração de replicação ou usar um manifesto existente.
   + Se você escolher **Gerar uma lista de objetos**, uma lista de objetos será gerada automaticamente com base no local de origem e nos metadados que você especificar. Você pode salvar essa lista como um manifesto e usá-la novamente para futuros trabalhos.
**nota**  
Para gerar uma lista de objetos, é necessário ter a permissão `s3:PutInventoryConfiguration`. O bucket de origem deve ser de uso geral.
   + Se você escolher **Usar um arquivo de manifesto existente**, poderá importar uma lista de objetos de um manifesto existente. Um manifesto é um relatório ou arquivo CV do Inventário S3 que lista os objetos específicos aos quais você deseja aplicar operações em lote.
   + Se você escolher **Usar uma configuração de replicação**, poderá gerar automaticamente uma lista de objetos com base em uma configuração de replicação existente. Você pode salvar essa lista como um manifesto e usá-la novamente para futuros trabalhos. 

      Neste exemplo, escolha **Gerar uma lista de objetos**.

1. Em **Conta de origem**, escolha a conta que possui os objetos de origem.

1. Em **Origem**, insira o caminho para sua origem; por exemplo, `s3://` *amzn-s3-demo-bucket*.

1. Em **Filtros de objeto**, você pode usar filtros para filtrar por qualquer parte da chave do objeto ou filtrar até o final da chave do objeto. Os **filtros de chave de objeto** ajudam a refinar a lista de objetos a serem usados no manifesto. Em **Filtros de metadados de objetos**, escolha filtros para definir melhor o escopo dos objetos a serem incluídos no manifesto.

1. Em **Escolher operação**, selecione o tipo de operação a ser executada em todos os objetos no manifesto. Se seu manifesto fizer referência a objetos armazenados em um bucket de diretório, use somente as operações de cópia ou invocação da função do AWS Lambda. Todas as outras operações não são permitidas.

1. Depois de selecionar o tipo de operação, escolha **Próximo**.

1. Preencha as informações em **Configurar opções adicionais**.

   Em **Permissões**, especifique o perfil do AWS Identity and Access Management (IAM) que você deseja que o trabalho use. Pode ser um perfil existente ou um perfil que o Amazon S3 cria automaticamente em seu nome. Para obter mais informações, consulte [Conceder permissões para operações em lote](batch-ops-iam-role-policies.md). O Amazon S3 poderá criar o perfil em seu nome se você tiver configurado o trabalho para usar uma lista de objetos gerada pelo S3 com filtros ou uma lista de objetos com base em uma configuração de replicação.

1. Ao concluir a configuração das opções adicionais, escolha **Próximo**.

1. Em **Review (Revisão)**, verifique as configurações. Se precisar fazer alterações, escolha **Previous (Anterior)**. Ou é possível escolher **Enviar trabalho**.

### Como usar o AWS CLI
<a name="batch-ops-example-cli-job-create"></a>

Para criar o trabalho de operações em lote com a AWS CLI, escolha um dos exemplos a seguir, dependendo se você está especificando um manifesto existente ou gerando um manifesto automaticamente. 

------
#### [ Specify manifest ]

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

**Como criar um trabalho `S3PutObjectTagging` de operações em lote especificando um manifesto**

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.

   1. 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](batch-ops-iam-role-policies.md).
**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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

      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 `amzn-s3-demo-destination-bucket` pelo nome do bucket que contém os objetos aos quais você deseja aplicar etiquetas.
      + Substitua *`amzn-s3-demo-manifest-bucket`* pelo nome do bucket que contém o manifesto.
      + Substitua *`amzn-s3-demo-completion-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"		 	 	 ,		 	 	 TCX5-2025-waiver;,
        "Statement":[
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutObjectTagging",
              "s3:PutObjectVersionTagging"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:GetObjectVersion",
              "s3:GetBucketLocation"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket",
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
          },
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutObject",
              "s3:GetBucketLocation"
            ],
            "Resource":[
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
            ]
          }
        ]
      }'
      ```

1. 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 ter mais informações, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html) 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:::amzn-s3-demo-manifest-bucket/manifest.csv","ETag":"60e460c9d1046e73f7dde5043ac3ae85"}}' \
       --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-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 um trabalho `S3DeleteObjectTagging` de operações em lote gerando um manifesto**

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"		 	 	 ,		 	 	 TCX5-2025-waiver;,
         "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.

   1. 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](batch-ops-iam-role-policies.md).
**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](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-security-iam.html).

      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 `amzn-s3-demo-destination-bucket` pelo nome do bucket que contém os objetos aos quais você deseja aplicar etiquetas.
      + Substitua `amzn-s3-demo-manifest-bucket` pelo nome do bucket onde deseja salvar o manifesto.
      + Substitua `amzn-s3-demo-completion-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"		 	 	 ,		 	 	 TCX5-2025-waiver;,
        "Statement":[
          {
            "Effect":"Allow",
            "Action":[
              "s3:DeleteObjectTagging",
              "s3:DeleteObjectVersionTagging"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
          },
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutInventoryConfiguration"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:GetObjectVersion",
              "s3:ListBucket"
            ],
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket",
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
          },
          {
            "Effect":"Allow",
            "Action":[
              "s3:PutObject",
              "s3:ListBucket"
            ],
            "Resource":[
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
              "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
              "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
          }
        ]
      }'
      ```

      

1. 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 ter mais informações, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html](https://docs.aws.amazon.com/cli/latest/reference/s3control/create-job.html) 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:::amzn-s3-demo-completion-report-bucket",
           "Prefix":"reports", 
           "Format":"Report_CSV_20180820",
           "Enabled":true,
           "ReportScope":"AllTasks"
       }' \
       --manifest-generator '{
           "S3JobManifestGenerator": {
             "ExpectedBucketOwner": "012345678901",
             "SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket",
             "EnableManifestOutput": true,
             "ManifestOutputLocation": {
               "ExpectedManifestBucketOwner": "012345678901",
               "Bucket": "arn:aws:s3:::amzn-s3-demo-manifest-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.

------

### Como usar o AWS SDK para Java
<a name="batch-ops-examples-java-create-job"></a>

Para criar seu trabalho de operações em lote com o AWS SDK para Java, você pode escolher entre duas abordagens, dependendo se você está especificando um manifesto existente ou gerando um manifesto automaticamente:
+ *Especificar o manifesto existente:* crie um trabalho no recurso Operações em Lote do S3 (como `S3PutObjectTagging`) que atue nos objetos listados em um arquivo de manifesto existente. Essa abordagem exige que você forneça a localização, a ETag e as especificações de formato do manifesto.
+ *Gerar manifesto automaticamente:* crie um trabalho no recurso Operações em Lote do S3 (como `s3PutObjectCopy`) que gere automaticamente um manifesto com base em critérios de filtro de objeto, como restrições de data de criação, nome de chave e tamanho.

Ambas as abordagens usam o cliente S3Control para configurar operações de trabalho, especificações de manifesto, relatórios de trabalho, perfis do IAM e outros parâmetros de trabalho, como requisitos de prioridade e confirmação.

Para ver exemplos de como criar trabalhos do recurso Operações em Lote do S3 com o AWS SDK para Java, consulte [Create a batch job to copy objects](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) na *Referência de API do Amazon S3*.

### Uso da API REST
<a name="batch-ops-examples-rest-create-job"></a>

Você pode usar a API REST para criar um trabalho do Batch Operations. Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) na *Referência da API do Amazon Simple Storage Service*. 

## Respostas do trabalho
<a name="batch-ops-create-job-response-elements"></a>

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.

# Operações suportadas pelo S3 Batch Operations
<a name="batch-ops-operations"></a>

Você pode usar operações em lote do S3 para executar operações em lote de grande escala em objetos do Amazon S3. As operações em lote do S3 podem executar uma única operação em listas de objetos do Amazon S3 especificadas. Um único trabalho pode realizar uma operação especificada em bilhões de objetos contendo exabytes de dados. O Amazon S3 monitora o progresso, envia notificações e armazena um relatório de conclusão detalhado de todas as ações, fornecendo uma experiência totalmente gerenciada, auditável e sem servidor. É possível usar o recurso Operações em Lote do S3 por meio do console do Amazon S3, da AWS CLI, de SDKs da AWS ou da API REST do Amazon S3.

As operações em lote do S3 oferece suporte às seguintes operações:

# Copiar objetos
<a name="batch-ops-copy-object"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação **Copiar** do Operações em Lote copia cada objeto especificado no manifesto. É possível copiar objetos em um bucket na mesma Região da AWS ou em um bucket em outra região. O recurso Operações em lote do S3 é compatível com a maioria das opções disponíveis no Amazon S3 para copiar objetos. Essas opções incluem a configuração de metadados de objetos e permissões e a alteração da classe de armazenamento de um objeto. 

É possível usar a operação **Copiar** para copiar objetos não criptografados existentes e gravá-los de volta no mesmo bucket que os objetos criptografados. Para obter mais informações, consulte [Criptografia de objetos existentes com o Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

Ao copiar objetos, você pode alterar o algoritmo de soma de verificação usado para calcular a soma de verificação do objeto. Se os objetos não tiverem uma soma de verificação adicional calculada, você também poderá adicionar uma especificando o algoritmo de soma de verificação a ser usado pelo Amazon S3. Para obter mais informações, consulte [Verificar a integridade do objeto no Amazon S3](checking-object-integrity.md).

Consulte mais informações sobre como copiar objetos no Amazon S3, bem como parâmetros obrigatórios e opcionais em [Copiar, mover e renomear objetos](copy-object.md) neste guia e em [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) na *Referência de API do Amazon Simple Storage Service*.

## Restrições e limitações
<a name="batch-ops-copy-object-restrictions"></a>

Quando você usa a operação **Copiar** do Operações em Lote, as seguintes restrições e limitações se aplicam:
+ Todos os objetos de origem devem estar em um só bucket.
+ Todos os objetos de destino devem estar em um só bucket.
+ Você deve ler todas as permissões para o bucket de origem e gravar permissões para o bucket de destino.
+ Os objetos a serem copiados devem ter até 5 GB.
+ Ao tentar copiar objetos das classes S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive para a classe de armazenamento S3 Standard, primeiro você deverá restaurar esses objetos. Para obter mais informações, consulte [Restaurar um objeto arquivado](restoring-objects.md).
+ É necessário criar trabalhos **Copiar** do Operações em Lote na região de destino, que é a região para a qual você pretende copiar os objetos.
+ Todas as opções `CopyObject` são compatíveis, exceto para verificações condicionais em tags de entidade (ETags) e criptografia do lado do servidor com chaves de criptografia fornecidas pelo cliente (SSE-C).
+ Se o bucket de destino não tiver versionamento, você deverá substituir os objetos que têm os mesmos nomes de chave.
+ Os objetos não são necessariamente copiados na mesma ordem em que são listados no manifesto. Para buckets com versionamento, se preservar a ordem de versão atual ou não atual for importante, copie todas as versões não atuais primeiro. Em seguida, após a conclusão do primeiro trabalho, copie as versões atuais em um trabalho subsequente. 
+ A cópia de objetos na classe Reduced Redundancy Storage (RRS) não é compatível.
+ Um único trabalho de cópia do recurso Operações em Lote pode comportar um manifesto com até 20 bilhões de objetos.

# Copiar objetos usando o S3 Batch Operations
<a name="batch-ops-examples-copy"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. É possível usar o Operações em Lote do S3 para criar um trabalho **Copiar** (`CopyObject`) para copiar objetos dentro da mesma conta ou para uma conta de destino diferente. 

Os exemplos a seguir mostram como armazenar e usar um manifesto que está em uma conta diferente. O primeiro exemplo mostra como você pode usar o Inventário Amazon S3 para entregar o relatório de inventário à conta de destino para uso durante a criação do trabalho. O segundo exemplo mostra como usar um manifesto de valores separados por vírgula (CSV) na conta de origem ou de destino. O terceiro exemplo mostra como usar a operação **Copiar** para habilitar chaves de bucket do S3 para objetos que foram criptografados com a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS).

**Topics**
+ [

# Uso de um relatório de inventário para copiar objetos entre Contas da AWS
](specify-batchjob-manifest-xaccount-inventory.md)
+ [

# Uso de um manifesto CSV para copiar objetos entre Contas da AWS
](specify-batchjob-manifest-xaccount-csv.md)
+ [

# Usar o Operações em Lote para habilitar chaves de bucket do S3 para SSE-KMS
](batch-ops-copy-example-bucket-key.md)

# Uso de um relatório de inventário para copiar objetos entre Contas da AWS
<a name="specify-batchjob-manifest-xaccount-inventory"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. É possível usar o Operações em Lote do S3 para criar um trabalho **Copiar** (`CopyObject`) para copiar objetos dentro da mesma conta ou para uma conta de destino diferente.

Você pode usar o Inventário Amazon S3 para criar um relatório de inventário e usá-lo para criar uma lista (manifesto) de objetos a serem copiados com o Operações em Lote do S3. Para obter mais informações sobre como usar um manifesto CSV na conta de origem ou destino, consulte [Uso de um manifesto CSV para copiar objetos entre Contas da AWS](specify-batchjob-manifest-xaccount-csv.md).

O inventário do Amazon S3 gera inventários dos objetos em um bucket. A lista resultante é publicada em um arquivo de saída. O bucket do qual foi feito o inventário é chamado de bucket de origem e o bucket no qual o relatório de inventário é armazenado é chamado de bucket de destino. 

O relatório do Amazon S3 Inventory pode ser configurado para ser entregue a outra Conta da AWS. Fazer isso permite que o Operações em Lote do S3 leia o relatório de inventário quando o trabalho é criado na conta de destino.

Para obter mais informações sobre os buckets de origem e destino do inventário do Amazon S3, consulte [Buckets de origem e destino](storage-inventory.md#storage-inventory-buckets).

A maneira mais fácil de configurar um inventário é usando o console do Amazon S3, mas você também pode usar a API REST do Amazon S3, a AWS Command Line Interface (AWS CLI) ou SDKs da AWS.

O procedimento de console a seguir contém as etapas de alto nível para configurar permissões para um trabalho de operações em lote do S3. Neste procedimento, você copia objetos de uma conta de origem para uma conta de destino, com o relatório de inventário armazenado na conta de destino.

**Como configurar o Amazon S3 Inventory para buckets de origem e de destino que são de propriedade de diferentes contas**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Escolha (ou crie) um bucket de manifesto de destino para armazenar o relatório de inventário. Neste procedimento, a *conta de destino* é a conta que possui tanto o bucket de manifesto de destino como o bucket no qual os objetos são copiados.

1. Configure um relatório de inventário para um bucket de origem. Para obter informações sobre como usar o console para configurar um inventário ou sobre como criptografar um arquivo de lista de inventário, consulte [Configurar o inventário do Amazon S3](configure-inventory.md). 

   Ao configurar o relatório de inventário, você especifica o bucket de destino no qual deseja que a lista seja armazenada. O relatório de inventário para o bucket de origem é publicado no bucket de destino. Neste procedimento, a *conta de origem* é a conta que possui o bucket de origem.

   Selecione **CSV** para o formato de saída.

   Ao inserir informações para o bucket de destino, selecione **Buckets in another account (Buckets em outra conta)**. Em seguida, insira o nome do bucket do manifesto de destino. Se preferir, você poderá inserir o ID da conta de destino.

   Após salvar a configuração do inventário, o console exibirá uma mensagem semelhante à seguinte: 

   O Amazon S3 não conseguiu criar uma política de bucket no bucket de destino. Peça para o proprietário do bucket de destino adicionar a política de bucket a seguir a fim de permitir que o Amazon S3 insira dados nele.

   O console exibirá, então, uma política de bucket que pode ser usada para o bucket de destino.

1. Copie a política do bucket de destino que aparece no console.

1. Na conta de destino, adicione a política de bucket copiada ao bucket do manifesto de destino no qual o relatório de inventário está armazenado.

1. Crie uma função na conta de destino baseada na política de confiança do recurso Operações em lote do S3. Consulte mais informações sobre essa política de confiança em [Política de confiança](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust).

   Consulte mais informações sobre como criar um perfil em [Criar um perfil para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do usuário do IAM*.

   Insira um nome para o perfil (o perfil do exemplo a seguir usa o nome *`BatchOperationsDestinationRoleCOPY`*). Escolha o serviço **S3** e selecione o caso de uso **Operações em Lote do S3**, que aplica a política de confiança ao perfil. 

   Em seguida, selecione **Create policy (Criar política)** para anexar a política a seguir à função. Para usar essa política, substitua os *`user input placeholders`* por suas próprias informações. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   A função usa a política para conceder ao `batchoperations.s3.amazonaws.com` permissão para ler o manifesto no bucket de destino. Ele também concede permissões a objetos `GET`, listas de controle de acesso (ACLs), tags e versões no bucket do objeto de origem. Além disso, ela concede permissões a objetos `PUT`, ACLs, tags e versões no bucket do objeto de destino.

1. Na conta de origem, crie uma política de bucket para o bucket de origem que concede o perfil que você criou na etapa anterior para objetos `GET`, ACLs, tags e versões no bucket de origem. Esta etapa permite que as operações em lote do S3 obtenham objetos do bucket de origem por meio da função de confiança.

   Veja a seguir um exemplo da política de bucket para a conta de origem. Para usar essa política, substitua os *`user input placeholders`* por suas próprias informações.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowBatchOperationsSourceObjectCOPY",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
               },
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetObjectAcl",
                   "s3:GetObjectTagging",
                   "s3:GetObjectVersionAcl",
                   "s3:GetObjectVersionTagging"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
           }
       ]
   }
   ```

------

1. Depois que o relatório de inventário estiver disponível, crie um trabalho de **Copiar** (`CopyObject`) do Operações em Lote do S3 na conta de destino e escolha o relatório de inventário no bucket do manifesto de destino. Você precisa do ARN para o perfil do IAM que criou na conta de destino.

   Para obter informações gerais sobre como criar uma tarefa, consulte [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md).

   Consulte informações sobre a criação de um trabalho usando o console em [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md).

# Uso de um manifesto CSV para copiar objetos entre Contas da AWS
<a name="specify-batchjob-manifest-xaccount-csv"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. É possível usar o Operações em Lote do S3 para criar um trabalho **Copiar** (`CopyObject`) para copiar objetos dentro da mesma conta ou para uma conta de destino diferente.

É possível usar um manifesto CSV armazenado na conta de origem para copiar objetos nas Contas da AWS com o S3 Batch Operations. Para usar um relatório de inventário S3 como manifesto, consulte [Uso de um relatório de inventário para copiar objetos entre Contas da AWS](specify-batchjob-manifest-xaccount-inventory.md).

Para ter um exemplo do formato CSV para arquivos de manifesto, consulte [Criar um arquivo de manifesto](batch-ops-create-job.md#create-manifest-file).

O procedimento a seguir mostra como configurar permissões ao usar um trabalho de Operações em Lote do S3 para copiar objetos de uma conta de origem para uma conta de destino com um arquivo de manifesto CSV armazenado na conta de origem.

**Como usar um manifesto CSV para copiar objetos nas Contas da AWS**

1. Crie um perfil do AWS Identity and Access Management (IAM) na conta de destino baseado na política de confiança do recurso Operações em Lote do S3. Neste procedimento, a *conta de destino* é a conta para a qual os objetos estão sendo copiados.

   Para obter mais informações sobre a política de confiança, consulte [Política de confiança](batch-ops-iam-role-policies.md#batch-ops-iam-role-policies-trust).

   Consulte mais informações sobre como criar um perfil em [Criar um perfil para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do usuário do IAM*.

   Se você criar o perfil usando o console, insira um nome para o perfil (o perfil de exemplo a seguir usa o nome `BatchOperationsDestinationRoleCOPY`). Escolha o serviço **S3** e selecione o caso de uso **Operações em Lote do S3**, que aplica a política de confiança ao perfil.

   Em seguida, selecione **Create policy (Criar política)** para anexar a política a seguir à função. Para usar essa política, substitua os *`user input placeholders`* por suas próprias informações.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsDestinationObjectCOPY",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:PutObjectVersionAcl",
           "s3:PutObjectAcl",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
         ]
       }
     ]
   }
   ```

------

   Com o uso da política, a função concede permissão ao `batchoperations.s3.amazonaws.com` para ler o manifesto no bucket do manifesto de origem. Ela concede permissões a objetos `GET`, listas de controle de acesso (ACLs), tags e versões no bucket do objeto de origem. Ela também concede permissões a objetos `PUT`, ACLs, tags e versões no bucket do objeto de destino.

1. Na conta de origem, crie uma política para o bucket que contém o manifesto para conceder ao perfil que você criou na etapa anterior permissões para objetos `GET` e versões no bucket do manifesto de origem.

   Esta etapa permite que as Operações em Lote do S3 leiam o manifesto usando o perfil confiável. Aplique a política de bucket ao bucket que contém o manifesto.

   Veja a seguir um exemplo da política de bucket para ser aplicada ao bucket do manifesto de origem. Para usar essa política, substitua os *`user input placeholders`* por suas próprias informações.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceManifestRead",
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::111122223333:user/ConsoleUserCreatingJob",
             "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
           ]
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
       }
     ]
   }
   ```

------

   Esta poítica também concede ao usuário de um console que está criando uma tarefa na conta de destino as mesmas permissões no bucket do manifesto de origem por meio da mesma política de bucket.

1. Na conta de origem, crie uma política para o bucket de origem que conceda ao perfil que você criou permissões para objetos `GET`, ACLs, tags e versões no bucket de objeto de origem. O Operações em lote do S3 pode então obter objetos do bucket de origem por meio da função confiável.

   Veja a seguir um exemplo da política de bucket para o bucket que contém os objetos de origem. Para usar essa política, substitua os *`user input placeholders`* por suas próprias informações.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowBatchOperationsSourceObjectCOPY",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:role/BatchOperationsDestinationRoleCOPY"
         },
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion",
           "s3:GetObjectAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectVersionTagging"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
       }
     ]
   }
   ```

------

1. Crie um trabalho de operações em lote do S3 na conta de destino. Você precisa do nome de recurso da Amazon (ARN) para a função que criou na conta de destino. Para obter mais informações sobre como criar um trabalho, consulte [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md).

# Usar o Operações em Lote para habilitar chaves de bucket do S3 para SSE-KMS
<a name="batch-ops-copy-example-bucket-key"></a>

As chaves de bucket do S3 reduzem o custo da criptografia do lado do servidor com o AWS Key Management Service (AWS KMS) (SSE-KMS), diminuindo assim o tráfego de solicitações do Amazon S3 para o AWS KMS. Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md) e [Configurando seu bucket para usar uma chave de bucket do S3 com SSE-KMS para novos objetos](configuring-bucket-key.md). Ao executar uma operação `CopyObject` usando a API REST, SDKs da AWS ou a AWS CLI, você pode habilitar ou desabilitar uma chave de bucket do S3 no nível do objeto adicionando o cabeçalho de solicitação `x-amz-server-side-encryption-bucket-key-enabled` com um valor `true` ou `false`. 

Quando você configura uma chave de bucket do S3 para um objeto usando uma operação `CopyObject`, o Amazon S3 atualiza somente as configurações para esse objeto. As configurações da chave de bucket S3 para o bucket de destino não são alteradas. Se você enviar uma solicitação `CopyObject` para um objeto criptografado pelo AWS KMS em um bucket com as chaves de bucket do S3 habilitadas, as operações no nível do objeto vão usar automaticamente as chaves de bucket do S3, a menos que você desabilite as chaves no cabeçalho da solicitação. Se você não especificar uma chave de bucket do S3 para seu objeto, o Amazon S3 aplicará as configurações da chave de bucket do S3 para o bucket de destino ao objeto.

Para criptografar objetos existentes do Amazon S3, você pode usar o Operações em Lote do S3. É possível usar a **operação Copy do Batch Operations** para copiar objetos não criptografados existentes e gravá-los de volta no mesmo bucket que os objetos criptografados. Consulte mais informações em [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) no Blog de armazenamento da AWS.

No exemplo a seguir, você usa a operação **Copiar** do Operações em Lote para habilitar chaves de bucket do S3 em objetos existentes. Para obter mais informações, consulte [Configurar uma chave de bucket do S3 no nível de objeto](configuring-bucket-key-object.md).

**Topics**
+ [

## Considerações sobre o uso do Operações em Lote do S3 para criptografar objetos com chaves de bucket do S3 habilitadas
](#bucket-key-ex-things-to-note)
+ [

## Pré-requisitos
](#bucket-key-ex-prerequisites)
+ [

## Etapa 1: obter a lista de objetos usando o Amazon S3 Inventory
](#bucket-key-ex-get-list-of-objects)
+ [

## Etapa 2: Filtrar sua lista de objetos com S3 Select
](#bucket-key-ex-filter-object-list-with-s3-select)
+ [

## Etapa 3: Configurar e executar o trabalho do S3 Batch Operations
](#bucket-key-ex-setup-and-run-job)

## Considerações sobre o uso do Operações em Lote do S3 para criptografar objetos com chaves de bucket do S3 habilitadas
<a name="bucket-key-ex-things-to-note"></a>

Considere os seguintes problemas ao usar o Operações em Lote do S3 para criptografar objetos com chaves de bucket do S3 habilitadas:
+ Você será cobrado por trabalhos, objetos e solicitações das Operações em Lote do S3, além de quaisquer encargos associados à operação que as Operações em Lote do S3 executa em seu nome, como transferência de dados, solicitações e outras cobranças. Para obter mais informações, consulte [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing).
+ Se você usar um bucket versionado, cada trabalho do S3 Batch Operations executado criará novas versões criptografadas de seus objetos. Ele também mantém as versões anteriores sem chave do bucket do S3 configurada. Para excluir as versões antigas, configure uma política de expiração do ciclo de vida do S3 para versões não atuais, conforme descrito em [Elementos de configuração do ciclo de vida](intro-lifecycle-rules.md).
+ A operação de cópia cria novos objetos com novas datas de criação, o que pode afetar ações do ciclo de vida, como arquivamento. Se você copiar todos os objetos em seu bucket, todas as novas cópias terão datas de criação idênticas ou semelhantes. Para identificar esses objetos e criar regras de ciclo de vida diferentes para vários subconjuntos de dados, considere o uso de tags de objeto. 

## Pré-requisitos
<a name="bucket-key-ex-prerequisites"></a>

Antes de configurar os objetos para usar uma chave de bucket do S3, consulte [Alterações na observação antes de habilitar uma chave de bucket do S3](bucket-key.md#bucket-key-changes). 

Para usar esse exemplo, é necessário ter uma Conta da AWS e pelo menos um bucket do S3 para manter os arquivos de trabalho e os resultados criptografados. Você também pode achar grande parte da documentação existente do S3 Batch Operations útil, incluindo os seguintes tópicos:
+ [Conceitos básicos sobre operações em lote do S3](batch-ops.md#batch-ops-basics)
+ [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md)
+ [Operações suportadas pelo S3 Batch Operations](batch-ops-operations.md)
+ [Gerenciar trabalhos de operações em lote do S3](batch-ops-managing-jobs.md)

## Etapa 1: obter a lista de objetos usando o Amazon S3 Inventory
<a name="bucket-key-ex-get-list-of-objects"></a>

Para começar, identifique o bucket do S3 que contém os objetos a serem criptografados e obtenha uma lista de seu conteúdo. Um relatório do Amazon S3 Inventory é a maneira mais conveniente e acessível de fazer isso. O relatório fornece a lista dos objetos em um bucket, juntamente com os metadados associados. Nessa etapa, o bucket de origem é o bucket inventariado, e o bucket de destino é o bucket onde você armazena o arquivo de relatório de inventário. Para obter mais informações sobre os buckets de origem e destino do inventário do Amazon S3, consulte [Catalogar e analisar seus dados com o Inventário S3](storage-inventory.md).

A maneira mais fácil de configurar um inventário é usando o Console de gerenciamento da AWS. Mas você também pode usar a API REST, AWS Command Line Interface (AWS CLI) ou AWS SDKs. Antes de seguir essas etapas, faça login no console e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/). Se você encontrar erros de permissão negada, adicione uma política de bucket ao bucket de destino. Para obter mais informações, consulte [Conceder permissões para o Inventário do S3 e análises do S3](example-bucket-policies.md#example-bucket-policies-s3-inventory-1).

**Para obter uma lista de objetos usando o S3 Inventory**

1. Abra o console do Amazon S3, em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, selecione **Buckets** e escolha um bucket que contém objetos para criptografar.

1. Na guia **Management** (Gerenciamento), navegue para a seção **Inventory configurations** (Configurações de inventário) e escolha **Create inventory configuration** (Criar configuração de inventário).

1. Dê um nome ao seu novo inventário, insira o nome do bucket S3 de destino e, opcionalmente, crie um prefixo de destino para que o Amazon S3 atribua objetos nesse bucket.

1. Em **Output format** (Formato de saída), escolha **CSV**.

1. (Opcional) Na seção **Campos adicionais: *opcional***, selecione **Criptografia** e quaisquer outros campos de relatórios de seu interesse. Defina a frequência das entregas de relatório como **Daily** (Diariamente) para que o primeiro relatório seja entregue ao seu bucket mais cedo.

1. Selecione **Create** (Criar) para salvar suas configurações.

O Amazon S3 pode demorar até 48 horas para entregar o primeiro relatório, portanto, verifique quando o primeiro relatório chegar. Depois de receber seu primeiro relatório, vá para a próxima etapa para filtrar o conteúdo do relatório do Inventário S3. Se não desejar mais receber relatórios de inventário para esse bucket, exclua a configuração do S3 Inventory. Caso contrário, o Amazon S3 continuará entregando relatórios em uma programação diária ou semanal.

Uma lista de inventário não é uma única visualização point-in-time de todos os objetos. As listas de inventário são um snapshot de contínuo de itens do bucket que são consistentes no final (ou seja, a lista pode não incluir os objetos adicionados ou excluídos recentemente). A combinação do S3 Inventory e S3 Batch Operations funciona melhor quando você trabalha com objetos estáticos ou com um conjunto de objetos criado há dois ou mais dias. Para trabalhar com dados mais recentes, use a operação de API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) (`GET` bucket) para criar a lista de objetos manualmente. Se necessário, repita o processo nos próximos dias ou até que o relatório de inventário mostre o status desejado para todos os objetos.

## Etapa 2: Filtrar sua lista de objetos com S3 Select
<a name="bucket-key-ex-filter-object-list-with-s3-select"></a>

Depois de receber o relatório do Inventário S3, você poderá filtrar o conteúdo do relatório para listar somente os objetos que não estão criptografados com chaves de bucket do S3 habilitadas. Se quiser que todos os objetos do bucket sejam criptografados com chaves de bucket do S3 habilitadas, você poderá ignorar esta etapa. No entanto, filtrar seu relatório do Inventário S3 nessa fase economiza o tempo e as despesas de criptografar novamente os objetos que já foram criptografados com chaves de bucket do S3 habilitadas.

Embora as etapas a seguir mostrem como filtrar usando o [Amazon S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/), você também pode usar o [Amazon Athena](https://aws.amazon.com/athena). Para decidir qual ferramenta usar, consulte o arquivo `manifest.json` de relatório do S3 Inventory. Esse arquivo lista o número de arquivos de dados associados a esse relatório. Se o número for grande, use o Amazon Athena porque ele é executado em vários objetos do S3, enquanto o S3 Select funciona em um objeto de cada vez. Consulte mais informações sobre como usar o Amazon S3 e o Athena em conjunto em [Consulta do Amazon S3 Inventory com o Amazon Athena](storage-inventory-athena-query.md) e “Using Athena” na publicação [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations) do Blog de armazenamento da AWS.

**Como filtrar o relatório do Inventário S3 usando o S3 Select**

1. Abra o arquivo `manifest.json` do seu relatório de inventário e observe a seção `fileSchema` do JSON. Isso informa a consulta que você executa nos dados. 

   O seguinte JSON é um arquivo `manifest.json` de exemplo para um inventário em formato CSV em um bucket com versionamento habilitado. Dependendo de como você configurou seu relatório de inventário, seu manifesto pode parecer diferente.

   ```
     {
       "sourceBucket": "batchoperationsdemo",
       "destinationBucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
       "version": "2021-05-22",
       "creationTimestamp": "1558656000000",
       "fileFormat": "CSV",
       "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, BucketKeyStatus",
       "files": [
         {
           "key": "demoinv/batchoperationsdemo/DemoInventory/data/009a40e4-f053-4c16-8c75-6100f8892202.csv.gz",
           "size": 72691,
           "MD5checksum": "c24c831717a099f0ebe4a9d1c5d3935c"
         }
       ]
     }
   ```

   Se o versionamento não estiver ativado no bucket, ou se você optar por executar o relatório para as versões mais recentes, o `fileSchema` é `Bucket`, `Key` e `BucketKeyStatus`. 

   Se o versionamento *estiver* habilitado, dependendo de como você configurou o relatório de inventário, o `fileSchema` poderá incluir o seguinte: `Bucket`, `Key`, `VersionId`, `IsLatest`, `IsDeleteMarker`, `BucketKeyStatus`. Portanto, preste atenção às colunas 1, 2, 3 e 6 ao executar a consulta. 

   As Operações em Lote do S3 precisam do bucket, da chave e do ID da versão como entradas para executar o trabalho, além do campo pelo qual pesquisar, que é o `BucketKeyStatus`. Você não precisa do campo `VersionID`, mas é útil especificar o campo `VersionID` quando você opera em um bucket com versionamento. Para obter mais informações, consulte [Trabalhar com objetos em um bucket com versionamento habilitado](manage-objects-versioned-bucket.md).

1. Localize os arquivos de dados para o relatório de inventário. O objeto `manifest.json` lista os arquivos de dados em **files** (arquivos).

1. Depois de localizar e selecionar o arquivo de dados no console do S3, escolha **Actions** (Ações) e, em seguida, **Query with S3 Select** (Consulta com o S3 Select).

1. Mantenha os campos predefinidos **CSV**, **Comma** (Vírgula) e **GZIP** selecionados e escolha **Next** (Avançar).

1. Para revisar o formato do relatório de inventário antes de prosseguir, escolha **Show file preview** (Mostrar visualização do arquivo).

1. Insira as colunas a serem referenciadas no campo de expressão SQL. Depois, escolha **Run SQL** (Executar SQL). A expressão a seguir retorna as colunas 1 a 3 para todos os objetos sem chave de bucket do S3 configurada.

   `select s._1, s._2, s._3 from s3object s where s._6 = 'DISABLED'`

   Estes são resultados de exemplo.

   ```
         batchoperationsdemo,0100059%7Ethumb.jpg,lsrtIxksLu0R0ZkYPL.LhgD5caTYn6vu
         batchoperationsdemo,0100074%7Ethumb.jpg,sd2M60g6Fdazoi6D5kNARIE7KzUibmHR
         batchoperationsdemo,0100075%7Ethumb.jpg,TLYESLnl1mXD5c4BwiOIinqFrktddkoL
         batchoperationsdemo,0200147%7Ethumb.jpg,amufzfMi_fEw0Rs99rxR_HrDFlE.l3Y0
         batchoperationsdemo,0301420%7Ethumb.jpg,9qGU2SEscL.C.c_sK89trmXYIwooABSh
         batchoperationsdemo,0401524%7Ethumb.jpg,ORnEWNuB1QhHrrYAGFsZhbyvEYJ3DUor
         batchoperationsdemo,200907200065HQ%7Ethumb.jpg,d8LgvIVjbDR5mUVwW6pu9ahTfReyn5V4
         batchoperationsdemo,200907200076HQ%7Ethumb.jpg,XUT25d7.gK40u_GmnupdaZg3BVx2jN40
         batchoperationsdemo,201103190002HQ%7Ethumb.jpg,z.2sVRh0myqVi0BuIrngWlsRPQdb7qOS
   ```

1. Faça download dos resultados, salve-os em um formato CSV e faça seu upload para o Amazon S3 como sua lista de objetos para o trabalho do S3 Batch Operations.

1. Se você tiver vários arquivos de manifesto, execute **Query woth S3 Select** (Consulta com o S3 Select) neles também. Dependendo do tamanho dos resultados, você pode combinar as listas e executar um único trabalho do S3 Batch Operations ou executar cada lista como um trabalho separado. Para decidir o número de trabalhos a executar, considere o [preço](https://aws.amazon.com/s3/pricing/) de executar cada trabalho do Operações em Lote do S3.

## Etapa 3: Configurar e executar o trabalho do S3 Batch Operations
<a name="bucket-key-ex-setup-and-run-job"></a>

Agora que tem suas listas CSV filtradas de objetos do S3, você pode iniciar o trabalho do Operações em Lote do S3 para criptografar os objetos com chaves de bucket do S3 habilitadas.

Um *trabalho* refere-se coletivamente à lista (manifesto) de objetos fornecidos, à operação executada e aos parâmetros especificados. A maneira mais fácil de criptografar esse conjunto de objetos com chaves de bucket do S3 habilitadas é usando a operação **Copiar** e especificando o mesmo prefixo de destino dos objetos listados no manifesto. Em um bucket sem versionamento, essa operação substitui os objetos existentes. Em um bucket com o versionamento ativado, essa operação cria uma versão mais recente e criptografada dos objetos.

Como parte da cópia dos objetos, especifique se o Amazon S3 deve criptografar os objetos com a criptografia SSE-KMS. Esse trabalho copia os objetos para que todos os objetos mostrem uma data de criação atualizada após a conclusão, independentemente de quando você os adicionou originalmente ao Amazon S3. Especifique também as outras propriedades do seu conjunto de objetos como parte do trabalho do S3 Batch Operations, incluindo tags de objeto e classe de armazenamento.

**Topics**
+ [

### Definir sua política do IAM
](#bucket-key-ex-set-up-iam-policy)
+ [

### Configurar sua função do IAM do Batch Operations
](#bucket-key-ex-set-up-iam-role)
+ [

### Habilitar chaves de bucket do S3 para um bucket existente
](#bucket-key-ex-enable-s3-bucket-key-on-a-bucket)
+ [

### Criar seu trabalho do Batch Operations
](#bucket-key-ex-create-job)
+ [

### Executar seu trabalho do Batch Operations
](#bucket-key-ex-run-job)

### Definir sua política do IAM
<a name="bucket-key-ex-set-up-iam-policy"></a>

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Política** e **Criar política**.

1. Selecione a guia **JSON**. Selecione**Edit policy** (Editar política) e adicione a política do IAM de exemplo que aparece no bloco de código a seguir. 

   Depois de copiar o exemplo de política no [console do IAM](https://console.aws.amazon.com/iam/), substitua o seguinte:

   1. Substitua `amzn-s3-demo-source-bucket` pelo nome do bucket de origem para copiar objetos dele.

   1. Substitua `amzn-s3-demo-destination-bucket` pelo nome do bucket de destino para copiar objetos nele.

   1. Substitua `amzn-s3-demo-manifest-bucket/manifest-key` pelo nome do objeto de manifesto.

   1. Substitua `amzn-s3-demo-completion-report-bucket` pelo nome do bucket onde deseja salvar os relatórios de conclusão.

------
#### [ JSON ]

****  

   ```
     {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Sid": "CopyObjectsToEncrypt",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject",
             "s3:PutObjectTagging",
             "s3:PutObjectAcl",
             "s3:PutObjectVersionTagging",
             "s3:PutObjectVersionAcl",
             "s3:GetObject",
             "s3:GetObjectAcl",
             "s3:GetObjectTagging",
             "s3:GetObjectVersion",
             "s3:GetObjectVersionAcl",
             "s3:GetObjectVersionTagging"
           ],
           "Resource": [
             "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
             "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
           ]
         },
         {
           "Sid": "ReadManifest",
           "Effect": "Allow",
           "Action": [
             "s3:GetObject",
             "s3:GetObjectVersion"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest-key"
         },
         {
           "Sid": "WriteReport",
           "Effect": "Allow",
           "Action": [
             "s3:PutObject"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
         }
       ]
     }
   ```

------

1. Escolha **Next: Tags (Próximo: tags)**.

1. Adicione quaisquer tags desejadas (opcional) e escolha **Next: Review** (Próximo: Revisão).

1. Adicione um nome para a política e, opcionalmente, uma descrição. Em seguida, escolha **Create policy** (Criar política).

1. Selecione **Review policy** (Revisar política) e, em seguida, escolha, **Save changes** (Salvar alterações).

1. Com sua política do S3 Batch Operations agora concluída, o console retorna você à página **Policies** (Políticas) do IAM. Filtre o nome da política, escolha o botão à esquerda do nome da política, escolha o botão **Policy actions** (Ações da política) e escolha **Attach** (Anexar). 

   Para anexar a política recém-criada a uma função do IAM, selecione os usuários, grupos ou funções apropriados em sua conta e escolha **Attach policy** (Anexar política). Isso levará você de volta ao console do IAM.

### Configurar sua função do IAM do Batch Operations
<a name="bucket-key-ex-set-up-iam-role"></a>

1. No painel de navegação do [console do IAM](https://console.aws.amazon.com/iam/), selecione **Perfis** e escolha **Criar perfil**.

1. Selecione **AWS service (Serviço da AWS)**, **S3** e **Operações em Lote do S3)**. Então, escolha **Próximo: Permissões**.

1. Comece a inserir o nome da **política** do IAM que acabou de criar. Marque a caixa de seleção ao lado do nome da política quando ela for exibida e escolha **Next: Tags** (Próximo: Tags).

1. (Opcional) Adicione tags ou mantenha os campos de chave e valor em branco para este exercício. Selecione **Next: Review**.

1. Insira um nome de função e aceite a descrição padrão ou adicione a sua própria. Selecione **Create role**.

1. Certifique-se de que o usuário que está criando o trabalho tenha as permissões no exemplo a seguir. 

   Substitua `account-id` por seu ID da Conta da AWS e `IAM-role-name` pelo nome que você planeja aplicar ao perfil do IAM que você criará na etapa de criação do trabalho das Operações em Lote posteriormente. Para obter mais informações, consulte [Conceder permissões para operações em lote](batch-ops-iam-role-policies.md).

   ```
               {
               "Sid": "AddIamPermissions",
               "Effect": "Allow",
               "Action": [
               "iam:GetRole",
               "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::account-id:role/IAM-role-name"
               }
   ```

### Habilitar chaves de bucket do S3 para um bucket existente
<a name="bucket-key-ex-enable-s3-bucket-key-on-a-bucket"></a>

1. Abra o console do Amazon S3, em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Na lista **Buckets**, escolha o bucket para o qual você deseja ativar uma chave de bucket do S3.

1. Escolha **Properties (Propriedades)**.

1. Em **Default encryption (Criptografia padrão)**, escolha **Edit (Editar)**.

1. Em **Tipo de criptografia**, você pode escolher entre **Chaves gerenciadas do Amazon S3 (SSE-S3)** e **Chave do AWS Key Management Service (SSE-KMS)**. 

1. Se você escolheu **Chave do AWS Key Management Service (SSE-KMS)**, em **AWS KMS key**, poderá especificar a chave do AWS KMS por meio de uma das opções a seguir.
   + Para selecionar entre uma lista de chaves do KMS disponíveis, selecione **Escolher entre suas chaves do AWS KMS**. Na lista de chaves disponíveis, selecione uma chave do KMS de criptografia simétrica na mesma região que seu bucket. A chave gerenciada pela AWS (`aws/s3`) e as chaves gerenciadas pelo cliente são exibidas na lista.
   + Para inserir o ARN da chave do KMS, selecione **Inserir ARN da chave do AWS KMS** e insira o ARN da chave do KMS no campo exibido.
   + Para criar uma chave gerenciada pelo cliente no console do AWS KMS, selecione **Criar uma chave do KMS**.

1. Em **Bucket key** (Chave do bucket), escolha **Enable** (Habilitar) e, em seguida, escolha **Save changes** (Salvar alterações).

Agora que a chave de bucket do S3 está habilitada no nível do bucket, os objetos carregados, modificados ou copiados nesse bucket herdarão essa configuração de criptografia por padrão. Isso inclui objetos copiados usando Operações em Lote do Amazon S3.

### Criar seu trabalho do Batch Operations
<a name="bucket-key-ex-create-job"></a>

1. Abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação, escolha **S3 Batch Operations** e, em seguida, escolha **Create Job** (Criar trabalho).

1. Selecione a **Region** (Região) onde você armazena seus objetos e escolha **CSV** como o tipo de manifesto.

1. Insira o caminho ou navegue para o arquivo de manifesto CSV criado anteriormente a partir dos resultados do S3 Select (ou Athena). Se o manifesto contiver IDs de versão, marque essa caixa. Escolha **Next (Próximo)**.

1. Selecione a operação **Copy** (Copiar) e escolha o bucket de destino da cópia. Você pode manter a criptografia no lado do servidor desabilitada. Desde que o destino do bucket tenha o recurso de chaves de bucket do S3 habilitado, a operação de cópia aplicará chaves de bucket do S3 no bucket de destino.

1. (Opcional) Escolha uma classe de armazenamento e os outros parâmetros conforme desejado. Os parâmetros especificados nesta etapa se aplicam a todas as operações executadas nos objetos listados no manifesto. Escolha **Próximo**.

1. Para a criptografia no lado do servidor, siga estas etapas: 

   1. Em **Criptografia do lado do servidor**, selecione uma das seguintes opções:
      + Para manter as configurações de bucket para a criptografia padrão de objetos no lado do servidor ao armazená-los no Amazon S3, selecione **Não especificar uma chave de criptografia**. Desde que o destino do bucket tenha o recurso de chaves de bucket do S3 ativado, a operação de cópia aplicará uma chave de bucket do S3 ao bucket de destino.
**nota**  
Se a política de bucket para o destino especificado exigir que os objetos sejam criptografados antes de armazená-los no Amazon S3, você deverá especificar uma chave de criptografia. Caso contrário, ocorrerá uma falha na cópia de objetos no destino.
      + Para criptografar objetos antes de armazená-los no Amazon S3, selecione **Especificar uma chave de criptografia**.

   1. Em **Configurações de criptografia**, se você selecionar **Especificar uma chave de criptografia**, deverá escolher **Usar configurações do bucket de destino para criptografia padrão** ou **Substituir configurações do bucket de destino para criptografia padrão**.

   1. Se você selecionar **Substituir configurações do bucket de destino para criptografia padrão**, deverá definir as configurações de criptografia a seguir.

      1. Em **Tipo de criptografia**, você deve escolher **Chaves gerenciadas do Amazon S3 (SSE-S3)** ou **Chave do AWS Key Management Service (SSE-KMS)**. A SSE-S3 usa uma das criptografias de bloco mais fortes: o padrão de criptografia avançada de 256 bits (AES-256) para criptografar cada objeto. A SSE-KMS oferece mais controle sobre sua chave. Para obter mais informações, consulte [Usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)](UsingServerSideEncryption.md) e [Usar criptografia do lado do servidor com o AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

      1. Se você selecionar **Chave do AWS Key Management Service (SSE-KMS)**, em **AWS KMS key**, poderá especificar sua AWS KMS key por meio de uma das opções a seguir.
         + Para escolher em uma lista de chaves do KMS disponíveis, selecione **Escolher entre suas AWS KMS keys** e, depois, escolha uma chave do KMS de criptografia simétrica na mesma região que seu bucket. A chave gerenciada pela AWS (`aws/s3`) e as chaves gerenciadas pelo cliente são exibidas na lista.
         + Para inserir o ARN da chave do KMS, selecione **Inserir ARN da chave do AWS KMS** e insira o ARN da chave do KMS no campo exibido.
         + Para criar uma chave gerenciada pelo cliente no console do AWS KMS, selecione **Criar uma chave do KMS**.

      1. Em **Bucket key** (Chave do bucket), escolha **Enable** (Ativar). A operação de cópia aplicará uma chave do bucket do S3 no bucket de destino.

1. Dê uma descrição ao seu trabalho (ou mantenha o padrão), defina seu nível de prioridade, escolha um tipo de relatório e especifique o **Path to completion report destination** (Caminho para destino do relatório de conclusão).

1. Na seção **Permissions** (Permissões), certifique-se de escolher a função do IAM do Batch Operations definida anteriormente. Escolha **Next (Próximo)**.

1. Em **Review** (Revisão), verifique as configurações. Se precisar fazer alterações, escolha **Previous** (Anterior). Depois de confirmar as configurações do Batch Operations, escolha **Create job** (Criar trabalho). 

   Para obter mais informações, consulte [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md).

### Executar seu trabalho do Batch Operations
<a name="bucket-key-ex-run-job"></a>

O assistente de configuração retorna você automaticamente à seção S3 Batch Operations do console do Amazon S3. Suas novas transições de trabalho do estado **New** (Novo) para o estado **Preparing** (Preparação) como S3 inicia o processo. Durante o estado de preparação, o S3 lê o manifesto do trabalho, verifica se há erros e calcula o número de objetos.

1. Escolha o botão de atualização no console do Amazon S3 para verificar o progresso. Dependendo do tamanho do manifesto, a leitura pode levar minutos ou horas.

1. Quando o S3 termina de ler o manifesto do trabalho, o trabalho é movido para o estado **Awaiting your confirmation** (Aguardando sua confirmação). Escolha o botão de opção à esquerda da ID do trabalho e escolha **Run job** (Executar trabalho).

1. Verifique as configurações do trabalho e escolha **Run job** (Executar trabalho) no canto inferior direito.

   Depois que o trabalho começar a ser executado, você poderá escolher o botão de atualizar para verificar o andamento na exibição do painel do console ou selecionando o trabalho específico.

1. Quando o trabalho é concluído, você pode exibir as contagens de objetos **Successful** (Com êxito) e **Failed** (Com falha) para confirmar que tudo foi executado conforme esperado. Se você ativou relatórios de trabalhos, verifique o relatório do trabalho para saber a causa exata de qualquer operação com falha.

   Você também pode executar essas etapas usando a AWS CLI, AWS SDKs ou a API REST do Amazon S3. Para obter mais informações sobre como rastrear o status de um trabalho e os relatórios de conclusão, consulte [Monitoramento de relatórios de status e conclusão](batch-ops-job-status.md).

Para obter exemplos que mostram a operação de cópia com tags usando a AWS CLI e o AWS SDK para Java, consulte [Criar um trabalho do Operações em lote com tags de trabalho usadas para rotulagem](batch-ops-tags-create.md).

# Calcular somas de verificação
<a name="batch-ops-compute-checksums"></a>

Você pode o recurso Operações em Lote do S3 com a operação **Calcular soma de verificação** para realizar cálculos de soma de verificação para objetos armazenados em repouso no Amazon S3. A operação **Calcular soma de verificação** calcula somas de verificação de objetos que você pode usar para validar a integridade dos dados sem baixar nem restaurar objetos para dados armazenados. É possível usar a operação **Calcular soma de verificação** para os tipos de soma de verificação composta e de objeto completo para todos os algoritmos de soma de verificação compatíveis.

Com a operação **Calcular soma de verificação**, você pode processar bilhões de objetos por meio de uma única solicitação de trabalho. Essa operação em lote pode ser usada com todas as classes de armazenamento do S3, independentemente do tamanho do objeto. Para criar um trabalho de **cálculo de soma de verificação**, use o console do Amazon S3, a AWS Command Line Interface (AWS CLI), os SDKs da AWS ou a API REST do Amazon S3.

Ao [habilitar o registro em log de acesso ao servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html), você também pode receber entradas de log sobre seu trabalho de **cálculo de soma de verificação**. A operação de trabalho **Calcular soma de verificação** emite eventos de logs de acesso ao servidor separados após a conclusão dos cálculos de soma de verificação. Essas entradas de log seguem o [formato de registro em log de acesso ao servidor do S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html) padrão e incluem campos, como tipo de operação, carimbo de data/hora, [códigos de erro](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) e o ID do trabalho de **cálculo de soma de verificação** correspondente. Esse registro em log fornece uma trilha de auditoria das atividades de verificação de soma de verificação realizadas em seus objetos, ajudando você a rastrear e verificar as operações de integridade dos dados. 

**nota**  
A operação **Calcular soma de verificação** não permite criptografia do lado do servidor com objetos criptografados por chaves de criptografia fornecidas pelo cliente (SSE-C). No entanto, você pode usar a operação **Calcular soma de verificação** com objetos criptografados usando a [criptografia do lado do servidor com chaves gerenciadas pelo S3 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) e da criptografia do lado do servidor com o AWS Key Management Service (DSSE-KMS). Verifique se você [concedeu as permissões adequadas do AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#require-sse-kms) para realizar a operação **Calcular soma de verificação**.

Para começar a usar a operação **Calcular soma de verificação** usando o recurso Operações em Lote, você pode:
+ Criar um arquivo de manifesto manualmente.
+ Use um manifesto existente.
+ Instruir o recurso Operações em Lote para que gere um manifesto automaticamente com base nos critérios de filtro que você [especifica quando cria seu trabalho](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-create-job.html#specify-batchjob-manifest).

Em seguida, envie sua solicitação de trabalho de **cálculo de soma de verificação** e monitore o respectivo status. Depois que o trabalho de **cálculo de soma de verificação** for concluído, você receberá automaticamente um relatório de conclusão no bucket de destino especificado. Esse relatório de conclusão contém informações de soma de verificação para cada objeto no bucket, permitindo que você verifique a consistência de dados. Para ter mais informações sobre como usar esse relatório de conclusão, consulte [Monitoramento de relatórios de status e conclusão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html).

Para ter mais informações sobre os recursos de **cálculo de soma de verificação** e como usar a operação **Calcular soma de verificação** no console, consulte [Verificar a integridade do objeto para dados em repouso no Amazon S3](checking-object-integrity-at-rest.md). Para ter informações sobre como enviar solicitações REST para a operação **Calcular soma de verificação**, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DescribeJob.html) e [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) na *Referência de API do Amazon S3*.

As seções a seguir explicam como começar a usar as a operação **Calcular soma de verificação** com o recurso Operações em Lote do S3.

**Topics**
+ [

## Considerações sobre a operação **Calcular soma de verificação** do recurso Operações em Lote do S3
](#batch-ops-compute-checksum-considerations)
+ [

## Relatórios de conclusão do recurso Operações em Lote do S3
](#batch-ops-compute-checksum-completion-report)

## Considerações sobre a operação **Calcular soma de verificação** do recurso Operações em Lote do S3
<a name="batch-ops-compute-checksum-considerations"></a>

Antes de usar a operação **Calcular soma de verificação**, analise a seguinte lista de considerações:
+ 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. Se o ID da versão não for especificado, a solicitação de **cálculo de soma de verificação** realizará a operação na versão mais recente do objeto.
+ Para receber detalhes da operação **Calcular soma de verificação** em seus [logs de acesso ao servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html), primeiro é necessário [habilitar o registro em log de acesso ao servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html) no bucket de origem e especificar um bucket de destino para armazenar os logs. O bucket de destino deve estar na mesma Região da AWS e na mesma Conta da AWS que o bucket de origem. Após a configuração do registro em log de acesso ao servidor, a operação **Calcular soma de verificação** gera [registros de log](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields) que incluem campos padrão, como tipo de operação, código de status HTTP, [códigos de erro do S3](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList), carimbos de data/hora e o ID do trabalho de **cálculo de soma de verificação** correspondente. A operação **Calcular soma de verificação** é executada de forma assíncrona. Por isso, as [entradas de log](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html#log-record-fields) usam um ID de trabalho de **cálculo de soma de verificação**, em vez de um ID de solicitação, nas respectivas entradas de log.
+ A geração do relatório pode levar algumas horas para objetos armazenados.
+ Para as seguintes classes de armazenamento S3 Glacier, o trabalho de **cálculo de soma de verificação** pode levar até uma semana para ser concluído:
  + S3 Glacier Flexible Retrieval
  + S3 Glacier Deep Archive
+ Para buckets em que o relatório de conclusão será gravado, você deve usar a [condição do proprietário do bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-when-to-use) ao executar a operação **Calcular soma de verificação**. Se o proprietário real do bucket não corresponder ao proprietário do bucket esperado da solicitação de trabalho enviada, o trabalho falhará. Para obter uma lista de operações do S3 que não permitem a condição de proprietário do bucket, consulte [Restrições e limitações](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html#bucket-owner-condition-restrictions-limitations).

## Relatórios de conclusão do recurso Operações em Lote do S3
<a name="batch-ops-compute-checksum-completion-report"></a>

Ao criar um trabalho de **cálculo de soma de verificação**, você pode solicitar um relatório de conclusão do recurso Operações em Lote do S3. Esse arquivo CSV mostra objetos, códigos de sucesso ou falha, saídas e descrições. Para ter mais informações sobre o monitoramento de trabalhos e relatórios de conclusão, consulte [Relatórios de conclusão](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-job-status.html#batch-ops-completion-report).

# Excluir todas as tags de objeto
<a name="batch-ops-delete-object-tagging"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação **Excluir todas as tags de objeto** remove todos os conjuntos de tags de objeto do Amazon S3 atualmente associados aos objetos listados no manifesto. O Operações em Lote do S3 não permite a exclusão de tags de objeto enquanto mantém outras tags no lugar. 

Se os objetos no manifesto estiverem em um bucket versionado, você poderá remover os conjuntos de tags de uma versão específica de um objeto. Para fazer isso, você deve especificar um ID de versão para cada objeto no manifesto. Se você não incluir um ID de versão para um objeto, as Operações em lote do S3 removerão o conjunto de tags da versão mais recente de cada objeto. Para obter mais informações sobre o recurso Operações em lote, consulte [Especificar um manifesto](batch-ops-create-job.md#specify-batchjob-manifest). 

Consulte mais detalhes sobre a marcação de objetos em [Categorizar objetos usando tags](object-tagging.md) neste guia e em [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) e [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) na *Referência de API do Amazon Simple Storage Service*.

**Atenção**  
A execução deste trabalho remove todos os conjuntos de tags de objeto em cada objeto listado no manifesto. 

Para usar o console a fim de criar um trabalho de **Excluir todas as tags de objeto**, consulte [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md).

## Restrições e limitações
<a name="batch-ops-delete-object-tagging-restrictions"></a>

Quando você usa o Operações em Lote para excluir tags de objeto, as seguintes restrições e limitações se aplicam:
+ O perfil do AWS Identity and Access Management (IAM) que você especificar para executar o trabalho deverá ter permissões para executar a operação `DeleteObjectTagging` do Amazon S3 subjacente. Para obter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) na *Referência da API do Amazon Simple Storage Service*.
+ O Operações em Lote do S3 usam a operação [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) do Amazon S3 para remover os conjuntos de tags de cada objeto no manifesto. Todas as restrições e limitações que se aplicam à operação subjacente também se aplicam a trabalhos das Operações em lote do S3. 
+ Um único trabalho de exclusão da marcação de objetos pode comportar um manifesto com até 20 bilhões de objetos.

# Invocar função do AWS Lambda
<a name="batch-ops-invoke-lambda"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação do Operações em Lote da **função Invocar do AWS Lambda** inicia as funções do AWS Lambda para executar ações personalizadas em objetos que estão listados em um manifesto. Esta seção descreve como criar uma função do Lambda para uso com as operações em lote do S3 e como criar um trabalho para chamar a função. O trabalho de Operações em lote do S3 usa a operação `LambdaInvoke` para executar uma função do Lambda em cada objeto listado em um manifesto.

Você pode trabalhar com o Operações em Lote do S3 usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), SDKs da AWS ou a API REST do Amazon S3. Para obter mais informações sobre como usar o Lambda, consulte [Conceitos básicos do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) no *Guia do desenvolvedor do AWS Lambda*. 

As seções a seguir explicam como começar a usar as operações em lote do S3 com o Lambda.

**Topics**
+ [

## Usar o Lambda com o Operações em Lote
](#batch-ops-invoke-lambda-using)
+ [

## Criar uma função do Lambda para uso com operações em lote do S3
](#batch-ops-invoke-lambda-custom-functions)
+ [

## Criar um trabalho de operações em lote do S3 que chama uma função do Lambda
](#batch-ops-invoke-lambda-create-job)
+ [

## Fornecer informações em nível de tarefa em manifestos do Lambda
](#storing-task-level-information-in-lambda)
+ [

## Tutorial Operações em lote do S3
](#batch-ops-tutorials-lambda)

## Usar o Lambda com o Operações em Lote
<a name="batch-ops-invoke-lambda-using"></a>

Ao usar o S3 Batch Operations com o AWS Lambda, crie novas funções do Lambda especificamente para uso com o S3 Batch Operations. Não é possível reutilizar funções baseadas em eventos do Amazon S3 existentes com operações em lote do S3. As funções de eventos só podem receber mensagens; elas não retornam mensagens. As funções do Lambda usadas com operações em lote do S3 devem aceitar e retornar mensagens. Para obter mais informações sobre como usar o Lambda com eventos do Amazon S3, consulte [Uso do AWS Lambda com o Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html) no *Guia do desenvolvedor do AWS Lambda*.

Crie um trabalho de operações em lote do S3 que chame a função do Lambda. O trabalho executa a mesma função do Lambda em todos os objetos listados no manifesto. É possível controlar quais versões da função do Lambda usar durante o processamento dos objetos no manifesto. As operações em lote do S3 são compatíveis com nomes de recursos da Amazon (ARNs) não qualificados, aliases e versões específicas. Para obter mais informações, consulte [Introdução ao versionamento do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html) no *Guia do desenvolvedor do AWS Lambda*.

Se você fornecer ao trabalho de operações em lote do S3 um ARN de função que usa um alias ou o qualificador `$LATEST`, e atualizar a versão indicada por um deles, as operações em lote do S3 começarão a chamar a nova versão dessa função do Lambda. Isso pode ser útil quando você quer atualizar a funcionalidade durante um trabalho grande. Se você não quer que o Operações em Lote do S3 altere a versão usada, forneça a versão específica no parâmetro `FunctionARN` ao criar o trabalho.

Um único trabalho do AWS Lambda com o recurso Operações em Lote do S3 pode comportar um manifesto com até 20 bilhões de objetos.

### Usar o Lambda e o Operações em Lote com buckets de diretório
<a name="batch-ops-invoke-lambda-directory-buckets"></a>

Os buckets de diretório são um tipo de bucket do Amazon S3 projetado para workloads ou aplicações essenciais à performance que requerem latência consistente inferior a dez milissegundos. Para obter mais informações, consulte [Directory buckets](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html).

Há requisitos especiais para usar a funcionalidade Operações em Lote para invocar funções do Lambda que atuam em buckets de diretório. Por exemplo, você deve estruturar a solicitação do Lambda usando um esquema JSON atualizado e especificar [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-InvocationSchemaVersion](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-InvocationSchemaVersion) 2.0 (não 1.0) ao criar o trabalho. Esse esquema atualizado permite que você especifique pares opcionais de chave e valor para [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-UserArguments](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_LambdaInvokeOperation.html#AmazonS3-Type-control_LambdaInvokeOperation-UserArguments), que você pode usar para modificar determinados parâmetros de funções do Lambda existentes. Consulte mais informações em [Automate object processing in Amazon S3 directory buckets with S3 Batch Operations and AWS Lambda](https://aws.amazon.com/blogs/storage/automate-object-processing-in-amazon-s3-directory-buckets-with-s3-batch-operations-and-aws-lambda/) no Blog de armazenamento da AWS.

### Códigos de resultado e resposta
<a name="batch-ops-invoke-lambda-response-codes"></a>

A funcionalidade Operações em Lote do S3 invoca a função do Lambda com uma ou mais chaves, cada uma com um `TaskID` associado. A funcionalidade Operações em Lote do S3 espera um código de resultado por chave das funções do Lambda. Todos os IDs de tarefas enviados na solicitação que não forem retornados com um código de resultado por chave receberão o código de resultado do campo `treatMissingKeysAs`. `treatMissingKeysAs` é um campo de solicitação opcional e o padrão é `TemporaryFailure`. A tabela a seguir contém os outros códigos de resultado e valores possíveis para o campo `treatMissingKeysAs`. 


| Código de resposta | Descrição | 
| --- | --- | 
| Succeeded | A tarefa foi concluída normalmente. Se você solicitou um relatório de conclusão do trabalho, a string do resultado da tarefa será incluída no relatório. | 
| TemporaryFailure | A tarefa sofreu uma falha temporária e será redirecionada antes da conclusão do trabalho. A string de resultado é ignorada. Se esse for o redirecionamento final, a mensagem de erro será incluída no relatório final. | 
| PermanentFailure | A tarefa sofreu uma falha permanente. Se você solicitou um relatório de conclusão do trabalho, a tarefa será marcada como Failed e incluirá a string da mensagem de erro. As strings de resultado de tarefas com falha são ignoradas. | 

## Criar uma função do Lambda para uso com operações em lote do S3
<a name="batch-ops-invoke-lambda-custom-functions"></a>

Essa seção fornece um exemplo de permissões do AWS Identity and Access Management (IAM) que devem ser usadas com a função do Lambda. Ela também contém um exemplo de função do Lambda para uso com operações em lote do S3. Se você nunca criou uma função do Lambda antes, consulte [Tutorial: Como usar um trigger do Amazon S3 para invocar uma função do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) no *Guia do desenvolvedor do AWS Lambda*.

Crie funções do Lambda especificamente para uso com as operações em lote do S3. Não é possível reutilizar funções do Lambda baseadas em eventos do Amazon S3, pois as funções do Lambda que são usadas para o Operações em Lote do S3 devem aceitar e mostrar campos de dados especiais. 

**Importante**  
Funções do AWS Lambda escritas em Java aceitam interfaces de manipulador [https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestHandler.java](https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestHandler.java) ou [https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestStreamHandler.java](https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/RequestStreamHandler.java). No entanto, para oferecer suporte ao formato de solicitação e resposta do S3 Batch Operations, o AWS Lambda requer a interface `RequestStreamHandler` para serialização e desserialização personalizadas de uma solicitação e resposta. Essa interface permite que o Lambda passe um InputStream e um OutputStream para o método Java `handleRequest`.   
Use a interface `RequestStreamHandler` ao usar funções do Lambda com operações em lote do S3. Se você usar uma interface `RequestHandler`, o trabalho em lote falhará com “Invalid JSON returned in Lambda payload (JSON inválido retornado no payload do Lambda)” no relatório de conclusão.   
Para obter mais informações, consulte [Interfaces do manipulador](https://docs.aws.amazon.com//lambda/latest/dg/java-handler.html#java-handler-interfaces) no *Guia do usuário do AWS Lambda*.

### Exemplo de permissões do IAM
<a name="batch-ops-invoke-lambda-custom-functions-iam"></a>

Veja a seguir exemplos das permissões do IAM necessárias para usar uma função do Lambda com operações em lote do S3. 

**Example Política de confiança de operações em lote do S3**  
Veja a seguir um exemplo da política de confiança que pode ser usada para a função do IAM de operações em lote. Essa função do IAM é especificada quando você cria o trabalho e concede às operações em lote permissão para assumir a função do IAM.    
****  

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

**Example Política do IAM do Lambda**  
Veja a seguir um exemplo de uma política do IAM que concede permissão às operações em lote do S3 para chamar a função do Lambda e ler o manifesto de entrada.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "BatchOperationsLambdaPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "lambda:InvokeFunction"
            ],
            "Resource": "*"
        }
    ]
}
```

### Exemplo de solicitação e resposta
<a name="batch-ops-invoke-lambda-custom-functions-request"></a>

Esta seção fornece exemplos de solicitação e resposta para a função do Lambda.

**Example Solicitação**  
Veja a seguir um exemplo do JSON de uma solicitação para a função do Lambda.  

```
{
    "invocationSchemaVersion": "1.0",
    "invocationId": "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
    "job": {
        "id": "f3cc4f60-61f6-4a2b-8a21-d07600c373ce"
    },
    "tasks": [
        {
            "taskId": "dGFza2lkZ29lc2hlcmUK",
            "s3Key": "customerImage1.jpg",
            "s3VersionId": "1",
            "s3BucketArn": "arn:aws:s3:us-east-1:0123456788:amzn-s3-demo-bucket1"
        }
    ]
}
```

**Example Resposta**  
Veja a seguir um exemplo do JSON de uma resposta para a função do Lambda.  

```
{
  "invocationSchemaVersion": "1.0",
  "treatMissingKeysAs" : "PermanentFailure",
  "invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo",
  "results": [
    {
      "taskId": "dGFza2lkZ29lc2hlcmUK",
      "resultCode": "Succeeded",
      "resultString": "[\"Mary Major", \"John Stiles\"]"
    }
  ]
}
```

### Exemplo de função do Lambda para operações em lote do S3
<a name="batch-ops-invoke-lambda-custom-functions-example"></a>

O exemplo Lambda em Python a seguir remove um marcador de exclusão de um objeto versionado.

Como mostra o exemplo, as chaves das operações em lote do S3 são codificadas por URL. Para usar o Amazon S3 com outros produtos da AWS, é importante que seu URL decodifique a chave passada pelo S3 Batch Operations.

```
import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel("INFO")

s3 = boto3.client("s3")


def lambda_handler(event, context):
    """
    Removes a delete marker from the specified versioned object.

    :param event: The S3 batch event that contains the ID of the delete marker
                  to remove.
    :param context: Context about the event.
    :return: A result structure that Amazon S3 uses to interpret the result of the
             operation. When the result code is TemporaryFailure, S3 retries the
             operation.
    """
    # Parse job parameters from Amazon S3 batch operations
    invocation_id = event["invocationId"]
    invocation_schema_version = event["invocationSchemaVersion"]

    results = []
    result_code = None
    result_string = None

    task = event["tasks"][0]
    task_id = task["taskId"]

    try:
        obj_key = parse.unquote_plus(task["s3Key"], encoding="utf-8")
        obj_version_id = task["s3VersionId"]
        bucket_name = task["s3BucketArn"].split(":")[-1]

        logger.info(
            "Got task: remove delete marker %s from object %s.", obj_version_id, obj_key
        )

        try:
            # If this call does not raise an error, the object version is not a delete
            # marker and should not be deleted.
            response = s3.head_object(
                Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id
            )
            result_code = "PermanentFailure"
            result_string = (
                f"Object {obj_key}, ID {obj_version_id} is not " f"a delete marker."
            )

            logger.debug(response)
            logger.warning(result_string)
        except ClientError as error:
            delete_marker = error.response["ResponseMetadata"]["HTTPHeaders"].get(
                "x-amz-delete-marker", "false"
            )
            if delete_marker == "true":
                logger.info(
                    "Object %s, version %s is a delete marker.", obj_key, obj_version_id
                )
                try:
                    s3.delete_object(
                        Bucket=bucket_name, Key=obj_key, VersionId=obj_version_id
                    )
                    result_code = "Succeeded"
                    result_string = (
                        f"Successfully removed delete marker "
                        f"{obj_version_id} from object {obj_key}."
                    )
                    logger.info(result_string)
                except ClientError as error:
                    # Mark request timeout as a temporary failure so it will be retried.
                    if error.response["Error"]["Code"] == "RequestTimeout":
                        result_code = "TemporaryFailure"
                        result_string = (
                            f"Attempt to remove delete marker from  "
                            f"object {obj_key} timed out."
                        )
                        logger.info(result_string)
                    else:
                        raise
            else:
                raise ValueError(
                    f"The x-amz-delete-marker header is either not "
                    f"present or is not 'true'."
                )
    except Exception as error:
        # Mark all other exceptions as permanent failures.
        result_code = "PermanentFailure"
        result_string = str(error)
        logger.exception(error)
    finally:
        results.append(
            {
                "taskId": task_id,
                "resultCode": result_code,
                "resultString": result_string,
            }
        )
    return {
        "invocationSchemaVersion": invocation_schema_version,
        "treatMissingKeysAs": "PermanentFailure",
        "invocationId": invocation_id,
        "results": results,
    }
```

## Criar um trabalho de operações em lote do S3 que chama uma função do Lambda
<a name="batch-ops-invoke-lambda-create-job"></a>

Ao criar um trabalho de operações em lote do S3 para chamar uma função do Lambda, forneça o seguinte:
+ O ARN da função do Lambda (que pode incluir o alias da função ou o número de uma versão específica)
+ Uma função do IAM com permissão para invocar a função
+ O parâmetro de ação `LambdaInvokeFunction`

Para obter mais informações sobre como criar um trabalho de operações em lote do S3, consulte [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md) e [Operações suportadas pelo S3 Batch Operations](batch-ops-operations.md).

O exemplo a seguir cria um trabalho do Operações em Lote do S3 que invoca uma função do Lambda usando a AWS CLI. Para usar esse exemplo, substitua os *`user input placeholders`* por suas próprias informações.

```
aws s3control create-job
    --account-id account-id
    --operation  '{"LambdaInvoke": { "FunctionArn": "arn:aws:lambda:region:account-id:function:LambdaFunctionName" } }'
    --manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820","Fields":["Bucket","Key"]},"Location":{"ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket","ETag":"ManifestETag"}}'
    --report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-bucket","Format":"Report_CSV_20180820","Enabled":true,"Prefix":"ReportPrefix","ReportScope":"AllTasks"}'
    --priority 2
    --role-arn arn:aws:iam::account-id:role/BatchOperationsRole
    --region region
    --description "Lambda Function"
```

## Fornecer informações em nível de tarefa em manifestos do Lambda
<a name="storing-task-level-information-in-lambda"></a>

Ao usar funções do AWS Lambda com o Operações em Lote do S3, talvez você queira que dados adicionais acompanhem cada tarefa em que são operados. Por exemplo, você pode querer fornecer uma chave de objeto de origem e uma nova chave de objeto. A função do Lambda pode copiar a chave de origem em um novo bucket do S3 com um novo nome. Por padrão, o Operações em Lote permite especificar apenas o bucket de destino e uma lista de chaves de origem no manifesto de entrada do trabalho. Os exemplos a seguir descrevem como você pode incluir dados adicionais no manifesto para poder executar funções do Lambda mais complexas.

Para especificar parâmetros por chave no manifesto de operações em lote do S3 para usar no código da função do Lambda, use o seguinte formato JSON codificado por URL. O campo `key` é passado para a função do Lambda como se fosse uma chave de objeto do Amazon S3. Porém, ele pode ser interpretado pela função do Lambda como contendo outros valores ou várias chaves, conforme mostrado nos exemplos a seguir. 

**nota**  
O número máximo de caracteres para o campo `key` no manifesto é 1.024.

**Example – Manifesto que substitui as “chaves do Amazon S3” por strings JSON**  
A versão codificada por URL deve ser fornecida para operações em lote do S3.  

```
amzn-s3-demo-bucket,{"origKey": "object1key", "newKey": "newObject1Key"}
amzn-s3-demo-bucket,{"origKey": "object2key", "newKey": "newObject2Key"}
amzn-s3-demo-bucket,{"origKey": "object3key", "newKey": "newObject3Key"}
```

**Example – Manifesto codificado por URL**  
Essa versão codificada por URL deve ser fornecida para operações em lote do S3. A versão não codificada em URL não funciona.  

```
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object1key%22%2C%20%22newKey%22%3A%20%22newObject1Key%22%7D
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object2key%22%2C%20%22newKey%22%3A%20%22newObject2Key%22%7D
amzn-s3-demo-bucket,%7B%22origKey%22%3A%20%22object3key%22%2C%20%22newKey%22%3A%20%22newObject3Key%22%7D
```

**Example função do Lambda com formato de manifesto que grava resultados no relatório de trabalho**  
Esse exemplo de manifesto codificado em URL contém chaves de objeto delimitadas por pipe para que a função do Lambda a seguir analise.  

```
amzn-s3-demo-bucket,object1key%7Clower
amzn-s3-demo-bucket,object2key%7Cupper
amzn-s3-demo-bucket,object3key%7Creverse
amzn-s3-demo-bucket,object4key%7Cdelete
```
Essa função do Lambda mostra como analisar uma tarefa delimitada por pipe que é codificada no manifesto do Operações em Lote do S3. A tarefa indica qual operação de revisão é aplicada ao objeto especificado.  

```
import logging
from urllib import parse
import boto3
from botocore.exceptions import ClientError

logger = logging.getLogger(__name__)
logger.setLevel("INFO")

s3 = boto3.resource("s3")


def lambda_handler(event, context):
    """
    Applies the specified revision to the specified object.

    :param event: The Amazon S3 batch event that contains the ID of the object to
                  revise and the revision type to apply.
    :param context: Context about the event.
    :return: A result structure that Amazon S3 uses to interpret the result of the
             operation.
    """
    # Parse job parameters from Amazon S3 batch operations
    invocation_id = event["invocationId"]
    invocation_schema_version = event["invocationSchemaVersion"]

    results = []
    result_code = None
    result_string = None

    task = event["tasks"][0]
    task_id = task["taskId"]
    # The revision type is packed with the object key as a pipe-delimited string.
    obj_key, revision = parse.unquote_plus(task["s3Key"], encoding="utf-8").split("|")
    bucket_name = task["s3BucketArn"].split(":")[-1]

    logger.info("Got task: apply revision %s to %s.", revision, obj_key)

    try:
        stanza_obj = s3.Bucket(bucket_name).Object(obj_key)
        stanza = stanza_obj.get()["Body"].read().decode("utf-8")
        if revision == "lower":
            stanza = stanza.lower()
        elif revision == "upper":
            stanza = stanza.upper()
        elif revision == "reverse":
            stanza = stanza[::-1]
        elif revision == "delete":
            pass
        else:
            raise TypeError(f"Can't handle revision type '{revision}'.")

        if revision == "delete":
            stanza_obj.delete()
            result_string = f"Deleted stanza {stanza_obj.key}."
        else:
            stanza_obj.put(Body=bytes(stanza, "utf-8"))
            result_string = (
                f"Applied revision type '{revision}' to " f"stanza {stanza_obj.key}."
            )

        logger.info(result_string)
        result_code = "Succeeded"
    except ClientError as error:
        if error.response["Error"]["Code"] == "NoSuchKey":
            result_code = "Succeeded"
            result_string = (
                f"Stanza {obj_key} not found, assuming it was deleted "
                f"in an earlier revision."
            )
            logger.info(result_string)
        else:
            result_code = "PermanentFailure"
            result_string = (
                f"Got exception when applying revision type '{revision}' "
                f"to {obj_key}: {error}."
            )
            logger.exception(result_string)
    finally:
        results.append(
            {
                "taskId": task_id,
                "resultCode": result_code,
                "resultString": result_string,
            }
        )
    return {
        "invocationSchemaVersion": invocation_schema_version,
        "treatMissingKeysAs": "PermanentFailure",
        "invocationId": invocation_id,
        "results": results,
    }
```

## Tutorial Operações em lote do S3
<a name="batch-ops-tutorials-lambda"></a>

O tutorial a seguir apresenta procedimentos completos para algumas tarefas do recurso Operações em Lote com o Lambda. Nesse tutorial, você aprenderá a configurar o Operações em Lote para invocar uma função do Lambda para transcodificação em lote de vídeos armazenados em um bucket de origem do S3. A função do Lambda chama o AWS Elemental MediaConvert para transcodificar os vídeos. 
+ [Tutorial: vídeos de transcodificação em lote com o Operações em Lote do S3](tutorial-s3-batchops-lambda-mediaconvert-video.md)

# Substituir todas as tags de objeto
<a name="batch-ops-put-object-tagging"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação **Substituir todas as tags de objeto** substitui as tags de objeto em cada objeto listado no manifesto. A tag de objeto do é um par de strings chave-valor que pode ser usado para armazenar metadados sobre um objeto.

Para criar um trabalho **Substituir todas as tags de objeto**, forneça um conjunto de tags que pretende aplicar. As Operações em lote do Amazon S3 aplica o mesmo conjunto de tags a cada objeto. O conjunto de tags que você fornece substitui os conjuntos de tags já associados aos objetos no manifesto. O Operações em Lote do S3 não permite adicionar tags a objeto, deixando as tags existentes no lugar.

Se os objetos em seu manifesto estiverem em um bucket versionado, você pode aplicar o conjunto de tags a versões específicas de cada objeto. Para fazer isso, especifique um ID de versão para cada objeto no manifesto. Se você não incluir um ID de versão para nenhum objeto, o Operações em Lote do S3 aplica o conjunto de tags à versão mais recente de cada objeto. Para obter mais informações sobre o recurso Operações em lote, consulte [Especificar um manifesto](batch-ops-create-job.md#specify-batchjob-manifest). 

Consulte mais informações sobre a marcação de objetos em [Categorizar objetos usando tags](object-tagging.md) neste guia e em [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html) e [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html) na *Referência de API do Amazon Simple Storage Service*.

Para criar um trabalho **Substituir todas as tags de objeto** usando o console, consulte [Criar um trabalho de operações em lote do S3](batch-ops-create-job.md).

## Restrições e limitações
<a name="batch-ops-set-tagging-restrictions"></a>

Quando você usa o Operações em Lote para substituir tags de objeto, as seguintes restrições e limitações se aplicam:
+ O perfil do AWS Identity and Access Management (IAM) que você especifica para executar o trabalho de operações em lote deve ter permissões para executar a operação `PutObjectTagging` subjacente. Consulte mais informações sobre as permissões necessárias em [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) na *Referência da API do Amazon Simple Storage Service*.
+ O Operações em Lote do S3 usa a operação [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html) do Amazon S3 para aplicar tags a cada objeto no manifesto. Todas as restrições e limitações que se aplicam à operação subjacente também se aplicam a trabalhos das Operações em lote do S3.
+ Um único trabalho de substituição de todas as tags de objeto pode comportar um manifesto com até 20 bilhões de objetos.

# Substituir lista de controle de acesso (ACL)
<a name="batch-ops-put-object-acl"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação **Substituir lista de controle de acesso (ACL)** substitui as listas de controle de acesso (ACLs) para cada objeto listado no manifesto. Ao usar ACLs, é possível definir quem pode acessar o objeto e quais ações podem ser executadas.

**nota**  
A maioria dos casos de uso modernos no Amazon S3 não exige mais o uso de ACLs. Recomendamos manter as ACLs desabilitadas, exceto em circunstâncias em que seja necessário controlar o acesso para cada objeto individualmente. Com as ACLs desabilitadas, é possível usar políticas para controlar o acesso a todos os objetos no bucket, independentemente de quem carregou os objetos para o bucket. Para obter mais informações, consulte [Controlar a propriedade de objetos e desabilitar ACLs para seu bucket](about-object-ownership.md).

O Operações em Lote do S3 é compatível com ACLs personalizadas que você define e com ACLs pré-configuradas fornecidas pelo Amazon S3 com um conjunto predefinido de permissões de acesso.

Se os objetos em seu manifesto estiverem em um bucket versionado, é possível aplicar as ACLs a versões específicas de cada objeto. Para fazer isso, especifique um ID de versão para cada objeto no manifesto. Se você não incluir um ID de versão para um objeto, o Operações em Lote do S3 aplicará a ACL à versão mais recente do objeto.

Consulte mais informações sobre ACLs no Amazon S3 em [Visão geral da lista de controle de acesso (ACL)](acl-overview.md).

**Bloqueio de acesso público do S3**  
Se quiser limitar o acesso público a todos os objetos em um bucket, recomendamos usar o Bloqueio de Acesso Público do Amazon S3 em vez de usar o Operações em Lote do S3 para aplicar ACLS. O Block Public Access pode limitar o acesso público a cada bucket ou à conta com uma única operação simples, que entra em vigor rapidamente. Esse comportamento torna o Bloqueio de Acesso Público do Amazon S3 uma melhor opção caso seu objetivo seja controlar o acesso público a todos os objetos em um bucket ou uma conta. Use o Operações em Lote do S3 somente quando precisar aplicar uma ACL personalizada a cada objeto no manifesto. Para obter mais informações sobre o S3 Block Public Access, consulte [Bloquear o acesso público ao armazenamento do Amazon S3](access-control-block-public-access.md).

**Propriedade de objeto do S3**  
Se os objetos no manifesto estiverem em um bucket que usa a configuração **Aplicada pelo proprietário do bucket** para Propriedade de Objetos, a operação **Substituir lista de controle de acesso (ACL)** poderá especificar apenas ACLs do objeto que concedem controle total ao proprietário do bucket. Nesse caso, a operação **Substituir lista de controle de acesso (ACL)** não pode conceder permissões de ACL de objeto a outros grupos ou Contas da AWS. Para obter mais informações, consulte [Controlar a propriedade de objetos e desabilitar ACLs para seu bucket](about-object-ownership.md).

## Restrições e limitações
<a name="batch-ops-put-object-acl-restrictions"></a>

Quando você usa o Operações em Lote para substituir ACLs, as seguintes restrições e limitações se aplicam: 
+ O perfil do AWS Identity and Access Management (IAM) especificado para executar o trabalho **Substituir lista de controle de acesso (ACL)** deve ter permissões para executar a operação `PutObjectAcl` subjacente do Amazon S3. Consulte mais informações sobre as permissões necessárias em [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html) na *Referência da API do Amazon Simple Storage Service*.
+ O S3 Batch Operations usa a operação `PutObjectAcl` do Amazon S3 para aplicar a ACL especificada a cada objeto no manifesto. Portanto, todas as restrições e limitações que se aplicam à operação `PutObjectAcl` subjacente também se aplicam a trabalhos **Substituir lista de controle de acesso (ACL)** do Operações em Lote do S3.
+ Um único trabalho de substituição da lista de controle de acesso pode comportar um manifesto com até 20 bilhões de objetos.

# Restaurar objetos com operações em lote
<a name="batch-ops-initiate-restore-object"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação **Restaurar** inicia solicitações de restauração dos objetos arquivados do Amazon S3 listados no manifesto. Os objetos a seguir devem ser restaurados para que possam ser acessados em tempo real:
+ Objetos arquivados nas classes de armazenamento S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive
+ Objetos arquivados por meio da classe de armazenamento do S3 Intelligent-Tiering nos níveis Acesso de arquivamento ou Acesso de arquivamento profundo

O uso de uma operação **Restaurar** ([https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html)) no trabalho do Operações em Lote do S3 resulta em uma solicitação `RestoreObject` para cada objeto especificado no manifesto.

**Importante**  
O trabalho **Restaurar** só *inicia* a solicitação para restaurar objetos. As Operações em lote do S3 relatam o trabalho como concluído para cada objeto depois que a solicitação é iniciada para aquele objeto. O Amazon S3 não atualiza o trabalho nem o notificará quando os objetos tiverem sido restaurados. No entanto, é possível usar notificações de eventos do S3 para receber notificações quando os objetos estiverem disponíveis no Amazon S3. Para obter mais informações, consulte [Notificações de eventos do Amazon S3](EventNotifications.md).

Ao criar um trabalho de **Restaurar** os seguintes argumentos estão disponíveis:

**ExpirationInDays**  
Esse argumento especifica por quanto tempo o objeto do S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive permanecerá disponível no Amazon S3. Os trabalhos de **Restaurar** voltados para objetos do S3 Glacier Flexible Retrieval e do S3 Glacier Deep Archive exigem que você defina `ExpirationInDays` como `1` ou superior.  
Não defina `ExpirationInDays` ao criar trabalhos de operação de **Restaurar** voltados a objetos dos níveis S3 Intelligent-Tiering Archive Access e Deep Archive Access. Os objetos nos níveis de acesso de arquivo S3 Intelligent-Tiering não estão sujeitos a uma data de validade da restauração; portanto, especificar `ExpirationInDays` provoca uma falha na solicitação `RestoreObject`.

**GlacierJobTier**  
O Amazon S3 pode restaurar objetos usando um destes três diferentes níveis de recuperação: `EXPEDITED`, `STANDARD` e `BULK`. No entanto, o recurso Operações em lote do S3 suporta apenas os níveis de recuperação `STANDARD` e `BULK`. Para receber mais informações sobre as diferenças entre os níveis de recuperação, consulte [Noções básicas sobre as opções de recuperação de arquivos](restoring-objects-retrieval-options.md).   
Para receber mais informações sobre preço para cada nível, consulte a seção **Solicitações e recuperações de dados** na página [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing/).

## Diferenças na restauração por meio do S3 Glacier e do S3 Intelligent-Tiering
<a name="batch-ops-initiate-restore-diff"></a>

A restauração de arquivos arquivados das classes de armazenamento S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive difere da restauração de arquivos da classe de armazenamento S3 Intelligent-Tiering nos níveis Acesso de arquivamento ou Acesso de arquivamento profundo.
+ Quando você restaura do S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive, uma *cópia* temporária do objeto é criada. O Amazon S3 exclui essa cópia após o término do valor especificado no argumento `ExpirationInDays`. Depois que essa cópia temporária for excluída, será preciso enviar uma solicitação de restauração adicional para acessar o objeto.
+ Ao restaurar objetos arquivados do S3 Intelligent-Tiering, *não* especifique o argumento `ExpirationInDays`. Quando você restaura um objeto do nível S3 Intelligent-Tiering Archive Access ou Deep Archive Access, o objeto faz a transição de volta ao nível S3 Intelligent-Tiering Frequent Access. Após no mínimo 90 dias consecutivos sem acesso, o objeto transita automaticamente para o nível Archive Access. Depois de um período mínimo de 180 dias consecutivos sem acesso, o objeto é movido automaticamente ao nível Deep Archive Access. 
+ Os trabalhos de operações em lote podem operar em objetos das classes de armazenamento S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive *ou* em objetos dos níveis S3 Intelligent-Tiering Archive Access e Deep Archive Access. As operações em lote não podem operar nos dois tipos de objetos arquivados no mesmo trabalho. Para restaurar objetos de ambos os tipos, você *deve* criar trabalhos de Operações em lote separados. 

## Sobrepor restaurações
<a name="batch-ops-initiate-restore-object-in-progress"></a>

Se o trabalho [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_S3InitiateRestoreObjectOperation.html) tentar restaurar um objeto que já esteja em processo de restauração, o Operações em Lote do S3 procederá da maneira indicada a seguir.

A operação de restauração será bem-sucedida para o objeto se uma das seguintes condições for verdadeira:
+ Quando comparado à solicitação de restauração já em andamento, o valor `ExpirationInDays` desse trabalho é o mesmo, e o valor `GlacierJobTier` é mais rápido.
+ A solicitação de restauração anterior já foi concluída, e o objeto está disponível no momento. Nesse caso, as operações em lote atualizam a data de validade do objeto restaurado para coincidir com o valor `ExpirationInDays` especificado na solicitação de restauração em andamento.

A operação apresenta falha para o objeto se uma das seguintes condições for verdadeira:
+ A solicitação de restauração já em andamento ainda não foi concluída, e a duração da restauração para esse trabalho (especificada pelo valor `ExpirationInDays`) é diferente da duração da restauração especificada na solicitação de restauração em andamento.
+ O nível de restauração para esse trabalho (especificado pelo valor `GlacierJobTier`) é o mesmo ou é mais lento do que o nível especificado na solicitação de restauração em andamento.

## Limitações
<a name="batch-ops-initiate-restore-object-limitations"></a>

Os trabalhos `S3InitiateRestoreObjectOperation` têm as seguintes limitações:
+ Você deve criar o trabalho na mesma região que os objetos arquivados.
+ O Operações em Lote do S3 não é compatível com o nível de recuperação `EXPEDITED`.
+ Um único trabalho de restauração de operações em lote pode comportar um manifesto com até 4 bilhões de objetos.

Para obter mais informações sobre a restauração de objetos, consulte [Restaurar um objeto arquivado](restoring-objects.md).

# Atualizar a criptografia de objetos
<a name="batch-ops-update-encryption"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html) do recurso Operações em Lote atualiza o tipo de criptografia do lado do servidor de um objeto do Amazon S3 com uma única solicitação. Um único trabalho da operação `UpdateObjectEncryption` pode comportar um manifesto com até 20 bilhões de objetos.

É possível usar a operação `UpdateObjectEncryption` com todas as classes de armazenamento do Amazon S3 aceitas por buckets de uso geral. É possível usar a operação `UpdateObjectEncryption` para alterar o tipo de criptografia de objetos de [criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE- S3)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingServerSideEncryption.html) para [chaves do AWS Key Management Service (AWS KMS) (SSE-KMS)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingKMSEncryption.html) ou aplicar chaves de bucket do S3. Também é possível usar a operação `UpdateObjectEncryption` para alterar a chave do KMS gerenciada pelo cliente utilizada na criptografia de seus dados e cumprir padrões personalizados de alternância de chaves.

 Ao criar um trabalho de operações em lote, é possível gerar uma lista de objetos baseada no local de origem e em critérios de filtro especificados por você. É possível usar o filtro `MatchAnyObjectEncryption` para gerar uma lista de objetos do seu bucket que você deseja atualizar e incluir no seu manifesto. A lista de objetos gerada inclui somente objetos do bucket de origem com o tipo de criptografia do lado do servidor indicado. Se você selecionar SSE-KMS, poderá, opcionalmente, filtrar ainda mais os resultados especificando um ARN de chave do KMS e o status “Chave do bucket habilitada”. Para ter mais informações, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html) e [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SSEKMSFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SSEKMSFilter.html) na *Referência de API do Amazon S3*.

## Restrições e considerações
<a name="batch-ops-encrypt-object-restrictions"></a>

Quando você usa a operação `UpdateObjectEncryption` do recurso Operações em Lote, as seguintes restrições e considerações se aplicam:
+ A operação `UpdateObjectEncryption` não permite objetos não criptografados ou objetos criptografados com a criptografia de camada dupla do lado do servidor com AWS KMS keys (DSSE-KMS) ou chaves de criptografia fornecidas pelo cliente (SSE-C). Além disso, não é possível especificar a solicitação `UpdateObjectEncryption` para o tipo de criptografia SSE-S3.
+ É possível usar a operação `UpdateObjectEncryption` para atualizar objetos em buckets que têm o Versionamento do S3 habilitado. Para atualizar o tipo de criptografia de uma versão específica, é necessário especificar um ID de versão na solicitação `UpdateObjectEncryption`. Se você não especificar um ID de versão, a solicitação `UpdateObjectEncryption` atuará na versão atual do objeto. Para obter mais informações sobre o S3 Versioning, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md).
+ A operação `UpdateObjectEncryption` falha em qualquer objeto que tenha um modo de retenção do Bloqueio de Objetos do S3 ou uma retenção jurídica aplicados a ele. Se um objeto tiver um período de retenção no modo de governança ou uma retenção jurídica, primeiro será necessário remover o status de bloqueio de objetos para emitir a solicitação `UpdateObjectEncryption`. Não é possível usar a operação `UpdateObjectEncryption` com objetos que tenham um período de retenção do modo de conformidade do Bloqueio de Objetos aplicado a eles. Para obter mais informações sobre bloqueio de objetos do S3, consulte [Bloquear objetos com o Bloqueio de Objetos](object-lock.md).
+ As solicitações `UpdateObjectEncryption` em buckets de origem com replicação em tempo real habilitada não iniciarão eventos de réplica no bucket de destino. Se você quiser alterar o tipo de criptografia dos objetos nos buckets de origem e destino, será necessário iniciar solicitações `UpdateObjectEncryption` separadas nos objetos nos buckets de origem e destino.
+ Por padrão, todas as solicitações `UpdateObjectEncryption` que especificam uma chave do KMS gerenciada pelo cliente são restritas às chaves do KMS pertencentes à Conta da AWS do proprietário do bucket. Se você estiver usando o AWS Organizations, existe a possibilidade de usar AWS KMS keys pertencentes a outras contas de membro em sua organização. Para isso, entre em contato com o AWS Support para fazer essa solicitação.
+ Se você usa o recurso Replicação em Lote do S3 para replicar conjuntos de dados entre regiões e já tiver atualizado o tipo de criptografia do lado do servidor de SSE-S3 para SSE-KMS, talvez você precise de permissões adicionais. No bucket da região de origem, é necessário ter a permissão `kms:decrypt`. Em seguida, é necessário ter as permissões `kms:decrypt` e `kms:encrypt` para o bucket na região de destino.
+ Forneça um ARN completo da chave do KMS na solicitação `UpdateObjectEncryption`. Não é possível usar um nome de alias ou ARN de alias. É possível determinar o ARN completo da chave do KMS no console do AWS KMS ou usando a API `DescribeKey` do AWS KMS.

Para obter mais informações sobre o `UpdateObjectEncryption`, consulte [Atualizar a criptografia do lado do servidor para dados existentes](update-sse-encryption.md).

## Permissões obrigatórias
<a name="batch-ops-required-permissions"></a>

Para realizar a operação `UpdateObjectEncryption`, adicione a política do AWS Identity and Access Management (IAM) a seguir à sua entidade principal do IAM (usuário, perfil ou grupo). Para usar essa política, substitua *`amzn-s3-demo-bucket`* pelo nome do bucket que contém os objetos para os quais você deseja atualizar a criptografia. Substitua `amzn-s3-demo-manifest-bucket` pelo nome do bucket que contém seu manifesto e substitua `amzn-s3-demo-completion-report-bucket` pelo nome do bucket onde você deseja armazenar o relatório de conclusão.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                 "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        },
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

Para ter informações sobre a política de confiança e a política de permissões que devem ser anexadas ao perfil do IAM que a entidade principal de serviço do recurso Operações em Lote do S3 assume para executar trabalhos de operações em lote em seu nome, consulte [Conceder permissões para operações em lote](batch-ops-iam-role-policies.md) e [Atualizar a criptografia de objetos](batch-ops-iam-role-policies.md#batch-ops-update-encryption-policies).

# Criar um trabalho de operações em lote para atualizar a criptografia de objetos
<a name="batch-ops-update"></a>

Para atualizar o tipo de criptografia do lado do servidor de mais de um objeto do Amazon S3 com uma única solicitação, você pode usar o recurso Operações em Lote do S3. É possível usar o recurso Operações em Lote do S3 por meio do console do Amazon S3, da AWS Command Line Interface (AWS CLI), de SDKs da AWS ou da API REST do Amazon S3.

## Como usar o AWS CLI
<a name="batch-ops-example-cli-update-job"></a>

Para executar os comandos a seguir, você deve ter a AWS CLI instalada e configurada. Se ainda não tiver a AWS CLI instalada, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) no *Guia do usuário da AWS Command Line Interface*.

Também é possível executar comandos da AWS CLI pelo console usando o AWS CloudShell. O AWS CloudShell é um shell pré-autenticado e baseado em navegador que você pode iniciar diretamente do Console de gerenciamento da AWS. Para ter mais informações, consulte [What is CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) e [Getting started with AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) no *Guia do usuário do AWS CloudShell*.

**Example 1: criar um trabalho de operações em lote que atualiza o tipo de criptografia de objetos de uma AWS KMS key para outra chave do KMS**  
O exemplo a seguir mostra como criar um trabalho de operações em lote do S3 que atualiza as configurações de criptografia para vários objetos em um bucket de uso geral. Esse comando cria um trabalho que altera os objetos criptografados com uma chave do AWS Key Management Service (AWS KMS) para usar uma chave diferente do KMS. Esse trabalho também gera e salva um manifesto dos objetos afetados e cria um relatório dos resultados. Para usar esse comando, substitua os `user input placeholders` por suas informações.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSEKMS": { "KmsKeyArn": "kms-key-ARN-to-match" } }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Para obter o melhor desempenho, recomendamos usar o filtro `KmsKeyArn` com outros filtros de metadados de objeto, como `MatchAnyPrefix`, `CreatedAfter` ou `MatchAnyStorageClass`.

**Example 2: criar um trabalho de operações em lote que atualiza o tipo de criptografia de objetos de SSE-S3 para SSE-KMS**  
O exemplo a seguir mostra como criar um trabalho de operações em lote do S3 que atualiza as configurações de criptografia para vários objetos em um bucket de uso geral. Esse comando cria um trabalho que altera o tipo de criptografia de objetos da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) para a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Esse trabalho também gera e salva um manifesto dos objetos afetados e cria um relatório dos resultados. Para usar esse comando, substitua os `user input placeholders` por suas informações.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSES3": {} }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Para obter o melhor desempenho, recomendamos usar o filtro `KmsKeyArn` com outros filtros de metadados de objeto, como `MatchAnyPrefix`, `CreatedAfter` ou `MatchAnyStorageClass`.

# Retenção do Bloqueio de objetos do S3
<a name="batch-ops-retention-date"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. É possível usar a operação de **Retenção de Bloqueio de objetos** para aplicar datas de retenção para seus objetos usando o modo de *governança* ou de *conformidade*. Esses modos de retenção aplicam níveis diferentes de proteção. É possível aplicar qualquer modo de retenção a qualquer versão de objeto. Datas de retenção, como retenções legais, impedem que um objeto seja substituído ou excluído. O Amazon S3 armazena a opção *reter até a data* especificada nos metadados do objeto e protege a versão especificada da versão do objeto até que o período de retenção expire.

É possível usar o Operações em Lote do S3 com o Bloqueio de Objetos para gerenciar as datas de retenção de muitos objetos do Amazon S3 de uma só vez. Especifique a lista de objetos de destino no manifesto e envie o manifesto para o Operações em Lote para conclusão. Para obter mais informações, consulte Bloqueio de objetos do S3 [Períodos de retenção](object-lock.md#object-lock-retention-periods). 

As datas de retenção de trabalhos de operações em lote do S3 com datas de retenção é executado até que a conclusão, o cancelamento ou um estado de falha seja atingido. Recomendamos usar o Operações em Lote do S3 e a retenção do Bloqueio de Objetos do S3 ao adicionar, alterar ou remover a data de retenção de muitos objetos com uma única solicitação. 

As operações em lote verificam se o bloqueio de objetos está habilitado no bucket antes de processar qualquer chave no manifesto. Para executar as operações e a validação, o Operações em Lote precisa das permissões `s3:GetBucketObjectLockConfiguration` e `s3:PutObjectRetention` em um perfil do AWS Identity and Access Management (IAM) para permitir que o Operações em Lote chame o Bloqueio de Objetos em seu nome. Para obter mais informações, consulte [Considerações sobre a funcionalidade Bloqueio de Objetos](object-lock-managing.md).

Consulte informações sobre como usar essa operação com a API REST em `S3PutObjectRetention` na operação [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) da *Referência de API do Amazon Simple Storage Service*. 

Consulte um exemplo da AWS Command Line Interface (AWS CLI) de como usar essa operação em [Como usar o AWS CLI](batch-ops-object-lock-retention.md#batch-ops-cli-object-lock-retention-example). Para ver um exemplo de AWS SDK para Java, consulte [Usar o AWS SDK para Java](batch-ops-object-lock-retention.md#batch-ops-examples-java-object-lock-retention). 

## Restrições e limitações
<a name="batch-ops-retention-date-restrictions"></a>

Quando você usa o Operações em Lote para aplicar períodos de retenção do Bloqueio de Objetos, as seguintes restrições e limitações se aplicam: 
+ O Operações em Lote do S3 não faz alterações no nível doesn't bucket.
+ O versionamento e o bloqueio de objetos do S3 devem ser configurados no bucket em que o trabalho é executado.
+ Todos os objetos listados no manifesto devem estar no mesmo bucket.
+ A operação funciona na versão mais recente do objeto, a menos que uma versão seja explicitamente especificada no manifesto.
+ Você precisa da permissão `s3:PutObjectRetention` no perfil do IAM para usar um trabalho de **Retenção de Bloqueio de objetos**.
+ A permissão `s3:GetBucketObjectLockConfiguration` do IAM é necessária para confirmar se o Bloqueio de Objetos está habilitado para o bucket do S3 no qual o trabalho está sendo realizado. 
+ Só é possível estender o período de retenção de objetos com datas de retenção do modo `COMPLIANCE` aplicadas, e esse período de retenção não pode ser reduzido.
+ Um único trabalho de retenção do Bloqueio de Objetos do S3 pode comportar um manifesto com até 20 bilhões de objetos.

# Retenção legal do Bloqueio de objetos do S3
<a name="batch-ops-legal-hold"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. É possível usar a operação de **retenção legal do Bloqueio de Objetos** para colocar uma retenção legal em uma versão de objeto. Assim como a definição de um período de retenção, uma retenção legal evita que uma versão do objeto seja substituída ou excluída. Porém, uma retenção legal não tem um período de retenção associado e permanecerá em vigor até ser removida. 

Você pode usar o Operações em lote do S3 com o Bloqueio de objetos para adicionar retenções legais a muitos objetos do Amazon S3 de uma só vez. Para fazer isso, especifique uma lista de objetos de destino no manifesto e envie essa lista ao Operações em Lote. O trabalho de **Retenção legal do Bloqueio de Objetos** do Operações em Lote do S3 é executado até a conclusão, até o cancelamento ou até que um estado de falha seja atingido.

O Operações em Lote do S3 verifica se o Bloqueio de Objetos está habilitado no bucket do S3 antes de processar qualquer objeto no manifesto. Para executar as operações de objeto e a validação no nível do bucket, o Operações em Lote do S3 precisa de `s3:PutObjectLegalHold` e `s3:GetBucketObjectLockConfiguration` em um perfil do AWS Identity and Access Management (IAM). Essas permissões possibilitam que o Operações em Lote do S3 chame o Bloqueio de Objetos do S3 em seu nome. 

Ao criar um trabalho do Operações em Lote do S3 para remover a retenção legal, você só precisa especificar `Off` como o status de retenção legal. Para obter mais informações, consulte [Considerações sobre a funcionalidade Bloqueio de Objetos](object-lock-managing.md).

Consulte informações sobre como usar essa operação com a API REST do Amazon S3 em `S3PutObjectLegalHold` na operação [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateJob.html) na *Referência da API do Amazon Simple Storage Service*. 

Consulte um exemplo de como usar essa operação em [Usar o AWS SDK for Java](batch-ops-legal-hold-off.md#batch-ops-examples-java-object-lock-legalhold). 

## Restrições e limitações
<a name="batch-ops-legal-hold-restrictions"></a>

Quando você usa o Operações em Lote para aplicar ou remover uma retenção legal do Bloqueio de Objetos, as seguintes restrições e limitações se aplicam: 
+ O Operações em Lote do S3 não faz alterações no nível doesn't bucket.
+ Todos os objetos listados no manifesto devem estar no mesmo bucket.
+ O versionamento e o bloqueio de objetos do S3 devem ser configurados no bucket em que o trabalho é executado.
+ A operação **Retenção legal do Bloqueio de Objetos** funciona na versão mais recente do objeto, a menos que uma versão seja explicitamente especificada no manifesto.
+ A permissão `s3:PutObjectLegalHold` é necessária no perfil do IAM para adicionar ou remover uma retenção legal de objetos.
+ A permissão `s3:GetBucketObjectLockConfiguration` do IAM é necessária para confirmar se o Bloqueio de Objetos do S3 está habilitado para o bucket do S3 no qual o trabalho está sendo realizado. 
+ Um único trabalho de retenção jurídica do Bloqueio de Objetos do S3 pode comportar um manifesto com até 20 bilhões de objetos.
+ [Copiar objetos](batch-ops-copy-object.md)
+ [Calcular somas de verificação](batch-ops-compute-checksums.md)
+ [Excluir todas as tags de objeto](batch-ops-delete-object-tagging.md)
+ [Invocar função do AWS Lambda](batch-ops-invoke-lambda.md)
+ [Substituir todas as tags de objeto](batch-ops-put-object-tagging.md)
+ [Substituir lista de controle de acesso (ACL)](batch-ops-put-object-acl.md)
+ [Restaurar objetos com operações em lote](batch-ops-initiate-restore-object.md)
+ [Atualizar a criptografia de objetos](batch-ops-update-encryption.md)
+ [Replicar objetos existentes com o Replicação em Lote](s3-batch-replication-batch.md)
+ [Retenção do Bloqueio de objetos do S3](batch-ops-retention-date.md)
+ [Retenção legal do Bloqueio de objetos do S3](batch-ops-legal-hold.md)

# Gerenciar trabalhos de operações em lote do S3
<a name="batch-ops-managing-jobs"></a>

O Amazon S3 oferece um conjunto de ferramentas robusto para ajudar a gerenciar trabalhos do S3 Batch Operations após a criação deles. Esta seção descreve as operações que você pode usar para gerenciar e rastrear trabalhos usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), SDKs da AWS ou a API REST do Amazon S3.

**Topics**
+ [

## Usar o console do Simple Storage Service (Amazon S3) para gerenciar trabalhos do S3 Batch Operations
](#batch-ops-manage-console)
+ [

# Listar trabalhos
](batch-ops-list-jobs.md)
+ [

# Visualizar detalhes do trabalho
](batch-ops-job-details.md)
+ [

# Atribuir prioridade aos trabalhos
](batch-ops-job-priority.md)

## Usar o console do Simple Storage Service (Amazon S3) para gerenciar trabalhos do S3 Batch Operations
<a name="batch-ops-manage-console"></a>

Usar o console para gerenciar seus trabalhos do S3 Batch Operations. Por exemplo, é possível:
+ Exibir trabalhos ativos e enfileirados
+ Conferir o status de um trabalho
+ Alterar a prioridade de um trabalho
+ Confirmar e executar um trabalho
+ Clonar um trabalho
+ Cancelar um trabalho

**Para gerenciar trabalhos do S3 Batch Operations usando o console**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação esquerdo, escolha **Batch Operations** (Operações em lote).

1. Escolha o trabalho que você deseja gerenciar.

# Listar trabalhos
<a name="batch-ops-list-jobs"></a>

Você pode recuperar uma lista dos seus trabalhos de operações em lote do S3. Ela fornece informações sobre os trabalhos ainda não concluídos, bem como os concluídos nos últimos noventa dias. Para cada trabalho, a lista inclui detalhes, como ID do trabalho, descrição, prioridade, status atual e número de tarefas que foram bem-sucedidas e que apresentaram falha.

Você pode filtrar a lista por status. Se você recuperar a lista pelo console, também poderá pesquisar os trabalhos por descrição ou ID e filtrá-los por Região da AWS.

## Obter uma lista de trabalhos `Active` e `Complete`
<a name="batch-ops-example-cli-active-jobs"></a>

O exemplo de AWS CLI a seguir obtém uma lista de trabalhos `Active` e `Complete`. Para usar esse exemplo, substitua os *`user input placeholders`* por suas próprias informações.

```
aws s3control list-jobs \
    --region us-west-2 \
    --account-id account-id \
    --job-statuses '["Active","Complete"]' \
    --max-results 20
```

Para obter mais informações e exemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/list-jobs.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/list-jobs.html) na *Referência de comandos da AWS CLI*.

# Visualizar detalhes do trabalho
<a name="batch-ops-job-details"></a>

Se quiser mais informações sobre um trabalho do Operações em Lote do Amazon S3 que pode ser recuperado listando trabalhos, poderá visualizar todos os detalhes de um único trabalho. É possível ver detalhes dos trabalhos que ainda não foram concluídos ou dos que foram concluídos nos últimos noventa dias. Além das informações exibidas em uma lista de trabalhos, os detalhes de um trabalho individual incluem informações como: 
+ Os parâmetros da operação.
+ Detalhes sobre o manifesto.
+ Informações sobre o relatório de conclusão, se você configurou um ao criar o trabalho.
+ O nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que você atribuiu para executar o trabalho.

Exibindo os detalhes de um trabalho individual, você acessa toda a configuração de um trabalho. Para visualizar os detalhes de um trabalho, você pode usar o console do Amazon S3 ou a AWS Command Line Interface (AWS CLI).

## Ter a descrição de um trabalho de Operações em Lote do S3 no console do Amazon S3
<a name="batch-ops-console-job-description"></a>

**Como visualizar a descrição de um trabalho de Operações em Lote usando o console**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação esquerdo, escolha **Batch Operations** (Operações em lote).

1. Escolha o ID do trabalho específico para visualizar os detalhes.

## Ter a descrição de um trabalho de Operações em Lote do S3 no AWS CLI
<a name="batch-ops-example-cli-job-description"></a>

O exemplo a seguir obtém a descrição de um trabalho de Operações em Lote do S3 usando a AWS CLI. Para usar o comando a seguir, substitua os *`user input placeholders`* por suas próprias informações.

```
aws s3control describe-job \
--region us-west-2 \
--account-id account-id \
--job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
```

Para obter mais informações e exemplos, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/describe-job.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/describe-job.html) na *Referência de comandos da AWS CLI*.

# Atribuir prioridade aos trabalhos
<a name="batch-ops-job-priority"></a>

Você pode atribuir a cada trabalho do Operações em Lote do Amazon S3 uma prioridade numérica, que pode ser qualquer inteiro positivo. O Operações em Lote do S3 prioriza trabalhos de acordo com a prioridade atribuída. Os trabalhos com prioridade mais alta (ou um valor inteiro mais alto para o parâmetro de prioridade) são avaliados primeiro. A prioridade é determinada em ordem decrescente. Por exemplo, uma fila de tarefas com valor de prioridade 10 tem preferência de programação em relação a uma fila com valor de prioridade 1. 

É possível alterar a prioridade do trabalho enquanto ele está sendo executado. Se você enviar um novo trabalho com uma prioridade mais alta enquanto um trabalho estiver em execução, o trabalho de menor prioridade poderá ser pausado para permitir a execução do trabalho de maior prioridade.

Alterar a prioridade de um trabalho não afeta a velocidade de processamento dele.

**nota**  
O Operações em Lote do S3 respeita as prioridades de trabalhos com o melhor esforço. Embora os trabalhos com prioridades mais altas normalmente tenham precedência sobre os de prioridades mais baixas, o Amazon S3 não garante a classificação rígida dos trabalhos.

## Usar o console do S3
<a name="batch-ops-example-console-update-job-priority"></a>

**Como atualizar a prioridade de trabalhos no console do Amazon S3**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação esquerdo, escolha **Batch Operations** (Operações em lote).

1. Selecione o trabalho específico que você deseja gerenciar.

1. Escolha **Actions** (Ações). Na lista suspensa, escolha **Update priority** (Atualizar prioridade).

## Como usar o AWS CLI
<a name="batch-ops-example-cli-update-job-priority"></a>

O exemplo a seguir atualiza a prioridade do trabalho usando a AWS CLI. Um número maior indica uma prioridade de execução mais alta. Para usar o comando a seguir, substitua os *`user input placeholders`* por suas próprias informações.

```
aws s3control update-job-priority \
    --region us-west-2 \
    --account-id account-id \
    --priority 98 \
    --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c
```

## Como usar o AWS SDK para Java
<a name="batch-ops-examples-java-update-job-priority."></a>

Para atualizar a prioridade de um trabalho do recurso Operações em Lote do S3 usando o AWS SDK para Java, você pode usar o cliente S3Control e modificar a prioridade de execução do trabalho, que determina a ordem na qual os trabalhos são processados em relação aos outros trabalhos na fila.

Para obter mais informações sobre prioridade de trabalhos, consulte [Atribuir prioridade aos trabalhos](#batch-ops-job-priority).

Para ver exemplos de como atualizar a prioridade do trabalho com o AWS SDK para Java, consulte [Update the priority of a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobPriority_section.html) na *Referência de API do Amazon S3*.

# Monitoramento de relatórios de status e conclusão
<a name="batch-ops-job-status"></a>

Com o S3 Batch Operations, você pode exibir e atualizar o status do trabalho, adicionar notificações e registro em log, rastrear falhas de trabalho e gerar relatórios de conclusão. 

**Topics**
+ [

## Status de trabalhos
](#batch-ops-job-status-table)
+ [

## Atualizar status do trabalho
](#updating-job-statuses)
+ [

## Notificações e registro em log
](#batch-ops-notifications)
+ [

## Monitorar falhas nos trabalhos
](#batch-ops-job-status-failure)
+ [

## Relatórios de conclusão
](#batch-ops-completion-report)
+ [

# Monitorar um trabalho de operações em lote do S3 no Amazon EventBridge por meio do AWS CloudTrail
](batch-ops-examples-event-bridge-cloud-trail.md)
+ [

# Exemplos: relatórios de conclusão de operações em lote do S3
](batch-ops-examples-reports.md)

## Status de trabalhos
<a name="batch-ops-job-status-table"></a>

Depois de criar um trabalho, ele passa por diversos status. A tabela a seguir descreve os status e as possíveis transições entre eles. 


| Status | Descrição | Transições | 
| --- | --- | --- | 
| `New` | Ao ser criado, o trabalho ganha o status `New`. | Um trabalho passa automaticamente para o estado `Preparing` quando o Amazon S3 começa a processar o objeto do manifesto. | 
| `Preparing` | O Amazon S3 está processando o objeto do manifesto e outros parâmetros do trabalho para configurar e executar o trabalho. | O trabalho passa automaticamente para o estado `Ready` depois que o Amazon S3 termina de processar o manifesto e outros parâmetros. Então, o trabalho está pronto para começar a executar a operação especificada nos objetos listados no manifesto.Se o trabalho exigir confirmação antes da execução, como ao criar um trabalho usando o console do Amazon S3, ele passará do estado `Preparing` para `Suspended`. Ele permanece no estado `Suspended` até que você confirme que deseja executá-lo. | 
| `Suspended` | O trabalho exige confirmação, mas você ainda não confirmou que deseja executá-lo. Somente os trabalhos criados pelo console do Amazon S3 exigem confirmação. Um trabalho criado pelo console entra no estado `Suspended` imediatamente depois de `Preparing`. Depois de confirmar que deseja executar o trabalho e ele entra no estado `Ready`, ele não retorna mais a `Suspended`. | Depois de confirmar que deseja executar o trabalho, o status muda para `Ready`. | 
| `Ready` | O Amazon S3 está pronto para executar as operações do objeto solicitadas. | Um trabalho passa automaticamente para `Active` quando o Amazon S3 começa a executá-lo. O tempo que o trabalho permanece no estado `Ready` depende do fato de outros trabalhos de maior prioridade estarem sendo executados e do tempo necessários para conclui-los. | 
| `Active` | O Amazon S3 está executando a operação solicitada nos objetos listados no manifesto. Enquanto um trabalho está no status `Active`, é possível monitorar seu progresso usando o console do Amazon S3 ou a operação `DescribeJob` por meio da API REST, AWS CLI ou AWS SDKs. | Um trabalho sai do estado `Active` quando para de executar operações nos objetos. Esse comportamento pode acontecer automaticamente, como quando um trabalho é concluído com êxito ou apresenta falha. Ou esse comportamento pode ocorrer como resultado de ações do usuário, como ao cancelar um trabalho. O estado que o trabalho passa a apresentar depende do motivo da transição. | 
| `Pausing` | O trabalho está passando de outro estado para `Paused`. | O trabalho passa automaticamente para `Paused` quando o estado `Pausing` é concluído. | 
| `Paused` | O trabalho pode assumir o estado `Paused` se você enviar outro trabalho de maior prioridade enquanto o atual está sendo executado. | O trabalho `Paused` volta automaticamente para `Active` depois que os trabalhos de prioridade mais alta que estavam bloqueando sua execução são concluídos, suspensos ou falham. | 
| `Completing` | O trabalho está passando de outro estado para `Complete`. | O trabalho passa automaticamente para `Complete` quando o estado `Completing` é concluído. | 
| `Complete` | O trabalho terminou a execução da operação solicitada em todos os objetos do manifesto. A operação pode ter sido concluída com êxito ou ter apresentado falha para cada objeto. Se você configurar a criação do relatório de conclusão, o relatório estará disponível assim que o trabalho estiver em `Complete`. | `Complete` é um estado terminal. Quando um trabalho atinge `Complete`, ele não muda mais de estado. | 
| `Cancelling` | O trabalho está passando para o estado `Cancelled`. | O trabalho passa automaticamente para `Cancelled` quando o estado `Cancelling` é concluído. | 
| `Cancelled` | Você solicitou que o trabalho fosse cancelado e o Operações em Lote do S3 fez o cancelamento com sucesso. O trabalho não enviará novas solicitações ao Amazon S3. | `Cancelled` é um estado terminal. Quando o trabalho atinge `Cancelled`, ele não muda mais de estado. | 
| `Failing` | O trabalho está passando para o estado `Failed`. | O trabalho passa automaticamente para `Failed` quando o estado `Failing` é concluído. | 
| `Failed` | O trabalho apresentou falha e não está mais em execução. Para obter mais informações sobre falhas em trabalhos, consulte [Monitorar falhas nos trabalhos](#batch-ops-job-status-failure). | `Failed` é um estado terminal. Quando o trabalho atinge `Failed`, ele não muda mais de estado. | 

## Atualizar status do trabalho
<a name="updating-job-statuses"></a>

Os exemplos da AWS CLI e do AWS SDK para Java a seguir atualizam o status de um trabalho do Operações em Lote. Consulte mais informações sobre como usar o console do Amazon S3 para gerenciar trabalhos do Operações em lote em [Usar o console do Simple Storage Service (Amazon S3) para gerenciar trabalhos do S3 Batch Operations](batch-ops-managing-jobs.md#batch-ops-manage-console).

### Como usar o AWS CLI
<a name="batch-ops-example-cli-update-job-status"></a>

Para usar os exemplos de comando a seguir, substitua os *`user input placeholders`* por suas próprias informações. 
+ Se você não tiver especificado o parâmetro `--no-confirmation-required` no comando `create-job`, o trabalho permanecerá em um estado suspenso até você confirmar o trabalho definindo o status dele como `Ready`. O Amazon S3 torna o trabalho qualificado para execução.

  ```
  aws s3control update-job-status \
      --region us-west-2 \
      --account-id 123456789012 \
      --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
      --requested-job-status 'Ready'
  ```
+ Para cancelar o trabalho, defina o status do trabalho como `Cancelled`.

  ```
  aws s3control update-job-status \
       --region us-west-2 \
       --account-id 123456789012 \
       --job-id 00e123a4-c0d8-41f4-a0eb-b46f9ba5b07c \
       --status-update-reason "No longer needed" \
       --requested-job-status Cancelled
  ```

### Usar o AWS SDK for Java
<a name="batch-ops-examples-java-update-job-status"></a>

Para ver exemplos de como atualizar o status do trabalho com o AWS SDK para Java, consulte [Update the status of a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_UpdateJobStatus_section.html) na *Referência de API do Amazon S3*.

## Notificações e registro em log
<a name="batch-ops-notifications"></a>

Além de solicitar relatórios de conclusão, você também pode capturar, revisar e auditar as atividades de operações em lote usando o AWS CloudTrail. Como o Operações em Lote usa operações de API existentes do Amazon S3 para realizar tarefas, essas tarefas também emitem os mesmos eventos que emitiriam se você as chamasse diretamente. Portanto, você pode monitorar e registrar o andamento do trabalho e todas as tarefas usando as mesmas ferramentas de notificação, registro em log e auditoria, além dos processos já usados com o Amazon S3. Para obter mais informações, consulte os exemplos nas seções a seguir.

**nota**  
O Operações em Lote gera eventos de gerenciamento e dados no CloudTrail durante a execução do trabalho. O volume desses eventos é escalado com o número de chaves no manifesto de cada trabalho. Consulte mais informações na página [Definição de preço do AWS CloudTrail](https://aws.amazon.com/cloudtrail/pricing/), que inclui exemplos de como a definição de preço muda dependendo do número de trilhas que você configurou na conta. Para saber como configurar e registrar em log eventos para atender às suas necessidades, consulte [Criar sua primeira trilha](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-tutorial.html#tutorial-step2) no *Guia do usuário do AWS CloudTrail*.

Para obter mais informações sobre eventos do Amazon S3, consulte [Notificações de eventos do Amazon S3](EventNotifications.md). 

## Monitorar falhas nos trabalhos
<a name="batch-ops-job-status-failure"></a>

Se uma operação em lote do S3 encontrar um problema que o impeça de ser executado com êxito, como não ser capaz de ler o manifesto especificado, o trabalho falhará. Quando um trabalho falha, ele gera um ou mais códigos de falha ou motivos de falha. O Operações em Lote do S3 armazena os códigos e os motivos da falha com o trabalho para que você possa visualizá-los solicitando os detalhes do trabalho. Caso você tenha solicitado um relatório de conclusão para o trabalho, os códigos e os motivos de falha também são exibidos.

Para evitar que trabalhos executem um grande número de operações malsucedidas, o Amazon S3 impõe um limite de falhas por tarefa em cada trabalho de operações em lote. O Amazon S3 monitora a taxa de falhas das tarefas depois que o trabalho executa pelo menos 1.000 tarefas. Se, a qualquer momento, a taxa de falha (o número de tarefas que falharam em proporção ao número total de tarefas executadas) exceder 50%, o trabalho vai falhar. Se o trabalho falhar porque excedeu o limite de falhas da tarefa, você poderá identificar a causa das falhas. Por exemplo, você pode ter incluído por acidente alguns objetos no manifesto que não existem no bucket especificado. Depois de corrigir os erros, você pode reenviar o trabalho.

**nota**  
O Operações em Lote do S3 funciona de maneira assíncrona e não necessariamente executa tarefas na ordem em que os objetos estão listados no manifesto. Portanto, não é possível usar a ordem do manifesto para determinar quais tarefas dos objetos foram bem-sucedidas e quais falharam. Em vez disso, examine o relatório de conclusão do trabalho (caso você tenha solicitado um) ou exiba os logs de evento do AWS CloudTrail para ajudar a determinar a origem das falhas.

## Relatórios de conclusão
<a name="batch-ops-completion-report"></a>

Ao criar um trabalho, você solicita um relatório de conclusão. Desde que o Operações em Lote do S3 invoque com êxito pelo menos uma tarefa, o Amazon S3 gerará um relatório de conclusão depois que o trabalho concluir a execução de tarefas, falhar ou ser cancelado. Configure o relatório de conclusão para incluir todas as tarefas ou somente tarefas com falha. 

O relatório de conclusão inclui a configuração do trabalho, o status e as informações de cada tarefa, inclusive a chave e a versão do objeto, status, códigos de erro e descrições de eventuais erros. Os relatórios de conclusão oferecem uma maneira fácil de visualizar os resultados das tarefas em um formato consolidado, sem a necessidade de configurações adicionais. Os relatórios de conclusão são criptografados usando a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3). Para obter um exemplo de um relatório de conclusão, consulte [Exemplos: relatórios de conclusão de operações em lote do S3](batch-ops-examples-reports.md). 

Mesmo que você não configure um relatório de conclusão, ainda poderá monitorar e auditar o trabalho e suas tarefas usando o CloudTrail e o Amazon CloudWatch. Para saber mais, consulte os seguintes tópicos:

**Topics**
+ [

## Status de trabalhos
](#batch-ops-job-status-table)
+ [

## Atualizar status do trabalho
](#updating-job-statuses)
+ [

## Notificações e registro em log
](#batch-ops-notifications)
+ [

## Monitorar falhas nos trabalhos
](#batch-ops-job-status-failure)
+ [

## Relatórios de conclusão
](#batch-ops-completion-report)
+ [

# Monitorar um trabalho de operações em lote do S3 no Amazon EventBridge por meio do AWS CloudTrail
](batch-ops-examples-event-bridge-cloud-trail.md)
+ [

# Exemplos: relatórios de conclusão de operações em lote do S3
](batch-ops-examples-reports.md)

# Monitorar um trabalho de operações em lote do S3 no Amazon EventBridge por meio do AWS CloudTrail
<a name="batch-ops-examples-event-bridge-cloud-trail"></a>

A atividade do trabalho de operações em lote do Amazon S3 é registrada como eventos no AWS CloudTrail. Você pode criar uma regra personalizada no Amazon EventBridge e enviar esses eventos para o recurso de notificação de destino de sua escolha, como o Amazon Simple Notification Service (Amazon SNS). 

**nota**  
O Amazon EventBridge é a maneira preferida de gerenciar seus eventos. O Amazon CloudWatch Events e o EventBridge são o mesmo serviço subjacente e API, mas o EventBridge oferece mais recursos. As alterações feitas no CloudWatch ou no EventBridge aparecem em cada console. Para obter mais informações, consulte o *[Guia do usuário do Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*.

**Topics**
+ [

## Eventos de operações em lote do S3 registrados no CloudTrail
](#batch-ops-examples-cloud-trail-events)
+ [

## Regra do EventBridge para rastrear eventos de trabalhos de operações em lote do S3
](#batch-ops-examples-event-bridge)

## Eventos de operações em lote do S3 registrados no CloudTrail
<a name="batch-ops-examples-cloud-trail-events"></a>



Quando um trabalho de operações em lote é criado, ele é gravado como um evento `JobCreated` no CloudTrail. À medida que o trabalho é executado, ele muda de estado durante o processamento e outros eventos `JobStatusChanged` são registrados no CloudTrail. Você pode visualizar esses eventos no [console do CloudTrail](https://console.aws.amazon.com/cloudtrail). Para obter mais informações sobre o CloudTrail, consulte o [https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html).

**nota**  
Somente eventos `status-change` de trabalho de operações em lote do S3 são registrados no CloudTrail.

**Example — evento de conclusão de trabalho de operações em lote do S3 registrado pelo CloudTrail**  

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-05T18:25:30Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "f907577b-bf3d-4c53-b9ed-8a83a118a554",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "recipientAccountId": "123412341234",
    "serviceEventDetails": {
        "jobId": "d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "jobArn": "arn:aws:s3:us-west-2:181572960644:job/d6e58ec4-897a-4b6d-975f-10d7f0fb63ce",
        "status": "Complete",
        "jobEventId": "b268784cf0a66749f1a05bce259804f5",
        "failureCodes": [],
        "statusChangeReason": []
    }
}
```

## Regra do EventBridge para rastrear eventos de trabalhos de operações em lote do S3
<a name="batch-ops-examples-event-bridge"></a>

O exemplo a seguir mostra como criar uma regra no Amazon EventBridge para capturar eventos do S3 Batch Operations registrados pelo AWS CloudTrail para um destino escolhido por você.

Para fazer isso, você cria uma regra seguindo todas as etapas em [Criação de regras do EventBridge que reagem aos eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html). Cole a política de padrão de evento personalizada de operações em lote do S3, quando aplicável, e selecione o serviço de destino de sua escolha.

**Política de padrão de evento personalizado de operações em lote do S**

```
{
    "source": [
        "aws.s3"
    ],
    "detail-type": [
        "AWS Service Event via CloudTrail"
    ],
    "detail": {
        "eventSource": [
            "s3.amazonaws.com"
        ],
        "eventName": [
            "JobCreated",
            "JobStatusChanged"
        ]
    }
}
```

 Os exemplos a seguir são dois eventos de operações em lote que foram enviados para o Amazon Simple Queue Service (Amazon SQS) a partir de uma regra de evento do EventBridge. Um trabalho de operações em lote passa por vários estados diferentes durante o processamento (`New`, `Preparing`, `Active` etc.), portanto, você pode esperar receber várias mensagens para cada trabalho.

**Example – Evento de exemplo JobCreated**  

```
{
    "version": "0",
    "id": "51dc8145-541c-5518-2349-56d7dffdf2d8",
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.s3",
    "account": "123456789012",
    "time": "2020-02-27T15:25:49Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "11112223334444",
            "invokedBy": "s3.amazonaws.com"
        },
        "eventTime": "2020-02-27T15:25:49Z",
        "eventSource": "s3.amazonaws.com",
        "eventName": "JobCreated",
        "awsRegion": "us-east-1",
        "sourceIPAddress": "s3.amazonaws.com",
        "userAgent": "s3.amazonaws.com",
        "eventID": "7c38220f-f80b-4239-8b78-2ed867b7d3fa",
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
            "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
            "status": "New",
            "jobEventId": "f177ff24f1f097b69768e327038f30ac",
            "failureCodes": [],
            "statusChangeReason": []
        }
    }
}
```

**Example – Evento JobStatusChanged de conclusão de trabalho**  

```
{
  "version": "0",
  "id": "c8791abf-2af8-c754-0435-fd869ce25233",
  "detail-type": "AWS Service Event via CloudTrail",
  "source": "aws.s3",
  "account": "123456789012",
  "time": "2020-02-27T15:26:42Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "eventVersion": "1.05",
    "userIdentity": {
      "accountId": "1111222233334444",
      "invokedBy": "s3.amazonaws.com"
    },
    "eventTime": "2020-02-27T15:26:42Z",
    "eventSource": "s3.amazonaws.com",
    "eventName": "JobStatusChanged",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "s3.amazonaws.com",
    "userAgent": "s3.amazonaws.com",
    "eventID": "0238c1f7-c2b0-440b-8dbd-1ed5e5833afb",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "serviceEventDetails": {
      "jobId": "e849b567-5232-44be-9a0c-40988f14e80c",
      "jobArn": "arn:aws:s3:us-east-1:181572960644:job/e849b567-5232-44be-9a0c-40988f14e80c",
      "status": "Complete",
      "jobEventId": "51f5ac17dba408301d56cd1b2c8d1e9e",
      "failureCodes": [],
      "statusChangeReason": []
    }
  }
}
```

# Exemplos: relatórios de conclusão de operações em lote do S3
<a name="batch-ops-examples-reports"></a>

Ao criar uma trabalho de operações em lote do S3, 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, as operações em lote do S3 geram um relatório para tarefas que foram concluídas, que falharam ou que foram canceladas.

O relatório de conclusão contém informações adicionais de cada tarefa, inclusive a chave e a versão do objeto, status, códigos de erro e descrições de qualquer erro. A descrição dos erros para cada tarefa com falha pode ser usada para diagnosticar problemas durante a criação de trabalhos, como permissões. Para trabalhos de **cálculo de soma de verificação**, o relatório de conclusão contém valores de soma de verificação para cada objeto.

**nota**  
Os relatórios de conclusão são sempre criptografados com chaves gerenciadas pelo Amazon S3 (SSE-S3).

**Example – Arquivo de resultado do manifesto de nível superior**  
O arquivo `manifest.json` de nível superior contém os locais de cada relatório bem-sucedido e (se a tarefa apresentou qualquer falha) o local de relatórios com falha, conforme mostrado no exemplo a seguir.  

```
{
    "Format": "Report_CSV_20180820",
    "ReportCreationDate": "2019-04-05T17:48:39.725Z",
    "Results": [
        {
            "TaskExecutionStatus": "succeeded",
            "Bucket": "my-job-reports",
            "MD5Checksum": "83b1c4cbe93fc893f54053697e10fd6e",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/6217b0fab0de85c408b4be96aeaca9b195a7daa5.csv"
        },
        {
            "TaskExecutionStatus": "failed",
            "Bucket": "my-job-reports",
            "MD5Checksum": "22ee037f3515975f7719699e5c416eaa",
            "Key": "job-f8fb9d89-a3aa-461d-bddc-ea6a1b131955/results/b2ddad417e94331e9f37b44f1faf8c7ed5873f2e.csv"
        }
    ],
    "ReportSchema": "Bucket, Key, VersionId, TaskStatus, ErrorCode, HTTPStatusCode, ResultMessage"
}
```

**Relatórios de tarefas bem-sucedidas**

Os relatórios de tarefas bem-sucedidas contêm o seguinte para as tarefas *bem-sucedidas*:
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Relatórios de tarefas com falha**

Os relatórios de tarefas com falha contêm as seguintes informações para todas as tarefas *com falha*:
+ `Bucket`
+ `Key`
+ `VersionId`
+ `TaskStatus`
+ `ErrorCode`
+ `HTTPStatusCode`
+ `ResultMessage`

**Example – Relatório de tarefas da função do Lambda**  
No exemplo a seguir, a função do Lambda copiou com êxito o objeto do Amazon S3 para outro bucket. A resposta exibida do Amazon S3 é passada de volta para o recurso Operações em Lote do S3 e, em seguida, é gravada no relatório de conclusão final.  

```
amzn-s3-demo-bucket1,image_17775,,succeeded,200,,"{u'CopySourceVersionId': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'RequestId': '3ED5852152014362', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'nXNaClIMxEJzWNmeMNQV2KpjbaCJLn0OGoXWZpuVOFS/iQYWxb3QtTvzX9SVfx2lA3oTKLwImKw=', 'x-amz-copy-source-version-id': 'xVR78haVKlRnurYofbTfYr3ufYbktF8h', 'server': 'AmazonS3', 'x-amz-request-id': '3ED5852152014362', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17763,,succeeded,200,,"{u'CopySourceVersionId': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 39, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'RequestId': '1BC9F5B1B95D7000', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'GiCZNYr8LHd/Thyk6beTRP96IGZk2sYxujLe13TuuLpq6U2RD3we0YoluuIdm1PRvkMwnEW1aFc=', 'x-amz-copy-source-version-id': '6HjOUSim4Wj6BTcbxToXW44pSZ.40pwq', 'server': 'AmazonS3', 'x-amz-request-id': '1BC9F5B1B95D7000', 'date': 'Fri, 05 Apr 2019 17:35:39 GMT', 'content-type': 'application/xml'}}}"
amzn-s3-demo-bucket1,image_17860,,succeeded,200,,"{u'CopySourceVersionId': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', u'CopyObjectResult': {u'LastModified': datetime.datetime(2019, 4, 5, 17, 35, 40, tzinfo=tzlocal()), u'ETag': '""fe66f4390c50f29798f040d7aae72784""'}, 'ResponseMetadata': {'HTTPStatusCode': 200, 'RetryAttempts': 0, 'HostId': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'RequestId': '8D9CA56A56813DF3', 'HTTPHeaders': {'content-length': '234', 'x-amz-id-2': 'F9ooZOgpE5g9sNgBZxjdiPHqB4+0DNWgj3qbsir+sKai4fv7rQEcF2fBN1VeeFc2WH45a9ygb2g=', 'x-amz-copy-source-version-id': 'm.MDD0g_QsUnYZ8TBzVFrp.TmjN8PJyX', 'server': 'AmazonS3', 'x-amz-request-id': '8D9CA56A56813DF3', 'date': 'Fri, 05 Apr 2019 17:35:40 GMT', 'content-type': 'application/xml'}}}"
```
O exemplo de relatório a seguir mostra um caso no qual a função do AWS Lambda atingiu o tempo limite, fazendo com que as falhas excedessem o limite de falhas. Em seguida, ele é então marcado como um `PermanentFailure`.  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:21.155Z 2845ca0d-38d9-4c4b-abcf-379dc749c452 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15897,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.610Z 2d0a330b-de9b-425f-b511-29232fde5fe4 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_14819,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:22.362Z fcf5efde-74d4-4e6d-b37a-c7f18827f551 Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_15930,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:29.809Z 3dd5b57c-4a4a-48aa-8a35-cbf027b7957e Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17644,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:46.025Z 10a764e4-2b26-4d8c-9056-1e1072b4723f Task timed out after 3.00 seconds""}"
amzn-s3-demo-bucket1,image_17398,,failed,200,PermanentFailure,"Lambda returned function error: {""errorMessage"":""2019-04-05T17:35:44.661Z 1e306352-4c54-4eba-aee8-4d02f8c0235c Task timed out after 3.00 seconds""}"
```

**Example – Relatório de tarefas de cálculo de soma de verificação**  
No exemplo a seguir, a operação **Calcular soma de verificação** calculou com sucesso a soma de verificação do objeto carregado enquanto estava em repouso. A resposta exibida do Amazon S3 é passada de volta para o recurso Operações em Lote do S3 e, em seguida, é gravada no relatório de conclusão final:  

```
amzn-s3-demo-bucket1,s3-standard-1mb-test-object,,succeeded,200,,"{""checksum_base64"":""bS9TOQ\u003d\u003d"",""etag"":""3c3c1813042989094598e4b57ecbdc82"",""checksumAlgorithm"":""CRC32"",""checksumType"":""FULL_OBJECT"",""checksum_hex"":""6D2F5339""}"
```
O seguinte relatório de exemplo mostra o que acontece quando uma operação de **cálculo de soma de verificação** falha, resultando em um relatório de tarefas com falha:  

```
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 SSE-C encryption type is not supported for this operation", ""errorCode"": "400"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Key not found", ""errorCode"": "404"}"
amzn-s3-demo-bucket1,image_14975,,failed,200,PermanentFailure,"error details: {""failureMessage"":"Task 2845ca0d-38d9-4c4b-abcf-379dc749c452 Internal server error, please retry", ""errorCode"": "500"}"
```

# Controlar o acesso e rotular trabalhos usando tags
<a name="batch-ops-job-tags"></a>

Você pode rotular e controlar o acesso aos trabalhos de operações em lote do S3 adicionando *tags*. As tags podem ser usadas para identificar quem é responsável por um trabalho 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. Você pode criar trabalhos com tags anexadas a eles e pode adicionar tags aos trabalhos depois que eles são criados. Cada tag é um par de chave-valor que pode ser incluído quando você cria o trabalho ou atualizado posteriormente.

**Atenção**  
Garanta que as tags de trabalho não contenham informações confidenciais ou dados pessoais.

Considere o seguinte exemplo de marcação: suponha que você deseja que seu departamento financeiro crie um trabalho de operações em lote. Você pode escrever uma política do AWS Identity and Access Management (IAM) que permita que um usuário invoque `CreateJob`, desde que o trabalho seja criado com a tag `Department` atribuída ao valor `Finance`. Além disso, você pode anexar essa política a todos os usuários que são membros do departamento de Finanças.

Continuando com este exemplo, você pode escrever uma política que permita que um usuário atualize a prioridade de qualquer trabalho que tenha as tags desejadas ou cancele qualquer trabalho que tenha essas tags. Para obter mais informações, consulte [Controlar permissões para o Operações em Lote usando tags de trabalho](batch-ops-job-tags-examples.md).

Você pode adicionar tags a novos trabalhos de operações em lote do S3 ao criá-los ou adicionar tags a trabalhos existentes. 

Observe as seguintes restrições de tag:
+ Você pode associar até 50 tags a um trabalho, desde que elas tenham chaves de tag exclusivas.
+ Um chave de tag pode ter até 128 caracteres Unicode e os valores de tag podem ter até 256 caracteres Unicode.
+ As chaves e os valores diferenciam letras maiúsculas de minúsculas.

Para obter mais informações sobre restrições de tags, consulte [Restrições de tags definidas pelo usuário](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html) no *Guia do usuário do Gerenciamento de Faturamento e Custos da AWS*.

## Operações de API relacionadas à marcação de trabalhos de operações em lote do S3
<a name="batch-ops-job-tags-api"></a>

O Amazon S3 oferece suporte às seguintes operações de API específicas para a marcação de trabalhos de operações em lote do S3:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html) – mostra o conjunto de tags associado a um trabalho do Operações em Lote. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html) – substitui o conjunto de tags associado a um trabalho. Há dois cenários distintos de gerenciamento de tags de trabalho de operações em lote do S3 usando essa ação de API:
  + O trabalho não tem tags: você pode adicionar um conjunto de tags a um trabalho (o trabalho não tem tags anteriores).
  + O trabalho tem um conjunto de tags existentes: para modificar o conjunto de tags existente, é possível substituí-lo ou fazer alterações nele recuperando o conjunto de tags existente usando [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetJobTagging.html), modificar esse conjunto de tags e usar essa ação de API para substituir a tag definida pela que você modificou.
**nota**  
Se você enviar essa solicitação com o conjunto de tags vazio, o Operações em lote do S3 excluirá o conjunto de tags existente no objeto. Se você usar esse método, receberá a cobrança por uma solicitação de nível 1 (`PUT`). Para obter mais informações, consulte [Definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing).  
Para excluir tags existentes do trabalho de Operações em lote, a ação `DeleteJobTagging` é preferida porque ela obtém o mesmo resultado sem incorrer em encargos.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteJobTagging.html) – exclui o conjunto de tags associado a um trabalho de operações em lote. 

# Criar um trabalho do Operações em lote com tags de trabalho usadas para rotulagem
<a name="batch-ops-tags-create"></a>

É possível rotular e controlar o acesso aos trabalhos do Operações em Lote do Amazon S3 adicionando *tags*. As tags podem ser usadas para identificar quem é responsável por um trabalho de operações em lote. Você pode criar trabalhos com tags anexadas a eles e pode adicionar tags aos trabalhos depois que eles são criados. Para obter mais informações, consulte [Controlar o acesso e rotular trabalhos usando tags](batch-ops-job-tags.md).

## Usar a AWS CLI
<a name="batch-ops-example-cli-job-tags-create-job"></a>

O exemplo da AWS CLI a seguir cria um trabalho `S3PutObjectCopy` do S3 Batch Operations usando tags de trabalho como rótulos para o trabalho. 

1. Selecione a ação ou `OPERATION` que deseja que o trabalho de operações em lote execute e escolha `TargetResource`.

   ```
   read -d '' OPERATION <<EOF
   {
     "S3PutObjectCopy": {
       "TargetResource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
     }
   }
   EOF
   ```

1. Identifique as `TAGS` que você deseja para o trabalho. Nesse caso, você aplica duas tags, `department` e `FiscalYear`, com os valores `Marketing` e `2020`, respectivamente.

   ```
   read -d '' TAGS <<EOF
   [
     {
       "Key": "department",
       "Value": "Marketing"
     },
     {
       "Key": "FiscalYear",
       "Value": "2020"
     }
   ]
   EOF
   ```

1. Especifique o `MANIFEST` para o trabalho de operações em lote.

   ```
   read -d '' MANIFEST <<EOF
   {
     "Spec": {
       "Format": "EXAMPLE_S3BatchOperations_CSV_20180820",
       "Fields": [
         "Bucket",
         "Key"
       ]
     },
     "Location": {
       "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/example_manifest.csv",
       "ETag": "example-5dc7a8bfb90808fc5d546218"
     }
   }
   EOF
   ```

1. Configure o `REPORT` para o trabalho de operações em lote.

   ```
   read -d '' REPORT <<EOF
   {
     "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
     "Format": "Example_Report_CSV_20180820",
     "Enabled": true,
     "Prefix": "reports/copy-with-replace-metadata",
     "ReportScope": "AllTasks"
   }
   EOF
   ```

1. Execute a ação `create-job` para criar o trabalho de operações em lote com entradas definidas nas etapas anteriores.

   ```
   aws \
       s3control create-job \
       --account-id 123456789012 \
       --manifest "${MANIFEST//$'\n'}" \
       --operation "${OPERATION//$'\n'/}" \
       --report "${REPORT//$'\n'}" \
       --priority 10 \
       --role-arn arn:aws:iam::123456789012:role/batch-operations-role \
       --tags "${TAGS//$'\n'/}" \
       --client-request-token "$(uuidgen)" \
       --region us-west-2 \
       --description "Copy with Replace Metadata";
   ```

## Usar o AWS SDK for Java
<a name="batch-ops-examples-java-job-with-tags-create"></a>

Para criar um trabalho do recurso Operações em Lote do S3 com tags usando o AWS SDK para Java, é possível usar o cliente S3Control para configurar os parâmetros do trabalho, como localização do manifesto, operações do trabalho, configurações de geração de relatórios e tags para fins de organização e rastreamento.

Para ver exemplos de como criar trabalhos do recurso Operações em Lote do S3 com o AWS SDK para Java, consulte [Create a batch job to copy objects](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) na *Referência de API do Amazon S3*.

# Excluir as tags de um trabalho do Operações em lote do S3
<a name="delete-job-tags"></a>

Você pode usar esses exemplos para excluir as tags de um trabalho do Operações em Lote do Amazon S3.

## Usar a AWS CLI
<a name="batch-ops-example-cli-job-tags-delete-job-tagging"></a>

O exemplo a seguir exclui as tags de um trabalho do Batch Operations usando a AWS CLI.

```
aws \
    s3control delete-job-tagging \
    --account-id 123456789012 \
    --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
    --region us-east-1
```

## Excluir as tags de um trabalho de operações em lote
<a name="batch-ops-examples-java-job-with-tags-delete"></a>

Para excluir as tags de um trabalho do recurso Operações em Lote do S3 usando o AWS SDK para Java, é possível usar o cliente S3Control com o ID do trabalho para remover todas as tags associadas ao trabalho de operações em lote.

Para ver exemplos de como excluir tags de trabalho com o AWS SDK para Java, consulte [Delete tags from a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_DeleteJobTagging_section.html) na *Referência de API do Amazon S3*.

# Adicionar tags a um trabalho existente do Operações em Lote
<a name="put-job-tags"></a>

Você pode usar a operação de API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_PutJobTagging.html) para adicionar tags aos trabalhos existentes do Operações em Lote do Amazon S3. Para obter mais informações, veja os exemplos a seguir:

## Usar a AWS CLI
<a name="batch-ops-example-cli-job-tags-put-job-tagging"></a>

Veja a seguir um exemplo de uso de `s3control put-job-tagging` para adicionar tags aos trabalhos do Operações em Lote do S3 usando a AWS CLI. Para usar os exemplos, substitua *`user input placeholders`* por suas próprias informações.

**nota**  
Se você enviar essa solicitação com o conjunto de tags vazio, o Operações em Lote excluirá o conjunto de tags existente no objeto. No entanto, se você usar essa abordagem, receberá cobrança por uma solicitação de nível 1 (`PUT`). Para obter mais informações, consulte [Preço do Amazon S3](https://aws.amazon.com/s3/pricing).  
Em vez disso, para excluir tags existentes do trabalho do Operações em Lote, recomendamos usar a operação `DeleteJobTagging` porque ela consegue o mesmo resultado sem incorrer em cobranças.

1. Identifique as `TAGS` que você deseja para o trabalho. Nesse caso, você aplica duas tags, `department` e `FiscalYear`, com os valores `Marketing` e `2020`, respectivamente.

   ```
   read -d '' TAGS <<EOF
   [
     {
       "Key": "department",
       "Value": "Marketing"
     },
     {
       "Key": "FiscalYear",
       "Value": "2020"
     }
   ]
   EOF
   ```

1. Execute o seguinte comando `put-job-tagging` com os parâmetros exigidos:

   ```
   aws \
       s3control put-job-tagging \
       --account-id 123456789012 \
       --tags "${TAGS//$'\n'/}" \
       --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
       --region us-east-1
   ```

## Usar o AWS SDK para Java
<a name="batch-ops-examples-java-job-with-tags-put"></a>

Se quiser colocar tags em um trabalho do recurso Operações em Lote do S3 usando o AWS SDK para Java, use o cliente S3Control para adicionar ou atualizar tags com pares de chave-valor para fins de organização e rastreamento.

Para ver exemplos de como inserir tags de trabalho com o AWS SDK para Java, consulte [Add tags to a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_PutJobTagging_section.html) na *Referência de API do Amazon S3*.

# Obter as tags de um trabalho do Operações em lote S3
<a name="get-job-tags"></a>

Para recuperar as tags de um trabalho do Operações em Lote do Amazon S3, você pode usar a operação de API `GetJobTagging`. Para obter mais informações, veja os exemplos a seguir:

## Usar a AWS CLI
<a name="batch-ops-example-cli-job-tags-get-job-tagging"></a>

O exemplo a seguir obtém as tags de um trabalho do Batch Operations usando a AWS CLI. Para usar esse exemplo, substitua os *`user input placeholders`* por suas próprias informações.

```
aws \
    s3control get-job-tagging \
    --account-id 123456789012 \
    --job-id Example-e25a-4ed2-8bee-7f8ed7fc2f1c \
    --region us-east-1
```

## Usar o AWS SDK para Java
<a name="batch-ops-examples-java-job-with-tags-get"></a>

Para obter as tags de um trabalho do recurso Operações em Lote do S3 usando o AWS SDK para Java, você pode usar o cliente S3Control com o ID do trabalho para recuperar todas as tags associadas ao trabalho de operações em lote e exibi-las como uma lista.

Para ver exemplos de como obter tags de trabalho com o AWS SDK para Java, consulte [Get tags from a batch job](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_GetJobTagging_section.html) na *Referência de API do Amazon S3*.

# Controlar permissões para o Operações em Lote usando tags de trabalho
<a name="batch-ops-job-tags-examples"></a>

Para ajudar a gerenciar trabalhos do Operações em Lote do Amazon S3, você pode adicionar *tags de trabalho*. Com tags de trabalho, você pode controlar o acesso aos seus trabalhos de operações em lote e impor que as tags sejam aplicadas quando qualquer trabalho for criado. 

Você pode aplicar até 50 tags de trabalho a cada trabalho de operações em lote. O uso de tags permite que você defina políticas detalhadas para restringir o conjunto de usuários que podem editar o trabalho. As tags de trabalho podem 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. Além disso, você pode impor que as tags sejam aplicadas a todos os novos trabalhos e especificar os pares de chave-valor permitidos para as tags. Você pode expressar todas essas condições usando a [linguagem de política do AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html). Consulte mais informações em [ Actions, resources, and condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) na *Referência de autorização do serviço*.

Para ter mais informações sobre as permissões referentes a operações de API do S3 de acordo com os tipos de recurso do S3, consulte [Permissões obrigatórias para operações de API do Amazon S3](using-with-s3-policy-actions.md).

O exemplo a seguir mostra como você pode usar tags de trabalho de operações em lote do S3 para conceder aos usuários permissão para criar e editar somente os trabalhos executados em um departamento específico (por exemplo, o departamento Finanças ou Conformidade). Você também pode atribuir trabalhos com base no estágio de desenvolvimento ao qual eles estão relacionados, como QA ou Produção.

Neste exemplo, você usa tags de trabalho do Operações em Lote do S3 nas políticas do IAM para conceder aos usuários permissão para criar e editar apenas os trabalhos que estão sendo executados no departamento deles. Você atribui trabalhos com base no estágio de desenvolvimento ao qual eles estão relacionados, como QA ou Produção. 

Os exemplos a seguir usam os seguintes departamentos, com cada um usando o Operações em Lote de maneiras diferentes:
+ Finanças
+ Conformidade
+ Business Intelligence
+ Engenharia

**Topics**
+ [

## Controlar o acesso atribuindo tags a usuários e recursos
](#job-tags-examples-attaching-tags)
+ [

## Marcar trabalhos de operações em lote por estágio e impor limites na prioridade do trabalho
](#tagging-jobs-by-stage-and-enforcing-limits-on-job-priority)

## Controlar o acesso atribuindo tags a usuários e recursos
<a name="job-tags-examples-attaching-tags"></a>

Nesse cenário, os administradores estão usando o [controle de acesso baseado em atributos (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html). ABAC é uma estratégia de autorização do IAM que define permissões anexando etiquetas a usuários e recursos da AWS.

Os usuários e os trabalhos recebem uma das seguintes tags de departamento:

**Chave: valor**
+ `department : Finance`
+ `department : Compliance`
+ `department : BusinessIntelligence`
+ `department : Engineering`
**nota**  
As chaves e os valores de tags de trabalho diferenciam maiúsculas de minúsculas.

Usando a estratégia de controle de acesso ABAC, você concede a um usuário no departamento de finanças permissão para criar e gerenciar trabalhos de Operações em Lote do S3 em seu departamento associando a etiqueta `department=Finance` ao usuário.

Além disso, você pode anexar uma política gerenciada ao usuário do IAM que permite que qualquer usuário em sua empresa crie ou modifique trabalhos de operações em lote do S3 dentro de seus respectivos departamentos. 

A política neste exemplo inclui três instruções de política:
+ A primeira instrução na política permite que o usuário crie um trabalho de operações em lote desde que a solicitação de criação de trabalho inclua uma tag de trabalho que corresponda ao respectivo departamento. Isso é expresso usando a sintaxe `"${aws:PrincipalTag/department}"`, que é substituída pela etiqueta de departamento do usuário no momento da avaliação da política. A condição é satisfeita quando o valor fornecido para a tag de departamento na solicitação `("aws:RequestTag/department")` corresponde ao departamento do usuário. 
+ A segunda instrução na política permite que os usuários alterem a prioridade dos trabalhos ou atualizem o status de um trabalho, desde que o trabalho que o usuário está atualizando corresponda ao departamento do usuário. 
+ A terceira instrução permite que um usuário atualize as tags de um trabalho de operações em lote a qualquer momento por meio de uma solicitação `PutJobTagging`, desde que (1) sua tag de departamento seja preservada e (2) o trabalho que está atualizando esteja dentro de seu departamento. 

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
            {
                  "Effect": "Allow",
                  "Action": "s3:CreateJob",
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:RequestTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        },
            {
                  "Effect": "Allow",
                  "Action": [
                        "s3:UpdateJobPriority",
                        "s3:UpdateJobStatus"      
            ],
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:ResourceTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        },
            {
                  "Effect": "Allow",
                  "Action": "s3:PutJobTagging",
                  "Resource": "*",
                  "Condition": {
                        "StringEquals": {
                              "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                              "aws:ResourceTag/department": "${aws:PrincipalTag/department}"        
                }      
            }    
        }  
    ]
}
```

------

## Marcar trabalhos de operações em lote por estágio e impor limites na prioridade do trabalho
<a name="tagging-jobs-by-stage-and-enforcing-limits-on-job-priority"></a>

Todos os trabalhos de operações em lote do S3 têm uma prioridade numérica, que o Amazon S3 usa para decidir em que ordem executar os trabalhos. Para este exemplo, você restringe a prioridade máxima que a maioria dos usuários pode atribuir a trabalhos, com intervalos de prioridade mais altos reservados para um conjunto limitado de usuários privilegiados, da seguinte forma:
+ Intervalo de prioridade do estágio de QA (baixa): 1–100
+ Intervalo de prioridade do estágio de produção (alta): 1–300

Para fazer isso, introduza um novo conjunto de tags representando o estágio do trabalho:

**Chave: valor**
+ `stage : QA`
+ `stage : Production`

### Criar e atualizar trabalhos de baixa prioridade em um departamento
<a name="creating-and-updating-low-priority-jobs"></a>

Esta política introduz duas novas restrições à criação e atualização de trabalhos de operações em lote do S3, além da restrição baseada em departamento:
+ Ele permite que os usuários criem ou atualizem trabalhos em seu departamento com uma nova condição que requer que o trabalho inclua a tag `stage=QA`.
+ Ele permite que os usuários criem ou atualizem a prioridade de um trabalho até uma nova prioridade máxima de 100.

```
{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
        {
        "Effect": "Allow",
        "Action": "s3:CreateJob",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:UpdateJobStatus"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:UpdateJobPriority",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:ResourceTag/stage": "QA"
            },
            "NumericLessThanEquals": {
                "s3:RequestJobPriority": 100
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:PutJobTagging",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:RequestTag/department" : "${aws:PrincipalTag/department}",
                "aws:ResourceTag/department": "${aws:PrincipalTag/department}",
                "aws:RequestTag/stage": "QA",
                "aws:ResourceTag/stage": "QA"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:GetJobTagging",
        "Resource": "*"
    }
    ]
}
```

### Criar e atualizar trabalhos de alta prioridade em um departamento
<a name="creating-and-updating-high-priority-jobs"></a>

Um pequeno número de usuários pode exigir a capacidade de criar trabalhos de alta prioridade em QA ou Produção. Para dar suporte a essa necessidade, crie uma política gerenciada adaptada da política de baixa prioridade na seção anterior. 

Essa política faz o seguinte: 
+ Permite que os usuários criem ou atualizem trabalhos em seu departamento com a tag `stage=QA` ou `stage=Production`.
+ Permite que os usuários criem ou atualizem a prioridade de um trabalho até um máximo de 300.

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
                "Effect": "Allow",
                "Action": "s3:CreateJob",
                "Resource": "*",
                "Condition": {
                      "ForAnyValue:StringEquals": {
                            "aws:RequestTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                },
                      "StringEquals": {
                            "aws:RequestTag/department": "${aws:PrincipalTag/department}"      
                },
                      "NumericLessThanEquals": {
                            "s3:RequestJobPriority": 300      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": [
                      "s3:UpdateJobStatus"    
            ],
                "Resource": "*",
                "Condition": {
                      "StringEquals": {
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": "s3:UpdateJobPriority",
                "Resource": "*",
                "Condition": {
                      "ForAnyValue:StringEquals": {
                            "aws:ResourceTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                },
                      "StringEquals": {
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                },
                      "NumericLessThanEquals": {
                            "s3:RequestJobPriority": 300      
                }    
            }  
        },
          {
                "Effect": "Allow",
                "Action": "s3:PutJobTagging",
                "Resource": "*",
                "Condition": {
                      "StringEquals": {
                            "aws:RequestTag/department": "${aws:PrincipalTag/department}",
                            "aws:ResourceTag/department": "${aws:PrincipalTag/department}"      
                },
                      "ForAnyValue:StringEquals": {
                            "aws:RequestTag/stage": [
                                  "QA",
                                  "Production"        
                    ],
                            "aws:ResourceTag/stage": [
                                  "QA",
                                  "Production"        
                    ]      
                }    
            }  
        }  
    ]
}
```

------

# Gerenciar o Bloqueio de objetos do S3 usando o Operações em lote do S3
<a name="managing-object-lock-batchops"></a>

Você pode usar operações em lote do S3 para executar operações em lote de grande escala em objetos do Amazon S3. As operações em lote do S3 podem executar uma única operação em listas de objetos do Amazon S3 especificadas. Um único trabalho pode realizar uma operação especificada em bilhões de objetos contendo exabytes de dados. O Amazon S3 monitora o progresso, envia notificações e armazena um relatório de conclusão detalhado de todas as ações, fornecendo uma experiência totalmente gerenciada, auditável e sem servidor. É possível usar o recurso Operações em Lote do S3 por meio do console do Amazon S3, da AWS CLI, de SDKs da AWS ou da API REST do Amazon S3.

Com o bloqueio de objetos do S3, você também pode colocar uma retenção legal em uma versão de objeto. Assim como a definição de um período de retenção, uma retenção legal evita que uma versão do objeto seja substituída ou excluída. No entanto, uma retenção legal não tem um período de retenção associado e permanece em vigor até ser removida. Para obter mais informações, consulte [Retenção legal do Bloqueio de objetos do S3](batch-ops-legal-hold.md).

Para adicionar retenções legais a vários objetos do Amazon S3 de uma só vez usando o Operações em Lote do S3 com o Bloqueio de Objetos, consulte os tópicos a seguir.

**Topics**
+ [

# Habilitar o Bloqueio de objetos do S3 usando o Operações em lote do S3
](batch-ops-object-lock.md)
+ [

# Definir a retenção do Bloqueio de Objetos usando o Operações em Lote
](batch-ops-object-lock-retention.md)
+ [

# Usar operações em lote do S3 com o modo de conformidade de retenção do bloqueio de objetos do S3
](batch-ops-compliance-mode.md)
+ [

# Usar operações em lote do S3 com modo de governança de retenção de bloqueio de objetos do S3
](batch-ops-governance-mode.md)
+ [

# Usar o Operações em Lote do S3 para desativar retenções legais do Bloqueio de Objetos do S3
](batch-ops-legal-hold-off.md)

# Habilitar o Bloqueio de objetos do S3 usando o Operações em lote do S3
<a name="batch-ops-object-lock"></a>

É possível usar o Operações em Lote do Amazon S3 com o Bloqueio de Objetos do S3 para gerenciar a retenção ou habilitar uma retenção legal para vários objetos do Amazon S3 de uma só vez. Especifique a lista de objetos de destino no manifesto e envie-a para as operações em lote para conclusão. Para obter mais informações, consulte [Retenção do Bloqueio de objetos do S3](batch-ops-retention-date.md) e [Retenção legal do Bloqueio de objetos do S3](batch-ops-legal-hold.md). 

Os exemplos a seguir mostram como criar um perfil do AWS Identity and Access Management (IAM) com permissões do Operações em Lote do S3 e atualizar as permissões do perfil para criar trabalhos que habilitem o Bloqueio de Objetos. Você também deve ter um manifesto `CSV` que identifica os objetos para o trabalho do Operações em Lote do S3. Para obter mais informações, consulte [Especificar um manifesto](batch-ops-create-job.md#specify-batchjob-manifest).

Para usar os exemplos a seguir, substitua *`user input placeholders`* por suas próprias informações. 

## Como usar o AWS CLI
<a name="batchops-example-cli-object-lock"></a>

1. Crie uma função do IAM e atribua permissões de operações em lote do S3 para executar.

   Esta etapa é necessária para todos os trabalhos de operações em lote do S3.

   ```
   export AWS_PROFILE='aws-user'
   
   read -d '' batch_operations_trust_policy <<EOF
   {
     "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "batchoperations.s3.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   EOF
   aws iam create-role --role-name batch_operations-objectlock \
   --assume-role-policy-document "${batch_operations_trust_policy}"
   ```

1. Configure operações em lote do S3 com bloqueio de objeto do S3 para executar.

   Nesta etapa, permita que a função faça o seguinte:

   1. Execute o bloqueio de objeto no bucket do S3 que contém os objetos de destino nos quais você deseja que as operações em lote sejam executadas.

   1. Leia o bucket do S3 no qual estão localizados o arquivo CSV de manifesto e os objetos.

   1. Grave os resultados do trabalho de operações em lote do S3 no bucket de relatórios.

   ```
   read -d '' batch_operations_permissions <<EOF
   {
       "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:GetBucketObjectLockConfiguration",
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-completion-report-bucket}}/*"
               ]
           }
       ]
   }
   EOF
   
   aws iam put-role-policy --role-name batch_operations-objectlock \
   --policy-name object-lock-permissions \
   --policy-document "${batch_operations_permissions}"
   ```

## Usar o AWS SDK for Java
<a name="batchops-examples-java-object-lock"></a>

Você pode criar um perfil do IAM com permissões do recurso Operações em Lote do S3 e usar o AWS SDK para Java para atualizar as permissões de perfil para criar trabalhos que habilitem o Bloqueio de Objetos. Você também deve ter um manifesto `CSV` identificando os objetos para o trabalho de operações em lote do S3. Para obter mais informações, consulte [Especificar um manifesto](batch-ops-create-job.md#specify-batchjob-manifest).

Siga estas etapas:

1. Crie uma função do IAM e atribua permissões de operações em lote do S3 para executar. Esta etapa é necessária para todos os trabalhos de operações em lote do S3.

1. Configure operações em lote do S3 com bloqueio de objeto do S3 para executar.

   Permita que a função faça o seguinte:

   1. Execute o bloqueio de objeto no bucket do S3 que contém os objetos de destino nos quais você deseja que as operações em lote sejam executadas.

   1. Leia o bucket do S3 no qual estão localizados o arquivo CSV de manifesto e os objetos.

   1. Grave os resultados do trabalho de operações em lote do S3 no bucket de relatórios.

Para ver um exemplo de código que demonstra como criar um perfil do IAM para habilitar o Bloqueio de Objetos do S3 usando o recurso Operações em Lote do S3 com o AWS SDK para Java, consulte [CreateObjectLockRole.java](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/s3/src/main/java/com/example/s3/batch/CreateObjectLockRole.java) nos *exemplos de código do AWS SDK para Java 2.x*.

# Definir a retenção do Bloqueio de Objetos usando o Operações em Lote
<a name="batch-ops-object-lock-retention"></a>

É possível usar o Operações em Lote do Amazon S3 com o Bloqueio de Objetos do S3 para gerenciar a retenção de vários objetos do Amazon S3 de uma só vez. Especifique a lista de objetos de destino no manifesto e envie-a para as operações em lote para conclusão. Para obter mais informações, consulte [Retenção do Bloqueio de objetos do S3](batch-ops-retention-date.md) e [Retenção legal do Bloqueio de objetos do S3](batch-ops-legal-hold.md). 

Os exemplos a seguir mostram como criar um perfil do AWS Identity and Access Management (IAM) com permissões do Operações em Lote do S3 e atualizar as permissões do perfil para incluir as permissões `s3:PutObjectRetention` de modo que possa executar a retenção do Bloqueio de Objetos do S3 nos objetos do bucket do manifesto. Você também deve ter um manifesto `CSV` que identifica os objetos para o trabalho do Operações em Lote do S3. Para obter mais informações, consulte [Especificar um manifesto](batch-ops-create-job.md#specify-batchjob-manifest).

Para usar os exemplos a seguir, substitua *`user input placeholders`* por suas próprias informações. 

## Como usar o AWS CLI
<a name="batch-ops-cli-object-lock-retention-example"></a>

O exemplo AWS CLI a seguir mostra como usar o Operações em Lote para aplicar a retenção do Bloqueio de Objetos do S3 a vários objetos.

```
export AWS_PROFILE='aws-user'

read -d '' retention_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectRetention"
            ],
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-manifest-bucket}}/*"
            ]
        }
    ]
}
EOF

aws iam put-role-policy --role-name batch_operations-objectlock --policy-name retention-permissions --policy-document "${retention_permissions}"
```

## Usar o AWS SDK para Java
<a name="batch-ops-examples-java-object-lock-retention"></a>

Para ver exemplos de como usar o recurso Operações em Lote para aplicar a retenção do Bloqueio de Objetos do S3 em vários objetos com o AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) na *Referência de API do Amazon S3*.

# Usar operações em lote do S3 com o modo de conformidade de retenção do bloqueio de objetos do S3
<a name="batch-ops-compliance-mode"></a>

O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na definição de permissões de configuração do Operações em lote do S3 e Bloqueio de objetos do S3 em seus objetos. Este exemplo define o modo de retenção como `COMPLIANCE` e `retain until date` como 1.º de janeiro de 2025. Esse exemplo cria um trabalho que visa objetos no bucket de manifesto e relata os resultados no bucket de relatórios identificado.

Para usar os exemplos a seguir, substitua *`user input placeholders`* por suas próprias informações. 

## Como usar o AWS CLI
<a name="batch-ops-cli-object-lock-compliance-example"></a>

Os exemplos da AWS CLI a seguir mostram como usar o Operações em Lote para aplicar o modo de conformidade de retenção do Bloqueio de Objetos do S3 a vários objetos.

**Example – Definir o modo de conformidade de retenção do Bloqueio de Objetos do S3 em vários objetos**  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-01T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::ReportBucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "amzn-s3-demo-completion-report-bucket/compliance-objects-batch-operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Set compliance retain-until to 1 Jul 2030";
```

**Example – Estender o `retain until date` do modo de `COMPLIANCE` para 15 de janeiro de 2025**  
O exemplo a seguir estende a `retain until date` do modo de `COMPLIANCE` para 15 de janeiro de 2025.  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-15T00:00:00",
      "Mode":"COMPLIANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/compliance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/compliance-objects-batch_operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Extend compliance retention to 15 Jan 2025";
```

## Usar o AWS SDK for Java
<a name="batch-ops-examples-java-object-lock-compliance"></a>

Os seguintes exemplos do AWS SDK para Java mostram como usar o recurso Operações em Lote para aplicar o modo de conformidade de retenção do Bloqueio de Objetos do S3 a vários objetos, inclusive como definir o modo de retenção como COMPLIANCE com um prazo de retenção e estender o prazo de retenção do modo COMPLIANCE.

Para ver exemplos de como usar o recurso Operações em Lote para aplicar o modo de conformidade de retenção do Bloqueio de Objetos do S3 em vários objetos com o AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) na *Referência de API do Amazon S3*.

# Usar operações em lote do S3 com modo de governança de retenção de bloqueio de objetos do S3
<a name="batch-ops-governance-mode"></a>

O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Esse exemplo mostra como aplicar a vários objetos a governança de retenção do Bloqueio de Objetos do S3 com `retain until date` de 30 de janeiro de 2025. Ele cria um trabalho de operações em lote que usa o bucket de manifesto e relata os resultados no bucket de relatórios.

Para usar os exemplos a seguir, substitua *`user input placeholders`* por suas próprias informações. 

## Como usar o AWS CLI
<a name="batch-ops-cli-object-lock-governance-example"></a>

Os exemplos da AWS CLI a seguir mostram como usar o Operações em Lote para aplicar o modo de governança de retenção do Bloqueio de Objetos do S3 a vários objetos.

**Example – Aplicar a governança de retenção do Bloqueio de Objetos do S3 a vários objetos com o prazo de retenção de 30 de janeiro de 2025**  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "Retention": {
      "RetainUntilDate":"2025-01-30T00:00:00",
      "Mode":"GOVERNANCE"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/governance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucketT",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/governance-objects",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Put governance retention";
```

**Example – Ignorar a governança de retenção em vários objetos**  
O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Ele mostra como ignorar a governança de retenção em vários objetos e cria um trabalho de operações em lote que usa o bucket de manifestos e relata os resultados no bucket de relatórios.  

```
export AWS_PROFILE='aws-user'

read -d '' bypass_governance_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:BypassGovernanceRetention"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        }
    ]
}
EOF

aws iam put-role-policy --role-name batch-operations-objectlock --policy-name bypass-governance-permissions --policy-document "${bypass_governance_permissions}"

export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectRetention": {
    "BypassGovernanceRetention": true,
    "Retention": {
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/governance-objects-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/batch_operations-governance",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Remove governance retention";
```

## Usar o AWS SDK for Java
<a name="batch-ops-examples-java-object-lock-governance"></a>

Os exemplos do AWS SDK para Java a seguir mostram como aplicar a governança de retenção do Bloqueio de Objetos do S3 com o `retain until date` definido como 30 de janeiro de 2025 a vários objetos, inclusive como aplicar a governança de retenção do Bloqueio de Objetos a vários objetos com um prazo de retenção e ignorar a governança de retenção em vários objetos.

Para ver exemplos de como usar o recurso Operações em Lote com o modo de governança de retenção do Bloqueio de Objetos do S3 e o AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) na *Referência de API do Amazon S3*.

# Usar o Operações em Lote do S3 para desativar retenções legais do Bloqueio de Objetos do S3
<a name="batch-ops-legal-hold-off"></a>

O exemplo a seguir baseia-se nos exemplos anteriores de criação de uma política de confiança e na definição de permissões de configuração de operações em lote do S3 e bloqueio de objetos do S3. Esse exemplo mostra como desabilitar a retenção legal do Bloqueio de Objetos em objetos usando o Operações em Lote. 

O exemplo primeiro atualiza a função para conceder permissões `s3:PutObjectLegalHold`, cria um trabalho de operações em lote que desativa (remove) a retenção legal dos objetos identificados no manifesto e, depois, cria um relatório.

Para usar os exemplos a seguir, substitua *`user input placeholders`* por suas próprias informações. 

## Como usar o AWS CLI
<a name="batch-ops-cli-object-lock-legalhold-example"></a>

Os exemplos da AWS CLI a seguir mostram como usar o Operações em Lote para desativar retenções legais do Bloqueio de Objetos do S3 em vários objetos.

**Example – Atualiza o perfil para conceder permissões `s3:PutObjectLegalHold`**  

```
export AWS_PROFILE='aws-user'

read -d '' legal_hold_permissions <<EOF
{
    "Version": "2012-10-17"		 	 	 ,		 	 	 TCX5-2025-waiver;,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectLegalHold"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
        }
    ]

EOF

aws iam put-role-policy --role-name batch_operations-objectlock --policy-name legal-hold-permissions --policy-document "${legal_hold_permissions}"
```

**Example – Desativar retenção legal**  
O exemplo a seguir desativa a retenção legal.  

```
export AWS_PROFILE='aws-user'
export AWS_DEFAULT_REGION='us-west-2'
export ACCOUNT_ID=123456789012
export ROLE_ARN='arn:aws:iam::123456789012:role/batch_operations-objectlock'

read -d '' OPERATION <<EOF
{
  "S3PutObjectLegalHold": {
    "LegalHold": {
      "Status":"OFF"
    }
  }
}
EOF

read -d '' MANIFEST <<EOF
{
  "Spec": {
    "Format": "S3BatchOperations_CSV_20180820",
    "Fields": [
      "Bucket",
      "Key"
    ]
  },
  "Location": {
    "ObjectArn": "arn:aws:s3:::amzn-s3-demo-manifest-bucket/legalhold-object-manifest.csv",
    "ETag": "Your-manifest-ETag"
  }
}
EOF

read -d '' REPORT <<EOF
{
  "Bucket": "arn:aws:s3:::amzn-s3-demo-completion-report-bucket",
  "Format": "Report_CSV_20180820",
  "Enabled": true,
  "Prefix": "reports/legalhold-objects-batch_operations",
  "ReportScope": "AllTasks"
}
EOF

aws \
    s3control create-job \
    --account-id "${ACCOUNT_ID}" \
    --manifest "${MANIFEST//$'\n'}" \
    --operation "${OPERATION//$'\n'/}" \
    --report "${REPORT//$'\n'}" \
    --priority 10 \
    --role-arn "${ROLE_ARN}" \
    --client-request-token "$(uuidgen)" \
    --region "${AWS_DEFAULT_REGION}" \
    --description "Turn off legal hold";
```

## Usar o AWS SDK for Java
<a name="batch-ops-examples-java-object-lock-legalhold"></a>

Para ver exemplos de como usar o recurso Operações em Lote com o modo de governança de retenção do Bloqueio de Objetos do S3 e o AWS SDK para Java, consulte [Use CreateJob with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3-control_example_s3-control_CreateJob_section.html) na *Referência de API do Amazon S3*.

# Tutorial: vídeos de transcodificação em lote com o Operações em Lote do S3
<a name="tutorial-s3-batchops-lambda-mediaconvert-video"></a>

Os consumidores de vídeo usam dispositivos de todas as formas, tamanhos e épocas para desfrutar de conteúdo de mídia. Essa grande variedade de dispositivos representa um desafio para criadores e distribuidores de conteúdo. Em vez um formato de tamanho único, os vídeos precisam abranger uma ampla variedade de tamanhos, formatos e bitrates. Essa tarefa de conversão é ainda mais desafiadora quando você tem um grande número de vídeos a serem convertidos.

AWSA oferece um método para construir uma arquitetura escalável e distribuída que faz o seguinte: 
+ Ingere vídeos de entrada
+ Processa os vídeos para reprodução em uma ampla variedade de dispositivos
+ Armazena os arquivos de mídia transcodificados
+ Fornece os arquivos de mídia de saída para atender à demanda

Quando você tem extensos repositórios de vídeo armazenados no Amazon S3, pode transcodificar esses vídeos de seus formatos na fonte para vários tipos de arquivo, no tamanho, resolução e formato necessários para um determinado player ou dispositivo de vídeo. Mais especificamente, as [operações em lote do S3](https://aws.amazon.com/s3/features/batch-operations) fornecem uma solução para chamar as funções do AWS Lambda para vídeos de entrada existentes em um bucket de origem do S3. Depois, as funções do Lambda chamam o [AWS Elemental MediaConvert](https://aws.amazon.com/mediaconvert/) para realizar tarefas de transcodificação de vídeo em grande escala. Os arquivos de mídia de saída convertidos são armazenados em um bucket de destino do S3. 

![\[Um diagrama de fluxo de trabalho de transcodificação em lote.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/batchops-example-image-global.png)


**Objetivo**  
Neste tutorial, você aprenderá como configurar as operações em lote do S3 para chamar uma função Lambda para transcodificação em lote de vídeos armazenados em um bucket de origem do S3. A função Lambda chama o MediaConvert para transcodificar os vídeos. As saídas para cada vídeo no bucket de origem do S3 são as seguintes:
+ Um fluxo de bitrate adaptativa [HTTP Live Streaming (HLS)](http://wikipedia.org/wiki/HTTP_Live_Streaming) para reprodução em dispositivos de vários tamanhos e larguras de banda variáveis
+ Um arquivo de vídeo MP4
+ Imagens em miniatura coletadas em intervalos

**Topics**
+ [

## Pré-requisitos
](#batchops-s3-prerequisites)
+ [

## Etapa 1: Criar um bucket do S3 para os arquivos de mídia de saída
](#batchops-s3-step1)
+ [

## Etapa 2: criar uma função do IAM para MediaConvert
](#batchops-s3-step2)
+ [

## Etapa 3: criar uma função do IAM para a função Lambda
](#batchops-s3-step3)
+ [

## Etapa 4: Criar uma função do Lambda para transcodificação de vídeo
](#batchops-s3-step4)
+ [

## Etapa 5: Configurar o inventário do Amazon S3 para seu bucket de origem do S3
](#batchops-s3-step5)
+ [

## Etapa 6: criar uma função do IAM para operações em lote do S3
](#batchops-s3-step6)
+ [

## Etapa 7: criar e executar um trabalho de operações em lote do S3
](#batchops-s3-step7)
+ [

## Etapa 8: Conferir os arquivos de mídia de saída do bucket de destino do S3
](#batchops-s3-step8)
+ [

## Etapa 9: limpar
](#batchops-s3-step9)
+ [

## Próximas etapas
](#batchops-s3-next-steps)

## Pré-requisitos
<a name="batchops-s3-prerequisites"></a>

Antes de iniciar este tutorial, você deve ter um bucket de origem do Amazon S3 (por exemplo, `amzn-s3-demo-source-bucket`) com vídeos a serem transcodificados já armazenados nele.

Você pode dar ao bucket outro nome, se desejar. Para obter mais informações sobre os nomes de bucket do Amazon S3, consulte [Regras de nomenclatura de buckets de uso geral](bucketnamingrules.md).

Para o bucket de origem do S3, mantenha as configurações relacionadas a **Block Public Access settings for this bucket** (Configurações de bloquear acesso público a este bucket) definidas com os padrões (**Block *all* public access** (Bloquear todo o acesso público) está habilitado). Para obter mais informações, consulte [Criar um bucket de uso geral](create-bucket-overview.md). 

Para obter mais informações sobre como carregar vídeos para o bucket de origem do S3, consulte [Fazer upload de objetos](upload-objects.md). Se você for carregar muitos arquivos de vídeo grandes para o S3, pode ser interessante usar o [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration) para configurar transferências de arquivos rápidas e seguras. O Transfer Acceleration pode acelerar o carregamento de vídeo no seu bucket do S3 para transferências de longa distância de vídeos maiores. Para obter mais informações, consulte [Configurar transferências de arquivos rápidas e seguras usando o Amazon S3 Transfer Acceleration](transfer-acceleration.md). 

## Etapa 1: Criar um bucket do S3 para os arquivos de mídia de saída
<a name="batchops-s3-step1"></a>

Nesta etapa, você cria um bucket de destino do S3 para armazenar os arquivos de mídia de saída convertidos. Você também cria uma configuração CORS (Cross Origin Resource Sharing) para permitir acesso de origem cruzada aos arquivos de mídia transcodificados armazenados no bucket de destino do S3. 

**Topics**
+ [

### Criar um bucket para os arquivos de mídia de saída
](#batchops-s3-step1-create-bucket)
+ [

### Para adicionar uma configuração CORS a um bucket de saída do S3
](#batchops-s3-step1-cors)

### Criar um bucket para os arquivos de mídia de saída
<a name="batchops-s3-step1-create-bucket"></a>



1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Selecione **Criar bucket**. 

1. Em **Bucket name** (Nome do bucket), insira um nome para o seu bucket (por exemplo, `amzn-s3-demo-destination-bucket1`). 

1. Em **Region** (Região), escolha a Região da AWS onde deseja que o bucket resida. 

1. Para garantir o acesso público aos arquivos de mídia de saída, em **Block Public Access settings for this bucket** (Configurações de bloqueio de acesso público para este bucket), desmarque **Block *all* public access** (Bloquear todo acesso público). 
**Atenção**  
Antes de concluir esta etapa, revise [Bloquear o acesso público ao armazenamento do Amazon S3](access-control-block-public-access.md) para garantir que você entenda e aceite os riscos envolvidos em permitir o acesso público. Quando você desativa as configurações Block Public Access (Bloquear acesso público) para tornar seu bucket público, qualquer pessoa na Internet pode acessá-lo. Recomendamos que você bloqueie todo o acesso público aos seus buckets.  
Se você não quiser limpar as configurações de Block Public Access (Bloquear acesso público), pode usar o Amazon CloudFront para entregar os arquivos de mídia transcodificados aos visualizadores (usuários finais). Para obter mais informações, consulte [Tutorial: Hospedagem de transmissão sob demanda com o Amazon S3, Amazon CloudFront e Amazon Route 53](tutorial-s3-cloudfront-route53-video-streaming.md). 

1. Marque a caixa de seleção ao lado de **I acknowledge that the current settings might result in this bucket and the objects within becoming public** (Eu reconheço que as configurações atuais podem fazem com que o bucket e os objetos fiquem públicos.)

1. Mantenha as configurações restantes definidas conforme os padrões. 

1. Selecione **Criar bucket**.

### Para adicionar uma configuração CORS a um bucket de saída do S3
<a name="batchops-s3-step1-cors"></a>

Uma configuração de CORS JSON define uma maneira para as aplicações Web clientes (players de vídeo neste contexto) que são carregadas em um domínio reproduzirem os arquivos de mídia de saída transcodificados em um domínio diferente. 

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista **Buckets**, escolha o nome do bucket que você criou antes (por exemplo, `amzn-s3-demo-destination-bucket1`).

1. Escolha a aba **Permissões**.

1. Na seção **Cross-origin resource sharing (CORS)** (Compartilhamento de recursos de origem cruzada (CORS)) escolha **Edit** (Editar).

1. Na caixa de texto de configuração de CORS, copie e cole a seguinte configuração de CORS.

   A configuração do CORS deve estar no formato JSON. Neste exemplo, o atributo `AllowedOrigins` usa o caractere curinga (`*`) para especificar todas as origens. Se você souber qual é a sua origem específica, pode restringir o atributo `AllowedOrigins` ao URL do seu player específico. Para obter mais informações sobre esse e outros atributos, consulte [Elementos de uma configuração de CORS](ManageCorsUsing.md).

   ```
   [
       {
           "AllowedOrigins": [
               "*"
           ],
           "AllowedMethods": [
               "GET"
           ],
           "AllowedHeaders": [
               "*"
           ],
           "ExposeHeaders": []
   
       }
   ]
   ```

1. Escolha **Salvar alterações**.

## Etapa 2: criar uma função do IAM para MediaConvert
<a name="batchops-s3-step2"></a>

Para usar o AWS Elemental MediaConvert para transcodificar vídeos de entrada armazenados no bucket do S3, você deve ter um perfil de serviço do AWS Identity and Access Management (IAM) para conceder ao MediaConvert permissões para ler e gravar arquivos de vídeo entre os buckets de origem e de destino do S3. Quando você executa trabalhos de transcodificação, o console do MediaConvert usa essa função. 

**Para criar uma função do IAM para MediaConvert**

1. Crie uma função do IAM com um nome de função que você escolhe (por exemplo, **tutorial-mediaconvert-role**). Para criar essa função, siga as etapas em [Criar função do MediaConvert no IAM (console)](https://docs.aws.amazon.com/mediaconvert/latest/ug/creating-the-iam-role-in-iam.html) no *Guia do usuário do AWS Elemental MediaConvert*.

1. Depois de criar a função do IAM para o MediaConvert, na lista **Roles** (Funções), escolha o nome da função para o MediaConvert que você criou (por exemplo, **tutorial-mediaconvert-role**).

1. Na página **Summary** (Resumo), copie o **Role ARN** (ARN da função) (que começa com `arn:aws:iam::`) e salve o ARN para uso posterior. 

   Para obter mais informações sobre os ARNs, consulte [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) (Nomes de recurso da Amazon (ARNs) em *AWS General Reference* (Referência geral). 

## Etapa 3: criar uma função do IAM para a função Lambda
<a name="batchops-s3-step3"></a>

Para transcodificar vídeos em lote com o MediaConvert e operações em lote do S3, você usa uma função do Lambda para conectar esses dois serviços para converter vídeos. Essa função do Lambda precisa ter uma função do IAM que conceda permissões à função do Lambda para acessar o MediaConvert e as operações em lote do S3. 

**Topics**
+ [

### Criar uma função do IAM para sua função Lambda
](#batchops-s3-step3-role)
+ [

### Incorpore uma política em linha para a função do IAM da sua função Lambda
](#batchops-s3-step3-inline-policy)

### Criar uma função do IAM para sua função Lambda
<a name="batchops-s3-step3-role"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Roles** (Funções) e **Create role** (Criar função). 

1. Escolha o tipo de função **AWS service** (serviço da WS) e em **Common use cases** (Casos de uso comuns), escolha **Lambda**. 

1. Escolha **Próximo: Permissões**. 

1. Na página **Attach Permissions policies** (Anexar políticas de permissões), insira **AWSLambdaBasicExecutionRole** na caixa **Filter policies** (Filtrar políticas). Para anexar a política gerenciada **AWSLambdaBasicExecutionRole** a esta função para conceder permissões de gravação a Amazon CloudWatch Logs, marque a caixa de seleção ao lado de **AWSLambdaBasicExecutionRole**.

1. Escolha **Próximo**.

1. Em **Nome do perfil**, insira **tutorial-lambda-transcode-role**.

1. (Opcional) Adicione etiquetas à política gerenciada.

1. Selecione **Criar perfil**.

### Incorpore uma política em linha para a função do IAM da sua função Lambda
<a name="batchops-s3-step3-inline-policy"></a>

Para conceder permissões para o recurso do MediaConvert que é necessário para que a função do Lambda seja executada, você deve usar uma política em linha.

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, selecione **Perfis**. 

1. Na lista **Roles** (Funções), escolha o nome da função do IAM que você criou antes para a sua função do Lambda (por exemplo, **tutorial-lambda-transcode-role**).

1. Escolha a guia **Permissions** (Permissões).

1. Escolha **Add inline policy** (Adicionar política em linha).

1. Escolha a guia **JSON** e copie e cole a política JSON a seguir.

   Na política JSON, substitua o valor de `Resource` do ARN do exemplo pelo ARN da função do IAM para o MediaConvert que você criou na [Etapa 2](#batchops-s3-step2) (por exemplo, **tutorial-mediaconvert-role**).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:PutLogEvents"
               ],
               "Resource": "*",
               "Effect": "Allow",
               "Sid": "Logging"
           },
           {
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/tutorial-mediaconvert-role"
               ],
               "Effect": "Allow",
               "Sid": "PassRole"
           },
           {
               "Action": [
                   "mediaconvert:*"
               ],
               "Resource": [
                   "*"
               ],
               "Effect": "Allow",
               "Sid": "MediaConvertService"
           },
           {
               "Action": [
                   "s3:*"
               ],
               "Resource": [
                   "*"
               ],
               "Effect": "Allow",
               "Sid": "S3Service"
           }
       ]
   }
   ```

------

1. Escolha **Revisar política**.

1. Em **Nome**, insira **tutorial-lambda-policy**.

1. Escolha **Create Policy**.

   Após a criação de uma política em linha, ela é automaticamente incorporada à função do IAM de sua função Lambda.

## Etapa 4: Criar uma função do Lambda para transcodificação de vídeo
<a name="batchops-s3-step4"></a>

Nesta seção do tutorial, você constrói uma função do Lambda usando o SDK for Python para integrar com as operações em lote do S3 e o MediaConvert. Para iniciar a transcodificação dos vídeos já armazenados no bucket de origem do S3, você executa um trabalho de operações em lote do S3 que invoca diretamente a função do Lambda para cada vídeo no bucket de origem do S3. Em seguida, a função Lambda envia um trabalho de transcodificação de cada vídeo para MediaConvert.

**Topics**
+ [

### Grave o código de função Lambda e crie um pacote de implantação
](#batchops-s3-step4-write-function)
+ [

### Crie uma função Lambda com uma função de execução (console)
](#batchops-s3-step4-create-function)
+ [

### Implante sua função Lambda com arquivos .zip e configure a função Lambda (console)
](#batchops-s3-step4-deploy-function)

### Grave o código de função Lambda e crie um pacote de implantação
<a name="batchops-s3-step4-write-function"></a>

1. Na sua máquina local, crie uma pasta denominada `batch-transcode`.

1. Na pasta `batch-transcode`, crie um arquivo com as configurações de trabalho de JSON. Por exemplo, use as configurações fornecidas nesta seção e dê ao arquivo o nome de `job.json`. 

   Um arquivo `job.json` especifica o seguinte: 
   + Quais arquivos devem ser transcodificados
   + Como você deseja transcodificar seus vídeos de entrada
   + Quais arquivos de mídia de saída você deseja criar
   + Como dar nomes aos arquivos transcodificados
   + Onde salvar os arquivos transcodificados
   + Quais recursos avançados aplicar e assim por diante

   Neste tutorial, usamos o arquivo `job.json` a seguir para criar as seguintes saídas para cada vídeo no bucket de origem do S3:
   + Um fluxo de bitrate adaptativa HTTP Live Streaming (HLS) para reprodução em dispositivos de diversos tamanhos e diferentes larguras de banda
   + Um arquivo de vídeo MP4
   + Imagens em miniatura coletadas em intervalos

   Este exemplo de arquivo `job.json` usa bitrare variável definia por qualidade (QVCR - Quality-Defined Variable Bitrate) para otimizar a qualidade do vídeo. A saída HTTP Live Streaming (HLS) é compatível com Apple (áudio de vídeo não mixado, duração de segmento de 6 segundos e qualidade de vídeo otimizada por QVBR automática). 

   Se você não quiser usar as configurações de exemplo fornecidas aqui, pode gerar uma especificação de `job.json` baseada em seu caso de uso. Para garantir a consistência em todas as saídas, certifique-se de que os arquivos de entrada tenham configurações de vídeo e áudio semelhantes. Para arquivos de entrada com diferentes configurações de vídeo e áudio, crie automações separadas (configurações de `job.json` exclusivas). Para obter mais informações, consulte [Exemplos de configuração de trabalhos do AWS Elemental MediaConvert em JSON](https://docs.aws.amazon.com/mediaconvert/latest/ug/example-job-settings.html) no *Guia do usuário do AWS Elemental MediaConvert*. 

   ```
   {
     "OutputGroups": [
       {
         "CustomName": "HLS",
         "Name": "Apple HLS",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 640,
               "ScalingBehavior": "DEFAULT",
               "Height": 360,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 1200000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_360"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "TimedMetadataPid": 502,
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 960,
               "ScalingBehavior": "DEFAULT",
               "Height": 540,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 3500000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_540"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {
                 "AudioFramesPerPes": 4,
                 "PcrControl": "PCR_EVERY_PES_PACKET",
                 "PmtPid": 480,
                 "PrivateMetadataPid": 503,
                 "ProgramNumber": 1,
                 "PatInterval": 0,
                 "PmtInterval": 0,
                 "TimedMetadata": "NONE",
                 "VideoPid": 481,
                 "AudioPids": [
                   482,
                   483,
                   484,
                   485,
                   486,
                   487,
                   488,
                   489,
                   490,
                   491,
                   492
                 ]
               }
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "GopSize": 2,
                   "Slices": 1,
                   "GopBReference": "DISABLED",
                   "MaxBitrate": 5000000,
                   "SlowPal": "DISABLED",
                   "SpatialAdaptiveQuantization": "ENABLED",
                   "TemporalAdaptiveQuantization": "ENABLED",
                   "FlickerAdaptiveQuantization": "DISABLED",
                   "EntropyEncoding": "CABAC",
                   "FramerateControl": "INITIALIZE_FROM_SOURCE",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "MAIN",
                   "Telecine": "NONE",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "HIGH",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "TRANSITION_DETECTION",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "INITIALIZE_FROM_SOURCE",
                   "NumberBFramesBetweenReferenceFrames": 2,
                   "RepeatPps": "DISABLED"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioRenditionSets": "program_audio",
                 "SegmentModifier": "$dt$",
                 "IFrameOnlyManifest": "EXCLUDE"
               }
             },
             "NameModifier": "_720"
           },
           {
             "ContainerSettings": {
               "Container": "M3U8",
               "M3u8Settings": {}
             },
             "AudioDescriptions": [
               {
                 "AudioSourceName": "Audio Selector 1",
                 "CodecSettings": {
                   "Codec": "AAC",
                   "AacSettings": {
                     "Bitrate": 96000,
                     "CodingMode": "CODING_MODE_2_0",
                     "SampleRate": 48000
                   }
                 }
               }
             ],
             "OutputSettings": {
               "HlsSettings": {
                 "AudioGroupId": "program_audio",
                 "AudioTrackType": "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT"
               }
             },
             "NameModifier": "_audio"
           }
         ],
         "OutputGroupSettings": {
           "Type": "HLS_GROUP_SETTINGS",
           "HlsGroupSettings": {
             "ManifestDurationFormat": "INTEGER",
             "SegmentLength": 6,
             "TimedMetadataId3Period": 10,
             "CaptionLanguageSetting": "OMIT",
             "Destination": "s3://EXAMPLE-BUCKET/HLS/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             },
             "TimedMetadataId3Frame": "PRIV",
             "CodecSpecification": "RFC_4281",
             "OutputSelection": "MANIFESTS_AND_SEGMENTS",
             "ProgramDateTimePeriod": 600,
             "MinSegmentLength": 0,
             "DirectoryStructure": "SINGLE_DIRECTORY",
             "ProgramDateTime": "EXCLUDE",
             "SegmentControl": "SEGMENTED_FILES",
             "ManifestCompression": "NONE",
             "ClientCache": "ENABLED",
             "StreamInfResolution": "INCLUDE"
           }
         }
       },
       {
         "CustomName": "MP4",
         "Name": "File Group",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "MP4",
               "Mp4Settings": {
                 "CslgAtom": "INCLUDE",
                 "FreeSpaceBox": "EXCLUDE",
                 "MoovPlacement": "PROGRESSIVE_DOWNLOAD"
               }
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 100,
               "CodecSettings": {
                 "Codec": "H_264",
                 "H264Settings": {
                   "InterlaceMode": "PROGRESSIVE",
                   "ParNumerator": 1,
                   "NumberReferenceFrames": 3,
                   "Syntax": "DEFAULT",
                   "Softness": 0,
                   "GopClosedCadence": 1,
                   "HrdBufferInitialFillPercentage": 90,
                   "GopSize": 2,
                   "Slices": 2,
                   "GopBReference": "ENABLED",
                   "HrdBufferSize": 10000000,
                   "MaxBitrate": 5000000,
                   "ParDenominator": 1,
                   "EntropyEncoding": "CABAC",
                   "RateControlMode": "QVBR",
                   "CodecProfile": "HIGH",
                   "MinIInterval": 0,
                   "AdaptiveQuantization": "AUTO",
                   "CodecLevel": "AUTO",
                   "FieldEncoding": "PAFF",
                   "SceneChangeDetect": "ENABLED",
                   "QualityTuningLevel": "SINGLE_PASS_HQ",
                   "UnregisteredSeiTimecode": "DISABLED",
                   "GopSizeUnits": "SECONDS",
                   "ParControl": "SPECIFIED",
                   "NumberBFramesBetweenReferenceFrames": 3,
                   "RepeatPps": "DISABLED",
                   "DynamicSubGop": "ADAPTIVE"
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             },
             "AudioDescriptions": [
               {
                 "AudioTypeControl": "FOLLOW_INPUT",
                 "AudioSourceName": "Audio Selector 1",
                 "CodecSettings": {
                   "Codec": "AAC",
                   "AacSettings": {
                     "AudioDescriptionBroadcasterMix": "NORMAL",
                     "Bitrate": 160000,
                     "RateControlMode": "CBR",
                     "CodecProfile": "LC",
                     "CodingMode": "CODING_MODE_2_0",
                     "RawFormat": "NONE",
                     "SampleRate": 48000,
                     "Specification": "MPEG4"
                   }
                 },
                 "LanguageCodeControl": "FOLLOW_INPUT",
                 "AudioType": 0
               }
             ]
           }
         ],
         "OutputGroupSettings": {
           "Type": "FILE_GROUP_SETTINGS",
           "FileGroupSettings": {
             "Destination": "s3://EXAMPLE-BUCKET/MP4/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             }
           }
         }
       },
       {
         "CustomName": "Thumbnails",
         "Name": "File Group",
         "Outputs": [
           {
             "ContainerSettings": {
               "Container": "RAW"
             },
             "VideoDescription": {
               "Width": 1280,
               "ScalingBehavior": "DEFAULT",
               "Height": 720,
               "TimecodeInsertion": "DISABLED",
               "AntiAlias": "ENABLED",
               "Sharpness": 50,
               "CodecSettings": {
                 "Codec": "FRAME_CAPTURE",
                 "FrameCaptureSettings": {
                   "FramerateNumerator": 1,
                   "FramerateDenominator": 5,
                   "MaxCaptures": 500,
                   "Quality": 80
                 }
               },
               "AfdSignaling": "NONE",
               "DropFrameTimecode": "ENABLED",
               "RespondToAfd": "NONE",
               "ColorMetadata": "INSERT"
             }
           }
         ],
         "OutputGroupSettings": {
           "Type": "FILE_GROUP_SETTINGS",
           "FileGroupSettings": {
             "Destination": "s3://EXAMPLE-BUCKET/Thumbnails/",
             "DestinationSettings": {
               "S3Settings": {
                 "AccessControl": {
                   "CannedAcl": "PUBLIC_READ"
                 }
               }
             }
           }
         }
       }
     ],
     "AdAvailOffset": 0,
     "Inputs": [
       {
         "AudioSelectors": {
           "Audio Selector 1": {
             "Offset": 0,
             "DefaultSelection": "DEFAULT",
             "ProgramSelection": 1
           }
         },
         "VideoSelector": {
           "ColorSpace": "FOLLOW"
         },
         "FilterEnable": "AUTO",
         "PsiControl": "USE_PSI",
         "FilterStrength": 0,
         "DeblockFilter": "DISABLED",
         "DenoiseFilter": "DISABLED",
         "TimecodeSource": "EMBEDDED",
         "FileInput": "s3://EXAMPLE-INPUT-BUCKET/input.mp4"
       }
     ]
   }
   ```

1. Na pasta `batch-transcode`, crie um arquivo com uma função Lambda. Você pode usar o seguinte exemplo Python e nomear o arquivo `convert.py`.

   As operações em lote do S3 enviam dados de tarefa específicos para uma função do Lambda e requerem os dados do resultado de volta. Para obter exemplos de solicitação e resposta para a função do Lambda, informações sobre códigos de resposta e de resultados, e exemplos de funções do Lambda para operações em lote do S3, consulte [Invocar função do AWS Lambda](batch-ops-invoke-lambda.md). 

   ```
   import json
   import os
   from urllib.parse import urlparse
   import uuid
   import boto3
   
   """
   When you run an S3 Batch Operations job, your job  
   invokes this Lambda function. Specifically, the Lambda function is 
   invoked on each video object listed in the manifest that you specify 
   for the S3 Batch Operations job in Step 5.  
   
   Input parameter "event": The S3 Batch Operations event as a request
                            for the Lambda function.
   
   Input parameter "context": Context about the event.
   
   Output: A result structure that Amazon S3 uses to interpret the result 
           of the operation. It is a job response returned back to S3 Batch Operations.
   """
   def handler(event, context):
   
       invocation_schema_version = event['invocationSchemaVersion']
       invocation_id = event['invocationId']
       task_id = event['tasks'][0]['taskId']
   
       source_s3_key = event['tasks'][0]['s3Key']
       source_s3_bucket = event['tasks'][0]['s3BucketArn'].split(':::')[-1]
       source_s3 = 's3://' + source_s3_bucket + '/' + source_s3_key
   
       result_list = []
       result_code = 'Succeeded'
       result_string = 'The input video object was converted successfully.'
   
       # The type of output group determines which media players can play 
       # the files transcoded by MediaConvert.
       # For more information, see [Creating outputs with AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/creating-streaming-and-file-outputs.html).
       output_group_type_dict = {
           'HLS_GROUP_SETTINGS': 'HlsGroupSettings',
           'FILE_GROUP_SETTINGS': 'FileGroupSettings',
           'CMAF_GROUP_SETTINGS': 'CmafGroupSettings',
           'DASH_ISO_GROUP_SETTINGS': 'DashIsoGroupSettings',
           'MS_SMOOTH_GROUP_SETTINGS': 'MsSmoothGroupSettings'
       }
   
       try:
           job_name = 'Default'
           with open('job.json') as file:
               job_settings = json.load(file)
   
           job_settings['Inputs'][0]['FileInput'] = source_s3
   
           # The path of each output video is constructed based on the values of 
           # the attributes in each object of OutputGroups in the job.json file. 
           destination_s3 = 's3://{0}/{1}/{2}' \
               .format(os.environ['amzn-s3-demo-destination-bucket'],
                       os.path.splitext(os.path.basename(source_s3_key))[0],
                       os.path.splitext(os.path.basename(job_name))[0])
   
           for output_group in job_settings['OutputGroups']:
               output_group_type = output_group['OutputGroupSettings']['Type']
               if output_group_type in output_group_type_dict.keys():
                   output_group_type = output_group_type_dict[output_group_type]
                   output_group['OutputGroupSettings'][output_group_type]['Destination'] = \
                       "{0}{1}".format(destination_s3,
                                       urlparse(output_group['OutputGroupSettings'][output_group_type]['Destination']).path)
               else:
                   raise ValueError("Exception: Unknown Output Group Type {}."
                                    .format(output_group_type))
   
           job_metadata_dict = {
               'assetID': str(uuid.uuid4()),
               'application': os.environ['Application'],
               'input': source_s3,
               'settings': job_name
           }
   
           region = os.environ['AWS_DEFAULT_REGION']
           endpoints = boto3.client('mediaconvert', region_name=region) \
               .describe_endpoints()
           client = boto3.client('mediaconvert', region_name=region, 
                                  endpoint_url=endpoints['Endpoints'][0]['Url'], 
                                  verify=False)
   
           try:
               client.create_job(Role=os.environ['MediaConvertRole'], 
                                 UserMetadata=job_metadata_dict, 
                                 Settings=job_settings)
           # You can customize error handling based on different error codes that 
           # MediaConvert can return.
           # For more information, see [MediaConvert error codes](https://docs.aws.amazon.com/mediaconvert/latest/ug/mediaconvert_error_codes.html). 
           # When the result_code is TemporaryFailure, S3 Batch Operations retries 
           # the task before the job is completed. If this is the final retry, 
           # the error message is included in the final report.
           except Exception as error:
               result_code = 'TemporaryFailure'
               raise
       
       except Exception as error:
           if result_code != 'TemporaryFailure':
               result_code = 'PermanentFailure'
           result_string = str(error)
   
       finally:
           result_list.append({
               'taskId': task_id,
               'resultCode': result_code,
               'resultString': result_string,
           })
   
       return {
           'invocationSchemaVersion': invocation_schema_version,
           'treatMissingKeyAs': 'PermanentFailure',
           'invocationId': invocation_id,
           'results': result_list
       }
   ```

1. Para criar um pacote de implantação com `convert.py` e `job.json` como um arquivo `.zip`, denominado `lambda.zip` em seu terminal local, abra a pasta `batch-transcode` que você criou antes e execute o comando a seguir.

   Para **usuários do macOS**, execute o seguinte comando:

   ```
   zip -r lambda.zip convert.py job.json                
   ```

   Para **usuários do Windows**, execute os seguintes comandos:

   ```
   powershell Compress-Archive convert.py lambda.zip
   ```

   ```
   powershell Compress-Archive -update job.json lambda.zip                
   ```

### Crie uma função Lambda com uma função de execução (console)
<a name="batchops-s3-step4-create-function"></a>

1. 

   Abra o console AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. No painel de navegação à esquerda, escolha **Functions** (Funções).

1. Escolha **Create function** (Criar função).

1. Escolha **Author from scratch** (Criar do zero).

1. Em **Basic information** (Informações básicas), faça o seguinte:

   1. Em **Function name** (Nome da função), insira **tutorial-lambda-convert**.

   1. Em **Runtime**, selecione **Python 3.13**.

1. Escolha **Change default execution role** (Alterar a função de execução padrão) e, em **Execution role** (Função de execução), escolha **Use an existing role** (Usar uma função existente).

1. Em **Exiting role** (Função de saída), escolha o nome da função do IAM que você criou para sua função do Lambda na [Etapa 3](#batchops-s3-step3) (por exemplo, **tutorial-lambda-transcode-role**).

1. Mantenha as configurações restantes definidas conforme os padrões.

1. Escolha **Create function** (Criar função).

### Implante sua função Lambda com arquivos .zip e configure a função Lambda (console)
<a name="batchops-s3-step4-deploy-function"></a>

1. Na seção **Code Source** (Código-fonte) da página da função do Lambda que você criou (por exemplo, **tutorial-lambda-convert**), escolha **Upload from** (Carregar de) e depois **.zip file** (arquivo .zip).

1. Selecione **Upload** (Carregar) para selecionar seu arquivo `.zip` local.

1. Selecione o arquivo `lambda.zip` que você criou antes e escolha **Open** (Abrir).

1. Escolha **Salvar**.

1. Na seção **Runtime settings** (Configurações do tempo de execução), escolha **Edit** (Editar). 

1. Para informar ao tempo de execução do Lambda qual método de handler em seu código de função do Lambda deve invocar, insira no campo **convert.handler** **Handler**.

   Ao configurar uma função em Python, o valor da configuração do handler é o nome do arquivo e o nome do módulo do handler exportado, separados por um ponto (`.`). Por exemplo, `convert.handler` chama o método `handler` definido no arquivo `convert.py`.

1. Escolha **Salvar**.

1. Em sua página da função Lambda, escolha a guia **Configuration** (Configuração). No painel de navegação esquerdo na guia **Configuration** (Configuração), escolha **Environment variables** (Variáveis de ambiente) e, depois, escolha **Edit** (Editar).

1. Escolha **Add environment variable (Adicionar variável de ambiente)**. Em seguida, insira a **Key** (Chave) e o **Value** (Valor) especificados para cada uma das seguintes variáveis de ambiente:
   + **Key** (Chave): **DestinationBucket** **Value** (Valor): **amzn-s3-demo-destination-bucket1** 

     Este valor é o bucket do S3 para os arquivos de mídia de saída que você criou na [Etapa 1](#batchops-s3-step1).
   + **Key** (Chave): **MediaConvertRole** **Value** (Valor): **arn:aws:iam::*111122223333*:role/tutorial-mediaconvert-role** 

     Este valor é o ARN da função do IAM para MediaConvert que você criou na [Etapa 2](#batchops-s3-step2). Certifique-se de substituir esse ARN pelo ARN real da sua função do IAM.
   + **Key** (Chave): **Application** **Value** (Valor): **Batch-Transcoding** 

     Esse valor é o nome da sua aplicação.

1. Escolha **Salvar**.

1. (Opcional) Na guia **Configuration** (Configuração), na seção **General configuration** (Configuração geral) do painel de navegação à esquerda, escolha **Edit** (Editar). No campo **Timeout** (Tempo limite), insira **2** min **0** segundos. Selecione **Salvar**.

   **Timeout** (Tempo limite) é a quantidade de tempo durante a qual o Lambda permite que uma função seja executada entes de interrompê-la. O padrão é 3 segundos. O preço é baseado na quantidade de memória configurada e na quantidade de tempo em que o código é executado. Para obter mais informações, consulte [Preços do AWS Lambda](https://aws.amazon.com/lambda/pricing/?icmpid=docs_console_unmapped).

## Etapa 5: Configurar o inventário do Amazon S3 para seu bucket de origem do S3
<a name="batchops-s3-step5"></a>

Depois de configurar a função de transcodificação do Lambda, crie um trabalho de operações em lote do S3 para transcodificar um conjunto de vídeos. Primeiro, você precisa de uma lista de objetos de vídeo de entrada nos quais deseja que as operações em lote do S3 executem a ação de transcodificação especificada. Para obter uma lista de objetos de vídeo de entrada, você pode gerar um relatório de inventário do S3 para o bucket de origem do S3 (por exemplo, `amzn-s3-demo-source-bucket`). 

**Topics**
+ [

### Crie e configure um bucket para relatórios de inventário do S3 para vídeos de entrada
](#batchops-s3-step5-bucket)
+ [

### Configure o inventário do Amazon S3 para o bucket de origem de vídeo do S3
](#batchops-s3-step5-inventory)
+ [

### Confira o relatório de inventário para o seu bucket de origem de vídeo S3
](#batchops-s3-step5-manifest)

### Crie e configure um bucket para relatórios de inventário do S3 para vídeos de entrada
<a name="batchops-s3-step5-bucket"></a>

Para armazenar relatórios de inventário do S3 que listam os objetos do bucket de origem do S3, você precisa criar um bucket de destino de inventário do S3 e depois configurar uma política de bucket para que o bucket grave os arquivos de inventário no bucket de origem do S3.

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Selecione **Criar bucket**. 

1. Em **Bucket name** (Nome do bucket), insira um nome para o seu bucket (por exemplo, `amzn-s3-demo-destination-bucket2`). 

1. Em **Região da AWS**, escolha a Região da AWS na qual você deseja que o bucket resida. 

   O bucket de destino do inventário deve estar na mesma Região da AWS que o bucket de origem para o qual você está configurando o inventário do S3. O bucket de destino do inventário pode estar em uma diferente Conta da AWS. 

1. Em **Block Public Access settings for this bucket** (Configurações de bloquear acesso público para este bucket), mantenha as configurações padrão (**Block *all *public access** (Bloquear todo acesso público) está habilitado). 

1. Mantenha as configurações restantes definidas conforme os padrões. 

1. Selecione **Criar bucket**.

1. Na lista de **Buckets**, escolha o nome do bucket que você acabou de criar (por exemplo, `amzn-s3-demo-destination-bucket2`).

1. Para conceder permissão ao Amazon S3 para gravar dados para os relatórios de inventário no bucket de destino de inventário do S3, escolha a guia **Permissions** (Permissões).

1. Role para baixo até a seção **Bucket policy** (Política de bucket) e escolha **Edit** (Editar). A página **Bucket policy** (Política de bucket) se abre.

1. Para conceder permissões para o inventário do S3, no campo **Policy** (Política), cole a seguinte política de bucket.

   Substitua os três valores do exemplo pelos seguintes valores: 
   + O nome do bucket criado para armazenar os relatórios de inventário (por exemplo, `amzn-s3-demo-destination-bucket2`).
   + O nome do bucket de origem que armazena os vídeos de entrada (por exemplo, `amzn-s3-demo-source-bucket`). 
   + O ID da Conta da AWS que você usou para criar o bucket de origem do vídeo S3 (por exemplo, `111122223333`).

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
       {
         "Sid":"InventoryAndAnalyticsExamplePolicy",
         "Effect":"Allow",
         "Principal": {"Service": "s3.amazonaws.com"},
         "Action":"s3:PutObject",
         "Resource":["arn:aws:s3:::amzn-s3-demo-destination-bucket2/*"],
         "Condition": {
             "ArnLike": {
                 "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket"
              },
            "StringEquals": {
                "aws:SourceAccount": "111122223333",
                "s3:x-amz-acl": "bucket-owner-full-control"
             }
          }
       }
     ]
   }
   ```

------

1. Escolha **Salvar alterações**.

### Configure o inventário do Amazon S3 para o bucket de origem de vídeo do S3
<a name="batchops-s3-step5-inventory"></a>

Para gerar uma lista de arquivos simples de objetos de vídeo e metadados, você deve configurar o inventário do S3 para o seu bucket de origem de vídeo do S3. Esses relatórios programados podem incluir todos os objetos no bucket ou objetos agrupados por um prefixo compartilhado. Neste tutorial, o relatório de inventário do S3 inclui todos os objetos de vídeo em seu bucket de origem do S3.

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Para configurar um relatório de inventário do S3 dos vídeos de entrada no bucket de origem do S3, na seção **Buckets**, escolha o nome do bucket de origem do S3 (por exemplo, `amzn-s3-demo-source-bucket`).

1. Escolha a guia **Gerenciamento**.

1. Role para baixo até a seção **Inventory configurations** (Configurações de inventário), e escolha **Create Inventory configuration** (Criar configuração de inventário). 

1. Para **Inventory configuration name** (Nome da configuração de inventário), insira um nome (por exemplo, **tutorial-inventory-config**). 

1. Em **Escopo do inventário**, escolha **Somente versão atual** para **Versões do objeto** e, para este tutorial, mantenha as outras configurações de **Escopo do inventário** definidas com os padrões. 

1. Na seção **Report details** (Detalhes do relatório), para **Destination bucket** (Bucket de destino), escolha **This account** (Esta conta). 

1. Para **Destination** (Destino), escolha **Browse S3** (Procurar no S3) e escolha o bucket de destino que você criou antes para salvar os relatórios de inventário (por exemplo, `amzn-s3-demo-destination-bucket2`). Em seguida, escolha **Choose path** (Escolher caminho). 

   O bucket de destino do inventário deve estar na mesma Região da AWS que o bucket de origem para o qual você está configurando o inventário do S3. O bucket de destino do inventário pode estar em uma diferente Conta da AWS. 

   No campo de bucket de **Destination** (Destino), a **Destination bucket permission** (Permissão do bucket de destino) é adicionada à política de bucket de destino para permitir que o Amazon S3 coloque dados nesse bucket de destino do inventário. Para obter mais informações, consulte [Criação de uma política de bucket de destino](configure-inventory.md#configure-inventory-destination-bucket-policy).

1. Em **Frequency** (Frequência), escolha **Daily** (Diária).

1. Em **Output format** (Formato de saída), escolha **CSV**. 

1. Em **Status**, escolha **Enabled** (Habilitado). 

1. Em **Server-side encryption** (Criptografia do lado do servidor), escolha **Disable** (Desabilitar) para este tutorial. 

   Para obter mais informações, consulte [Configurar um inventário usando o console do S3](configure-inventory.md#configure-inventory-console) e [Conceder permissão para que o Amazon S3 use a sua chave gerenciada pelo cliente para criptografia](configure-inventory.md#configure-inventory-kms-key-policy). 

1. Na seção **Additional fields - *optional*** (Campos adicionais - opcionais), escolha **Size** (Tamanho), **Last modified** (Última modificação) e **Storage class** (Classe de armazenamento). 

1. Escolha **Criar**.

Para obter mais informações, consulte [Configurar um inventário usando o console do S3](configure-inventory.md#configure-inventory-console).

### Confira o relatório de inventário para o seu bucket de origem de vídeo S3
<a name="batchops-s3-step5-manifest"></a>

Quando um relatório de inventário é publicado, os arquivos manifestos são enviados para o bucket de destino do S3.

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista de **Buckets**, escolha o nome do bucket de origem de vídeo (por exemplo, `amzn-s3-demo-source-bucket`).

1. Escolha **Management** (Gerenciamento).

1. Para ver se o relatório de inventário do S3 está pronto para você poder criar um trabalho de operações em lote do S3 na [Etapa 7](#batchops-s3-step7), em **Inventory configurations** (Configurações do inventário), confira se o botão **Create job from manifest** (Criar trabalho a partir do manifesto) está habilitado.
**nota**  
O primeiro relatório de inventário pode demorar até 48 horas para ser entregue. Se o botão **Create job from manifest** (Criar trabalho do manifesto) estiver desativado, o primeiro relatório de inventário não foi entregue. Espere até que o primeiro relatório de inventário seja entregue e o botão **Create job from manifest** (Criar trabalho a partir do manifesto) esteja habilitado para criar um trabalho de operações em lote do S3 na [Etapa 7](#batchops-s3-step7). 

1. Para conferir um relatório de inventário do S3 (`manifest.json`), na coluna **Destination** (Destino), escolha o nome do bucket de destino do inventário que você criou antes para armazenar relatórios de inventário (por exemplo, `amzn-s3-demo-destination-bucket2`).

1. Na guia **Objects** (Objetos), escolha a pasta existente com o nome do seu bucket de origem do S3 (por exemplo, `amzn-s3-demo-source-bucket`). Em seguida, escolha o nome que você inseriu em **Inventory configuration name** (Nome da configuração do inventário) quando criou a configuração de inventário antes (por exemplo, **tutorial-inventory-config**).

   Você pode ver uma lista de pastas com as datas de geração dos relatórios como seus nomes. 

1. Para conferir o relatório de inventário diário do S3 para uma determinada data, escolha a pasta com um nome de data de geração e depois escolha `manifest.json`. 

1. Para verificar os detalhes do relatório de inventário em uma data específica, na página **manifesto.json**, escolha **Download** (Baixar) ou **Open** (Abrir).

## Etapa 6: criar uma função do IAM para operações em lote do S3
<a name="batchops-s3-step6"></a>

Para usar as operações em lote do S3 para fazer transcodificação em lote, você deve primeiro criar uma função do IAM para conceder permissões ao Amazon S3 para executar as operações em lote do S3. 

**Topics**
+ [

### Criar uma política do IAM para operações em lote do S3
](#batchops-s3-step6-policy)
+ [

### Crie uma função do IAM de operações em lote do S3 e anexe políticas de permissão
](#batchops-s3-step6-role)

### Criar uma política do IAM para operações em lote do S3
<a name="batchops-s3-step6-policy"></a>

Você deve criar uma política do IAM que conceda permissão às operações em lote do S3 para ler o manifesto de entrada, invocar a função do Lambda e gravar o relatório de conclusão do trabalho de operações em lote do S3. 

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Políticas**.

1. Escolha **Criar política**.

1. Escolha a guia **JSON**.

1. No campo de texto **JSON**, cole a política JSON a seguir.

   Na política JSON, substitua os quatro valores do exemplo pelos seguintes valores:
   + O nome do bucket de origem que armazena vídeos de entrada (por exemplo, `amzn-s3-demo-source-bucket`).
   + O nome do bucket de destino de inventário que você criou na [Etapa 5](#batchops-s3-step5) para armazenar os arquivos `manifest.json` (por exemplo, `amzn-s3-demo-destination-bucket2`).
   + O nome do bucket que você criou na [Etapa 1](#batchops-s3-step1) para armazenar arquivos de mídia de saída (por exemplo, `amzn-s3-demo-destination-bucket1`). Neste tutorial, colocamos relatórios de conclusão de trabalho no bucket de destino para arquivos de mídia de saída. 
   + A função ARN da função Lambda que você criou na [Etapa 4](#batchops-s3-step4). Para localizar e copiar o ARN da função do Lambda, faça o seguinte: 
     + Em uma nova guia do navegador, abra a página **Functions** (Funções) no console do Lambda em [https://console.aws.amazon.com/lambda/home#/functions](https://console.aws.amazon.com/lambda/home#/functions).
     + Na lista de **Functions** (Funções), escolha o nome da função do Lambda que você criou na [Etapa 4](#batchops-s3-step4) (por exemplo, **tutorial-lambda-convert**).
     + Escolha **Copy ARN** (Copiar ARN).

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3Get",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
                   "arn:aws:s3:::amzn-s3-demo-destination-bucket2/*"
               ]
           },
           {
               "Sid": "S3PutJobCompletionReport",
               "Effect": "Allow",
               "Action": "s3:PutObject",
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket1/*"
           },
           {
               "Sid": "S3BatchOperationsInvokeLambda",
               "Effect": "Allow",
               "Action": [
                   "lambda:InvokeFunction"
               ],
               "Resource": [
                   "arn:aws:lambda:us-west-2:111122223333:function:tutorial-lambda-convert"
               ]
           }
       ]
   }
   ```

------

1. Escolha **Próximo: tags**.

1. Selecione **Próximo: revisar**.

1. No campo **Name** (Nome), insira **tutorial-s3batch-policy**.

1. Escolha **Criar política**.

### Crie uma função do IAM de operações em lote do S3 e anexe políticas de permissão
<a name="batchops-s3-step6-role"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Roles** (Funções) e **Create role** (Criar função).

1. Escolha o tipo de função **AWS service (Serviço da AWS)** e depois escolha o serviço **S3**.

1. Em **Select your use case** (Selecionar seu caso de uso), escolha **S3 Batch Operations** (Operações em lote do S3).

1. Escolha **Próximo**.

1. Em **Anexar políticas de permissões**, insira o nome da política do IAM que você criou antes (por exemplo, **tutorial-s3batch-policy**) na caixa de pesquisa para filtrar a lista de políticas. Marque a caixa de seleção ao lado do nome da política (por exemplo, **tutorial-s3batch-policy**). 

1. Escolha **Próximo**.

1. Em **Nome do perfil**, insira **tutorial-s3batch-role**.

1. Escolha **Create role** (Criar função).

   Depois que você cria a função do IAM para as operações em lote do S3, a política de confiança a seguir é anexada automaticamente à função. Essa política de confiança permite que o principal das operações em lote do S3 assuma a função do IAM.

------
#### [ JSON ]

****  

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

------

## Etapa 7: criar e executar um trabalho de operações em lote do S3
<a name="batchops-s3-step7"></a>

Para criar um trabalho de operações em lote do S3 para processar os vídeos de entrada no bucket de origem do S3, você deve especificar os parâmetros para esse trabalho específico.

**nota**  
Antes de começar a criar um trabalho de operações em lote do S3, certifique-se de que o botão **Create job from manifest** (Criar trabalho a partir do manifesto) esteja habilitado. Para obter mais informações, consulte [Confira o relatório de inventário para o seu bucket de origem de vídeo S3](#batchops-s3-step5-manifest). Se o botão **Create job from manifest** (Criar trabalho a partir do manifesto) estiver desabilitado, o primeiro relatório de inventário não foi entregue e você deve esperar até que o botão esteja habilitado. Depois de configurar o inventário do Amazon S3 para o bucket de origem do S3 na [Etapa 5](#batchops-s3-step5), a entrega do primeiro relatório de inventário pode levar até 48 horas.

**Topics**
+ [

### Criar um trabalho de operações em lote do S3
](#batchops-s3-step7-create-job)
+ [

### Execute o trabalho de operações em lote do S3 para chamar a função Lambda
](#batchops-s3-step7-run-job)
+ [

### (Opcional) Verificar seu relatório de conclusão
](#batchops-s3-step7-check-report)
+ [

### (Opcional) Monitore cada chamada do Lambda no console do Lambda
](#batchops-s3-step7-monitor-lambda)
+ [

### (Opcional) Monitore cada trabalho de transcodificação de vídeo MediaConvert no console do MediaConvert
](#batchops-s3-step7-monitor-mediaconvert)

### Criar um trabalho de operações em lote do S3
<a name="batchops-s3-step7-create-job"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação esquerdo, escolha **Batch Operations** (Operações em lote).

1. Escolha **Criar trabalho**.

1. Para **Região da AWS**, escolha a região onde você deseja criar o trabalho.

   Neste tutorial, para usar o trabalho de operações em lote do S3 para invocar uma função do Lambda, você deve criar o trabalho na mesma região que o bucket de origem de vídeo do S3 onde os objetos referenciados no manifesto estão localizados.

1. Na seção **Manifest** (Manifesto), faça o seguinte:

   1. Para **Manifest format** (Formato do manifesto), escolha **S3 Inventory report (manifest.json)** (Relatório do S3 Inventory [manifest.json]).

   1. Para **Manifest object** (Objeto de manifesto), escolha **Browse S3** (Procurar no S3) para encontrar o bucket que você criou na [Etapa 5](#batchops-s3-step5) para armazenar relatórios de inventário (por exemplo, `amzn-s3-demo-destination-bucket2`). Na página **Manifest object**, (Objeto de manifesto) navegue pelos nomes de objetos até encontrar um arquivo `manifest.json` para uma data específica. Este arquivo lista as informações sobre todos os vídeos que você deseja transcodificar em lote. Quando encontrar o arquivo `manifest.json` que você deseja usar, escolha o botão de opção ao lado dele. Em seguida, escolha **Choose path** (Escolher caminho).

   1. (Opcional) Para **Manifest object version ID - *optional*** (ID da versão do objeto de manifesto - opcional) insira o ID de versão do objeto de manifesto se quiser usar uma versão que não seja a mais recente.

1. Escolha **Próximo**.

1. Para usar a função do Lambda para transcodificar todos os objetos listados no arquivo `manifest.json` selecionado, em **Operation type** (Tipo de operação), escolha **Invoke AWS Lambda function** (Invocar função do IAM).

1. Na seção **Invoke Lambda Function** (Invocar função do Lambda), faça o seguinte:

   1. Escolha **Choose from functions in your account** (Escolher das funções de sua conta).

   1. Para **Lambda function** (Função do Lambda), escolha a função do Lambda que você criou na [Etapa 4](#batchops-s3-step4) (por exemplo, **tutorial-lambda-convert**).

   1. Para **Lambda function version** (Versão da função do Lambda), mantenha o valor padrão **\$1LATER**.

1. Escolha **Próximo**. A página **Configure additional options** (Configurar opções adicionais) se abre.

1. Na seção **Additional options** (Opções adicionais), mantenha as configurações padrão.

   Para saber mais sobre essas opções, consulte [Elementos da solicitação de trabalho de Operações em lote](batch-ops-create-job.md#batch-ops-create-job-request-elements).

1. Na seção **Completion report** (Relatório de conclusão) para **Path to completion report destination** (Caminho para o destino do relatório de conclusão), escolha **Browse S3** (Procurar no S3). Encontre o nome do bucket para armazenar os arquivos de mídia de saída que você criou na [Etapa 1](#batchops-s3-step1) (por exemplo, `amzn-s3-demo-destination-bucket1`). Escolha o botão de opção ao lado do nome desse bucket. Em seguida, escolha **Choose path** (Escolher caminho).

   Para as demais configurações de **Relatório de conclusão**, mantenha os padrões. Para obter mais informações sobre conclusão de configurações do relatório, consulte [Elementos da solicitação de trabalho de Operações em lote](batch-ops-create-job.md#batch-ops-create-job-request-elements). Um relatório de conclusão mantém um registro dos detalhes do trabalho e das operações executadas.

1. Em **Permissions** (Permissões), escolha **Choose from existing IAM roles** (Escolher entre as funções do IAM existentes). Para **IAM role** (Função do IAM), escolha a função do IAM para seu trabalho de operações em lote do S3 que você criou na [Etapa 6](#batchops-s3-step6) (por exemplo, **tutorial-s3batch-role**).

1. Escolha **Próximo**.

1. Na página **Review** (Revisão), revise as configurações. Depois, escolha **Create Job** (Criar trabalho).

   Depois que o S3 termina de ler o manifesto do trabalho de operações em lote do S3, ele define o **Status** do trabalho como **Awaiting your confirmation to run** (Aguardando sua confirmação para ser executado). Para ver as atualizações do status do trabalho, atualize a página. Você não pode executar seu trabalho até que o status dele seja **Awaiting your confirmation to run** (Aguardando sua confirmação para ser executado).

### Execute o trabalho de operações em lote do S3 para chamar a função Lambda
<a name="batchops-s3-step7-run-job"></a>

Execute seu trabalho de operações em lote para chamar sua função Lambda para transcodificação de vídeo. Se o trabalho falhar, você pode conferir o relatório da conclusão para identificar a causa.

**Para executar o trabalho de operações em lote do S3**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação esquerdo, escolha **Batch Operations** (Operações em lote).

1. Na lista **Jobs** (Trabalhos), escolha a opção **Job ID** (ID do trabalho) na primeira linha, que é o trabalho das operações em lote do S3 que você criou antes.

1. Escolha **Run job** (Executar trabalho). 

1. Revise os parâmetros do job novamente e confirme se o valor para **Total objects listed in manifest** (Total de objeto listados no manifesto) é o mesmo do número de objetos no manifesto. Em seguida, selecione **Run job** (Executar trabalho).

   A página de trabalho de operações em lote do S3 é aberta.

1. Depois que o trabalho começar a execução, em sua página de trabalho em **Status**, verifique o andamento de seu trabalho de operações em lote do S3, como **Status**, **% Complete** (% de conclusão), **Total succeeded (rate)** (Total com êxito [taxa]), **Total failed (rate)** (Total com falha [taxa]), **Date terminated** (Data de término) e **Reason for termination** (Motivo do término).

   Quando o trabalho de operações em lote do S3 for concluído, visualize os dados na página do trabalho para confirmar que o trabalho foi concluído conforme esperado. 

   Se mais de 50% das operações de objeto do trabalho das operações em lote do S3 falharem após mais de 1.000 tentativas, o trabalho automaticamente falha. Para conferir o relatório de conclusão para identificar a causa das falhas, consulte o procedimento opcional abaixo.

### (Opcional) Verificar seu relatório de conclusão
<a name="batchops-s3-step7-check-report"></a>

Você pode usar o relatório de conclusão para determinar quais objetos falharam e a causa das falhas.

**Para conferir o relatório de conclusão para obter detalhes sobre os objetos que falharam**

1. Na página do trabalho de operações em lote do S3, role para baixo até a seção **Completion report** (Relatório de conclusão) e escolha o link em **Completion report destination** (Destino do relatório de conclusão).

   A página do bucket de destino de saída do S3 se abre.

1. Na guia **Objects** (Objetos), escolha a pasta que tem um nome que termina com o ID do trabalho de operações em lote do S3 que você criou antes.

1. Escolha **results/** (resultados/).

1. Marque a caixa de seleção próxima ao arquivo `.csv`.

1. Para visualizar o relatório de trabalhos, escolha **Open** (Abrir) ou **Download** (Baixar).

### (Opcional) Monitore cada chamada do Lambda no console do Lambda
<a name="batchops-s3-step7-monitor-lambda"></a>

Depois que o trabalho de operações em lote do S3 começa a ser executado, o trabalho invoca a função do Lambda para cada objeto de vídeo de entrada. O S3 grava logs de cada chamada do Lambda no CloudWatch Logs. Você pode usar o painel de monitoramento do console do Lambda para monitorar sua função Lambda. 

1. Abra o console AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. No painel de navegação à esquerda, escolha **Functions** (Funções).

1. Na lista **Functions** (Funções), escolha o nome da função do Lambda que você criou na [Etapa 4](#batchops-s3-step4) (por exemplo, **tutorial-lambda-convert**).

1. Escolha a guia **Monitor** (Monitorar).

1. Em **Metrics** (Métricas), consulte as métricas de tempo de execução para sua função Lambda.

1. Em **Logs**, visualize dados de log para cada chamada do Lambda por meio do CloudWatch Logs Insights
**nota**  
Quando você usa as operações em lote do S3 com uma função Lambda, essa função Lambda é chamada em cada objeto. Se o trabalho de operações em lote do S3 for grande, ele poderá chamar várias funções Lambda ao mesmo tempo, causando um pico na simultaneidade do Lambda.   
Cada Conta da AWS tem uma cota de simultaneidade do Lambda por região. Para obter mais informações, consulte [Escalabilidade de função do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/invocation-scaling.html) no *Guia do desenvolvedor do AWS Lambda*. Uma prática recomendada para usar funções Lambda com operações em lote do S3 é definir um limite de simultaneidade na própria função Lambda. Definir um limite de simultaneidade evita que seu trabalho consuma a maior parte de sua simultaneidade do Lambda e potencialmente restrinja a utilização de outras funções em sua conta. Para obter mais informações, consulte [Gerenciamento de simultaneidade reservada do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html) no *Guia do desenvolvedor do AWS Lambda*.

### (Opcional) Monitore cada trabalho de transcodificação de vídeo MediaConvert no console do MediaConvert
<a name="batchops-s3-step7-monitor-mediaconvert"></a>

Um trabalho do MediaConvert se encarrega da transcodificação de um arquivo de mídia. Quando o trabalho de operações em lote do S3 invoca sua função do Lambda para cada vídeo, cada invocação da função do Lambda cria um trabalho de transcodificação do MediaConvert para cada vídeo de entrada. 

1. Faça login no Console de gerenciamento da AWS e abra o console do MediaConvert em [https://console.aws.amazon.com/mediaconvert/](https://console.aws.amazon.com/mediaconvert/).

1. Se a página introdutória MediaConvert for exibida, escolha **Get started** (Conceitos básicos).

1. Na lista de **Jobs** (Trabalhos), visualize cada linha para monitorar a tarefa de transcodificação para cada vídeo de entrada. 

1. Identifique a linha de um trabalho que você deseja conferir e escolha o link **Job ID** (ID do trabalho) para abrir a página de detalhes do trabalho.

1. Na página **Job summary** (Resumo do trabalho) em **Outputs** (Saídas), escolha o link para a saída HLS, MP4 ou miniaturas, dependendo do que é suportado pelo navegador, para ir para o bucket de destino do S3 para os arquivos de mídia de saída.

1. Na pasta correspondente (HLS, MP4 ou Thumbnails [Miniaturas]) do bucket de destino de saída do S3, escolha o nome do objeto de arquivo de mídia de saída.

   A página de details do objeto se abre.

1. Na página de detalhes do objeto, em **Object overview** (Visão geral do objeto), escolha o link em **Object URL** (URL do objeto) para assistir ao arquivo de mídia de saída transcodificado.

## Etapa 8: Conferir os arquivos de mídia de saída do bucket de destino do S3
<a name="batchops-s3-step8"></a>

**Para conferir os arquivos de mídia de saída do bucket de destino do S3**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista **Buckets**, escolha o nome do bucket de destino do S3 para os arquivos de mídia de saída que você criou na [Etapa 1](#batchops-s3-step1) (por exemplo, `amzn-s3-demo-destination-bucket1`).

1. Na guia **Objects** (Objetos), cada vídeo de entrada tem uma pasta com o nome do vídeo de entrada. Cada pasta contém os arquivos de mídia de saída transcodificados para um vídeo de entrada.

   Para verificar os arquivos de mídia de saída para um vídeo de entrada, faça o seguinte:

   1. Escolha a pasta com o nome do vídeo de entrada que você deseja conferir.

   1. Escolha a pasta **Default/** (Padrão/).

   1. Escolha a pasta para um formato transcodificado (HLS, MP4 ou miniaturas neste tutorial). 

   1. Escolha o nome do arquivo de mídia de saída.

   1. Para ver o arquivo transcodificado, na página de detalhes do objeto, escolha o link em **Object URL** (URL do objeto). 

      Os arquivos de mídia de saída no formato HLS são divididos em segmentos curtos. Para reproduzir esses vídeos, incorpore o URL do objeto do arquivo `.m3u8` em um player compatível.

## Etapa 9: limpar
<a name="batchops-s3-step9"></a>

Se você transcodificou vídeos usando as operações em lote do S3, o Lambda e o MediaConvert somente como um exercício de aprendizado, exclua os recursos da AWS alocados para que não haja mais encargos. 

**Topics**
+ [

### Exclua a configuração do inventário do S3 para o bucket de origem do S3
](#batchops-s3-step9-delete-inventory)
+ [

### Excluir a função Lambda
](#batchops-s3-step9-delete-lambda)
+ [

### Excluir o grupo de logs do CloudWatch
](#batchops-s3-step9-delete-cw)
+ [

### Exclua as funções do IAM junto com as políticas em linha das funções do IAM
](#batchops-s3-step9-delete-role)
+ [

### Exclua a política do IAM gerenciada pelo cliente
](#batchops-s3-step9-delete-policy)
+ [

### Esvaziar os buckets do S3
](#batchops-s3-step9-empty-bucket)
+ [

### Excluir os buckets do S3
](#batchops-s3-step9-delete-bucket)

### Exclua a configuração do inventário do S3 para o bucket de origem do S3
<a name="batchops-s3-step9-delete-inventory"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista de **Buckets**, selecione o nome do bucket de origem (por exemplo, `amzn-s3-demo-source-bucket`).

1. Escolha a guia **Gerenciamento**.

1. Em **Inventory configurations** (Configurações do inventário), escolha o botão de opção ao lado da configuração de inventário que você criou na [Etapa 5](#batchops-s3-step5) (por exemplo, **tutorial-inventory-config**).

1. Escolha **Delete** (Excluir) e, em seguida, escolha **Confirm** (Confirmar).

### Excluir a função Lambda
<a name="batchops-s3-step9-delete-lambda"></a>

1. 

   Abra o console AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. No painel de navegação à esquerda, escolha **Functions** (Funções).

1. Marque a caixa de seleção ao lado da função que você criou na [Etapa 4](#batchops-s3-step4) (por exemplo, **tutorial-lambda-convert**).

1. Escolha **Ações** e, em seguida, escolha **Excluir**.

1. Na caixa de diálogo **Delete function** (Excluir função), escolha **Delete** (Excluir).

### Excluir o grupo de logs do CloudWatch
<a name="batchops-s3-step9-delete-cw"></a>

1. Abra o console do CloudWatch em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. No painel de navegação à esquerda, escolha **Logs** e, em seguida, escolha **Log groups** (Grupos de log).

1. Marque a caixa de seleção ao lado do grupo de logs que tem um nome que termina com a função do Lambda que você criou na [Etapa 4](#batchops-s3-step4) (por exemplo, **tutorial-lambda-convert**).

1. Escolha **Actions** (Ações) e **Delete log group(s)** (Excluir grupo(s) de log).

1. Na caixa de diálogo **Delete log group(s)** (Excluir grupo(s) de logs), escolha **Delete** (Excluir).

### Exclua as funções do IAM junto com as políticas em linha das funções do IAM
<a name="batchops-s3-step9-delete-role"></a>

Para excluir as funções do IAM criadas na [Etapa 2](#batchops-s3-step2), [Etapa 3](#batchops-s3-step3) e [Etapa 6](#batchops-s3-step6), faça o seguinte: 

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação da esquerda, escolha **Roles** (Funções) e marque as caixas de seleção ao lado do nome da função que você deseja excluir.

1. Na parte superior da página, escolha **Delete** (Excluir).

1. Na caixa de diálogo de confirmação, insira a resposta necessária no campo de entrada de texto com base no prompt e escolha **Delete** (Excluir). 

### Exclua a política do IAM gerenciada pelo cliente
<a name="batchops-s3-step9-delete-policy"></a>

Para excluir a política do IAM gerenciada pelo cliente que você criou na [Etapa 6](#batchops-s3-step6), faça o seguinte:

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação à esquerda, escolha **Políticas**.

1. Escolha o botão de opção ao lado da política que você criou na [Etapa 6](#batchops-s3-step6) (por exemplo, **tutorial-s3batch-policy**). É possível usar a caixa de pesquisa para filtrar a lista de políticas.

1. Escolha **Actions** (Ações) e, em seguida, escolha **Delete** (Excluir). 

1. Confirme que deseja excluir esta política, inserindo o nome da política no campo de texto, e escolha **Delete** (Excluir). 

### Esvaziar os buckets do S3
<a name="batchops-s3-step9-empty-bucket"></a>

Para esvaziar os buckets do S3 criados em [Pré-requisitos](#batchops-s3-prerequisites), [Etapa 1](#batchops-s3-step1) e [Etapa 5](#batchops-s3-step5), faça o seguinte: 

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista **Buckets**, escolha o botão de opção ao lado do nome do bucket que você deseja esvaziar e depois escolha **Empty** (Esvaziar).

1. Na página **Empty bucket** (Esvaziar bucket), confirme se deseja esvaziar o bucket inserindo **permanently delete** no campo de texto e depois escolha **Empty** (Esvaziar).

### Excluir os buckets do S3
<a name="batchops-s3-step9-delete-bucket"></a>

Para excluir os buckets do S3 criados em [Pré-requisitos](#batchops-s3-prerequisites), [Etapa 1](#batchops-s3-step1) e [Etapa 5](#batchops-s3-step5), faça o seguinte: 

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets**.

1. Na lista **Buckets**, escolha o botão de opção ao lado do nome do bucket que você deseja excluir.

1. Escolha **Excluir**.

1. Na página **Delete bucket** (Excluir bucket), confirme se deseja excluir o bucket inserindo o nome do bucket no campo de texto e escolha **Delete bucket** (Excluir bucket).

## Próximas etapas
<a name="batchops-s3-next-steps"></a>

Depois de concluir este tutorial, você poderá explorar outros casos de uso relevantes:
+ Você pode usar o Amazon CloudFront para transmitir os arquivos de mídia transcodificados para espectadores em todo o mundo. Para obter mais informações, consulte [Tutorial: Hospedagem de transmissão sob demanda com o Amazon S3, Amazon CloudFront e Amazon Route 53](tutorial-s3-cloudfront-route53-video-streaming.md).
+ Você pode transcodificar vídeos no momento em que os carrega para o bucket de origem do S3. Para fazer isso, você pode configurar um acionador de evento do Amazon S3 que invoca automaticamente a função do Lambda para transcodificar novos objetos no S3 com o MediaConvert. Para obter mais informações, consulte o [Tutorial: Uso de um acionador do Amazon S3 para invocar uma função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) no *Guia do desenvolvedor do AWS Lambda*. 

# Solução de problemas do recurso Operações em Lote do S3
<a name="troubleshooting-batch-operations"></a>

O recurso Operações em Lote do Amazon S3 permite executar operações em grande escala em objetos do Amazon S3. Este guia ajuda você a solucionar problemas que costumam ocorrer.

Para solucionar problemas com o Replicação em Lote do S3, consulte [Solução de problemas de replicação](replication-troubleshoot.md).

Existem dois tipos principais de falha que geram erros de operação em lote:

1. **Falha na API**: a API solicitada (como `CreateJob`) não foi executada.

1. **Falha no trabalho**: a solicitação inicial da API foi bem-sucedida, mas o trabalho apresentou falha devido, por exemplo, a problemas com o manifesto ou com as permissões dos objetos especificados no manifesto.

## NoSuchJobException
<a name="nosuchjobexception"></a>

**Tipo:** falha na API.

A `NoSuchJobException` ocorre quando o recurso Operações em Lote do S3 não consegue localizar o trabalho especificado. Esse erro pode ocorrer em várias situações, não apenas quando o trabalho expira. Algumas causas comuns são descritas a seguir.

1. **Expiração do trabalho**: os trabalhos são excluídos automaticamente noventa dias depois que atingem um estado de término (`Complete`, `Cancelled` ou `Failed`).

1. **ID do trabalho incorreto**: o ID do trabalho usado em `DescribeJob` ou `UpdateJobStatus` não corresponde ao ID exibido por `CreateJob`.

1. **Região errada**: tentativa de acessar um trabalho em uma região diferente daquela em que foi criado.

1. **Conta errada**: uso de um ID de trabalho de uma conta da AWS diferente.

1. **Erros de formato de ID de trabalho**: erros de digitação, caracteres extras ou formatação incorreta no ID do trabalho.

1. **Problemas de regulação de tempo**: verificação do status do trabalho imediatamente após a criação, antes que ele seja totalmente registrado.

As mensagens de erro relacionadas incluem as apresentadas abaixo.

1. `No such job`

1. `The specified job does not exist`

### Práticas recomendadas para evitar falhas de API `NoSuchJobException`
<a name="nosuchjobexception-prevention"></a>

1. **Armazene os IDs de trabalho imediatamente**: salve o ID do trabalho da resposta `CreateJob` antes de fazer chamadas de API subsequentes.

1. **Implemente a lógica de repetição**: adicione um recuo exponencial ao verificar o status do trabalho imediatamente após a criação.

1. **Configure o monitoramento**: crie alarmes do CloudWatch para monitorar a conclusão do trabalho antes da expiração de noventa dias. Para obter detalhes, consulte [Usar alarmes do CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) no “Guia do usuário do Amazon CloudWatch”.

1. **Use regiões consistentes**: garanta que todas as operações de trabalho usem a mesma região para a criação de trabalhos.

1. **Valide a entrada**: verifique o formato do ID do trabalho antes de fazer chamadas de API.

### Quando os trabalhos expiram
<a name="nosuchjobexception-jobs-expire"></a>

Os trabalhos nos estados de término são excluídos automaticamente após noventa dias. Para evitar a perda de informações sobre o trabalho, considere as opções a seguir.

1. **Baixe os relatórios de conclusão antes da expiração**: para obter instruções sobre como recuperar e armazenar os resultados do trabalho, consulte [ Relatórios de conclusão  Ao criar um trabalho, você solicita um relatório de conclusão. Desde que o Operações em Lote do S3 invoque com êxito pelo menos uma tarefa, o Amazon S3 gerará um relatório de conclusão depois que o trabalho concluir a execução de tarefas, falhar ou ser cancelado. Configure o relatório de conclusão para incluir todas as tarefas ou somente tarefas com falha.  O relatório de conclusão inclui a configuração do trabalho, o status e as informações de cada tarefa, inclusive a chave e a versão do objeto, status, códigos de erro e descrições de eventuais erros. Os relatórios de conclusão oferecem uma maneira fácil de visualizar os resultados das tarefas em um formato consolidado, sem a necessidade de configurações adicionais. Os relatórios de conclusão são criptografados usando a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3). Para obter um exemplo de um relatório de conclusão, consulte [Exemplos: relatórios de conclusão de operações em lote do S3](batch-ops-examples-reports.md).  Mesmo que você não configure um relatório de conclusão, ainda poderá monitorar e auditar o trabalho e suas tarefas usando o CloudTrail e o Amazon CloudWatch. Para saber mais, consulte os seguintes tópicos: ](batch-ops-job-status.md#batch-ops-completion-report.title).

1. **Arquive os metadados do trabalho em seus próprios sistemas**: armazene informações essenciais do trabalho em seus bancos de dados ou sistemas de monitoramento.

1. **Configure notificações automáticas antes do prazo de noventa dias**: use o Amazon EventBridge para criar regras que acionem notificações quando os trabalhos forem concluídos. Para obter mais informações, consulte [Notificações de eventos do Amazon S3](EventNotifications.md).

### `NoSuchJobException`Solução de problemas do
<a name="nosuchjobexception-troubleshooting"></a>

1. Use o comando a seguir para verificar se o trabalho existe na sua conta e região.

   ```
   aws s3control list-jobs --account-id 111122223333 --region us-east-1
   ```

1. Use o comando a seguir para pesquisar todos os status de trabalho. Os possíveis status de trabalho incluem `Active`, `Cancelled`, `Cancelling`, `Complete`, `Completing`, `Failed`, `Failing`, `New`, `Paused`, `Pausing`, `Preparing`, `Ready` e `Suspended`.

   ```
   aws s3control list-jobs --account-id 111122223333 --job-statuses your-job-status
   ```

1. Use o comando a seguir para verificar se o trabalho existe em outras regiões onde você normalmente cria trabalhos.

   ```
   aws s3control list-jobs --account-id 111122223333 --region job-region-1 aws s3control list-jobs --account-id 111122223333 --region job-region-2                    
   ```

1. Valide o formato do ID do trabalho. Os IDs de trabalho normalmente contêm 36 caracteres, como `12345678-1234-1234-1234-123456789012`. Verifique se há espaços extras, caracteres ausentes ou problemas de distinção entre maiúsculas e minúsculas e verifique se você está usando o ID completo do trabalho exibido pelo comando `CreateJob`.

1. Use o comando a seguir para verificar os eventos de criação de trabalho nos logs do CloudTrail.

   ```
       aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \ --filter-pattern "{ $.eventName = CreateJob }" \ --start-time timestamp                    
   ```

### AccessDeniedException
<a name="accessdeniedexception"></a>

**Tipo:** falha na API.

A `AccessDeniedException` ocorre quando uma solicitação do recurso Operações em Lote do S3 é bloqueada devido a permissões insuficientes, operações não permitidas ou restrições de política. Esse é um dos erros mais comuns no recurso Operações em Lote. As causas costumam ser as seguintes:

1. **Permissões do IAM ausentes**: a identidade do IAM não tem as permissões necessárias para as APIs do recurso Operações em Lote.

1. **Permissões insuficientes do S3**: permissões ausentes para acessar buckets e objetos de origem ou destino.

1. **Problemas de perfil de execução de trabalho**: o perfil de execução de trabalho não tem permissões para realizar a operação especificada.

1. **Operações não compatíveis**: tentativa de usar operações não permitidas na região atual ou no tipo de bucket.

1. **Problemas de acesso entre contas**: permissões ausentes para acesso a buckets ou objetos entre contas.

1. **Restrições de políticas baseadas em recursos**: políticas de bucket ou ACLs de objetos que bloqueiam a operação.

1. **Restrições de política de controle de serviços (SCP)**: políticas em nível organizacional que impedem a operação.

Mensagens de erro relacionadas:

1. `Access Denied`

1. `User: arn:aws:iam::account:user/username is not authorized to perform: s3:operation`

1. `Cross-account pass role is not allowed`

1. `The bucket policy does not allow the specified operation`

#### Práticas recomendadas para evitar falhas de API AccessDeniedException
<a name="accessdeniedexception-prevention"></a>

1. **Use o princípio de privilégio mínimo**: conceda somente as permissões mínimas necessárias para suas operações específicas.

1. **Teste as permissões antes de trabalhos grandes**: execute pequenos trabalhos de teste para validar as permissões antes de processar milhares de objetos.

1. **Use o simulador de políticas do IAM**: teste as políticas antes da implantação usando o simulador de políticas do IAM. Para ter mais informações, consulte [Testar políticas do IAM com o simulador de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html) no “Guia do usuário do IAM”.

1. **Implemente a configuração adequada entre contas**: verifique sua configuração de acesso entre contas para ver as configurações de trabalhos entre contas. Para ter mais informações, consulte [Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) no “Guia do usuário do IAM”.

1. **Monitore as alterações de permissão**: configure alertas do CloudTrail para modificações na política do IAM que possam afetar as operações em lote.

1. **Documente os requisitos do perfil**: mantenha uma documentação clara das permissões necessárias para cada tipo de trabalho.

1. **Use modelos de permissão comuns**: use os exemplos de permissão e os modelos de política:

   1. [Conceder permissões para operações em lote](batch-ops-iam-role-policies.md)

   1. [Acesso a recursos entre contas no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) no “Guia do usuário do IAM”.

   1. [Control access to VPC endpoints using endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) no “Guia do usuário do AWS PrivateLink”.

#### Solução de problemas de AccessDeniedException
<a name="accessdeniedexception-troubleshooting"></a>

Siga estas etapas sistematicamente para identificar e resolver problemas de permissão.

1. Verifique [Operações suportadas pelo S3 Batch Operations](batch-ops-operations.md) para saber quais operações são permitidas por região. Confirme se as operações do bucket de diretório estão disponíveis somente em endpoints regionais e zonais. Verifique se a operação é compatível com a classe de armazenamento do seu bucket.

1. Use o comando a seguir para determinar se você pode listar trabalhos.

   ```
    aws s3control list-jobs --account-id 111122223333
   ```

1. Use o comando a seguir para verificar as permissões do IAM para a identidade solicitante. A conta que executa o trabalho precisa das seguintes permissões: `s3:CreateJob`, `s3:DescribeJob`, `s3:ListJobs`, `s3:UpdateJobPriority`, `s3:UpdateJobStatus` e `iam:PassRole`.

   ```
   aws sts get-caller-identity 111122223333
   ```

1. Use o comando a seguir para verificar se o perfil existe e pode ser assumido.

   ```
   aws iam get-role --role-name role-name
   ```

1. Use o comando a seguir para analisar a política de confiança do perfil. O perfil que executa o trabalho deve ter o seguinte:

   1. A relação de confiança que permite que `batchoperations.s3.amazonaws.com` assuma esse perfil.

   1. As operações que a operação em lote está executando (como `s3:PutObjectTagging` para operações de atribuição de tags).

   1. Acesso aos buckets de origem e de destino.

   1. Permissão para ler o arquivo de manifesto.

   1. Permissão para escrever relatórios de conclusão.

   ```
   aws iam get-role --role-name role-name --query 'Role.AssumeRolePolicyDocument'
   ```

1. Use o comando a seguir para testar o acesso ao manifesto e aos buckets de origem.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket                        
   ```

1. Teste a operação que está sendo executada pela operação em lote. Por exemplo, se a operação em lote realizar a atribuição de tags, marque um objeto de amostra no bucket de origem.

1. Analise as políticas de bucket para verificar se há políticas que possam negar a operação.

   1. Verifique as ACLs de objetos se estiver trabalhando com controles de acesso legados.

   1. Verifique se nenhuma política de controle de serviços (SCPs) está bloqueando a operação.

   1.  Confirme se as políticas de endpoint da VPC permitem operações em lote se você estiver usando endpoints da VPC.

1. Use o comando a seguir para utilizar o CloudTrail para identificar falhas de permissão.

   ```
   aws logs filter-log-events --log-group-name CloudTrail/S3BatchOperations \
       --filter-pattern "{ $.errorCode = AccessDenied }" \
       --start-time timestamp
   ```

#### SlowDownError
<a name="slowdownerror"></a>

**Tipo:** falha na API.

A exceção `SlowDownError` ocorre quando sua conta excede o limite da taxa de solicitação para APIs do recurso Operações em Lote do S3. Esse é um mecanismo de controle de utilização para impedir que o serviço seja sobrecarregado por solicitações. As causas costumam ser as seguintes:

1. **Alta frequência de solicitações de API**: há muitas chamadas de API em um curto espaço de tempo.

1. **Operações de trabalho simultâneas**: várias aplicações ou usuários criam/gerenciam trabalhos simultaneamente.

1. **Scripts automatizados sem limitação de taxa**: scripts que não implementam estratégias de recuo adequadas.

1. **Pesquisas muito frequentes de status do trabalho**: verificação do status do trabalho em uma frequência maior do que a necessária.

1. **Padrões de tráfego intermitentes**: picos repentinos no uso da API durante horários de processamento de pico.

1. **Limites de capacidade regional**: a capacidade de solicitação alocada para sua região é excedida.

Mensagens de erro relacionadas:

1. `SlowDown`

1. `Please reduce your request rate`

1. `Request rate exceeded`

#### Práticas recomendadas para evitar falhas de API SlowDownError
<a name="slowdownerror-prevention"></a>

1. **Implemente a limitação de taxa do lado do cliente**: adicione atrasos entre as chamadas de API em suas aplicações.

1. **Use o recuo exponencial com oscilação**: randomize os atrasos de novas tentativas para evitar problemas de “rebanho trovejante”.

1. **Configure a lógica de repetição adequada**: implemente novas tentativas automáticas com atrasos crescentes para erros transitórios.

1. **Use arquiteturas orientadas a eventos**: substitua a sondagem por notificações do EventBridge para alterações no status do trabalho.

1. **Distribua a carga ao longo do tempo**: escalone a criação de trabalhos e as verificações de status em diferentes espaços de tempo.

1. **Monitore e emita alerta sobre limites de taxa**: configure os alarmes do CloudWatch para detectar quando você está se aproximando dos limites.

A maioria dos SDKs da AWS inclui lógica integrada de nova tentativa para erros de limitação de taxa. Configure-os desta forma:

1. **AWS CLI**: use os parâmetros `cli-read-timeout` e `cli-connect-timeout`.

1. **AWS SDK para Python (Boto3)**: configure os modos de nova tentativa e o máximo de tentativas na configuração do cliente.

1. **AWS SDK para Java**: use as configurações `RetryPolicy` e `ClientConfiguration`.

1. **AWS SDK para JavaScript**: configure `maxRetries` e `retryDelayOptions`.

Para ter mais informações sobre padrões e práticas recomendadas de novas tentativas, consulte [Retry with backoff pattern](https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/retry-backoff.html) no “Guia de orientação prescritiva da AWS“.

#### Solução de problemas de SlowDownError
<a name="slowdownerror-troubleshooting"></a>

1. Em seu código, implemente o recuo exponencial imediatamente.  
**Example Exemplo de recuo exponencial no bash**  

   ```
   for attempt in {1..5}; do
       if aws s3control describe-job --account-id 111122223333 --job-id job-id; then 
           break
       else 
           wait_time=$((2**attempt)) echo "Rate limited, waiting ${wait_time} seconds..." sleep $wait_time
           fi
   done
   ```

1. Use o CloudTrail para identificar a origem do alto volume de solicitações.

   ```
   aws logs filter-log-events \
       --log-group-name CloudTrail/S3BatchOperations \
       --filter-pattern "{ $.eventName = CreateJob || $.eventName = DescribeJob }" \
       --start-time timestamp \
       --query 'events[*].[eventTime,sourceIPAddress,userIdentity.type,eventName]'
   ```

1. Analise a frequência das sondagens.

   1. Evite verificar o status de trabalhos ativos mais de uma vez a cada 30 segundos.

   1. Quando possível, use notificações de conclusão de trabalho em vez de sondagens.

   1. Implemente oscilações em seus intervalos de sondagem para evitar solicitações sincronizadas.

1. Otimize os padrões de uso da API.

   1. Realize várias operações em lote quando possível.

   1. Use `ListJobs` para obter o status de vários trabalhos em uma chamada.

   1. Armazene em cache as informações do trabalho para reduzir chamadas de API redundantes.

   1. Distribua a criação de trabalhos ao longo do tempo em vez de criar muitos trabalhos simultaneamente.

1. Use as métricas do CloudWatch para chamadas de API para monitorar seus padrões de solicitação.

   ```
      aws logs put-metric-filter \
          --log-group-name CloudTrail/S3BatchOperations \
          --filter-name S3BatchOpsAPICallCount \      
          --filter-pattern "{ $.eventSource = s3.amazonaws.com && $.eventName = CreateJob }" \
          --metric-transformations \        
          metricName=S3BatchOpsAPICalls,metricNamespace=Custom/S3BatchOps,metricValue=1
   ```

## InvalidManifestContent
<a name="invalidmanifestcontent"></a>

**Tipo:** falha no trabalho.

A exceção `InvalidManifestContent` ocorre quando há problemas com o formato, o conteúdo ou a estrutura do arquivo de manifesto impedem que o recurso Operações em Lote do S3 processe o trabalho. As causas costumam ser as seguintes:

1. **Violações de formato**: colunas obrigatórias ausentes, delimitadores incorretos ou estrutura de CSV malformada.

1. **Problemas de codificação de conteúdo**: codificação de caracteres incorreta, marcadores BOM ou caracteres não UTF-8.

1. **Problemas de chave de objeto**: caracteres inválidos, codificação de URL incorreta ou chaves que excedem os limites de tamanho.

1. **Limitações de tamanho**: o manifesto contém mais objetos do que a operação permite.

1. **Erros de formato de ID de versão**: IDs de versão inválidos ou incorretos para objetos versionados.

1. **Problemas com o formato de ETag**: formato de ETag incorreto ou aspas ausentes para operações que exigem ETags.

1. **Dados inconsistentes**: formatos mistos no mesmo manifesto ou contagens de colunas inconsistentes.

Mensagens de erro relacionadas:

1. `Required fields are missing in the schema: + missingFields`

1. `Invalid Manifest Content`

1. `The S3 Batch Operations job failed because it contains more keys than the maximum allowed in a single job`

1. `Invalid object key format`

1. `Manifest file is not properly formatted`

1. `Invalid version ID format`

1. `ETag format is invalid`

### Práticas recomendadas para evitar falhas de trabalho InvalidManifestContent
<a name="invalidmanifestcontent-prevention"></a>

1. **Valide antes do upload**: teste o formato do manifesto com pequenos trabalhos antes de processar grandes conjuntos de dados.

1. **Use codificação consistente**: sempre use a codificação UTF-8 sem BOM para arquivos de manifesto.

1. **Implemente padrões de geração de manifestos**: crie modelos e procedimentos de validação para a criação de manifestos.

1. **Manipule caracteres especiais adequadamente**: codifique em URL as chaves de objeto que contêm caracteres especiais.

1. **Monitore a contagem de objetos**: acompanhe o tamanho do manifesto e divida trabalhos grandes de forma proativa.

1. **Valide a existência do objeto**: verifique se os objetos de fato existem antes de incluí-los nos manifestos.

1. **Use ferramentas da AWS para geração de manifestos**: utilize a `s3api list-objects-v2` da AWS CLI para gerar listas de objetos formatadas corretamente.

Problemas comuns de manifesto e soluções:

1. **Colunas obrigatórias ausentes**: seu manifesto deve incluir todas as colunas obrigatórias para seu tipo de operação. As colunas ausentes mais comuns são “Bucket” e “Chave”.

1. **Formato CSV incorreto**: use vírgulas como delimitadores, garanta contagens de colunas consistentes em todas as linhas e evite quebras de linha incorporadas nos campos.

1. **Caracteres especiais em chaves de objeto**: codifique em URL chaves de objeto que contêm espaços, caracteres Unicode ou caracteres especiais XML (<, >, &, ", ').

1. **Arquivos de manifesto grandes**: divida os manifestos que ultrapassarem o limite de operação em vários manifestos menores e crie trabalhos separados.

1. **IDs de versão inválidos**: os IDs de versão devem ser strings alfanuméricas formatadas corretamente. Remova a coluna de “ID da versão” se ela não for necessária.

1. **Problemas de codificação**: salve os arquivos de manifesto como UTF-8 sem BOM. Evite copiar manifestos por meio de sistemas que possam alterar a codificação.

Para ver especificações e exemplos detalhados em formato de manifesto, consulte o seguinte:

1. [Especificar um manifesto](batch-ops-create-job.md#specify-batchjob-manifest)

1. [Operações suportadas pelo S3 Batch Operations](batch-ops-operations.md)

1. [Nomear objetos do Amazon S3](object-keys.md)

### Solução de problemas de InvalidManifestContent
<a name="invalidmanifestcontent-troubleshooting"></a>

1. Baixe o arquivo de manifesto e inspecione-o. Verifique manualmente se o manifesto atende aos requisitos de formato:

   1. Formato CSV delimitado por vírgula.

   1. Codificação de caracteres UTF-8 sem BOM.

   1. Número consistente de colunas em todas as linhas.

   1. Nenhuma linha vazia ou espaço à direita.

   1. Chaves de objeto codificadas corretamente em URL se contiverem caracteres especiais.

   Use o comando a seguir para baixar o arquivo do manifesto.

   ```
   aws s3 cp s3://amzn-s3-demo-bucket1/manifest-key ./manifest.csv 
   ```

1. Marque as colunas necessárias para sua operação:

   1. Todas as operações: `Bucket` e `Key`.

   1. Operações de cópia: `VersionId` (opcional).

   1. Operações de restauração: `VersionId` (opcional).

   1. Operações de substituição de tag: não são necessárias colunas adicionais.

   1. Operações de substituição de ACL: não são necessárias colunas adicionais.

   1. Iniciar restauração: `VersionId` (opcional).

1. Marque os limites de contagem de objeto:

   1. Cópia: no máximo 1 bilhão de objetos.

   1. Exclusão: no máximo 1 bilhão de objetos.

   1. Restauração: no máximo 1 bilhão de objetos.

   1. Marcação: no máximo 1 bilhão de objetos.

   1. ACL: no máximo 1 bilhão de objetos.

1. Crie um manifesto de teste com alguns objetos do seu manifesto original.

1. Use o comando a seguir para verificar se existe uma amostra de objetos do manifesto.

   ```
   aws s3 ls s3://amzn-s3-demo-bucket1/object-key
   ```

1. Verifique os detalhes da falha do trabalho e analise o motivo da falha e quaisquer detalhes específicos do erro na descrição do trabalho.

   ```
   aws s3control describe-job --account-id 111122223333 --job-id job-id                        
   ```