

# Tutorial: Como transformar dados para sua aplicação com o S3 Object Lambda
<a name="tutorial-s3-object-lambda-uppercase"></a>

**nota**  
Desde 7 de novembro de 2025, o S3 Object Lambda está disponível somente para clientes existentes que estão usando o serviço no momento, bem como para parceiros selecionados da Rede de Parceiros da AWS (APN). Para recursos semelhantes ao S3 Object Lambda, saiba mais aqui: [Amazon S3 Object Lambda availability change](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Quando você armazena dados no Amazon S3, você pode compartilhá-los facilmente para usar várias aplicações. No entanto, cada aplicação pode ter requisitos de formato de dados exclusivos e pode precisar de modificação ou processamento de seus dados para um caso de uso específico. Por exemplo, um conjunto de dados criado por uma aplicação de comércio eletrônico pode incluir informações de identificação pessoal (PII). Quando os mesmos dados são processados para análise, essas PII não são necessárias e devem ser editadas. No entanto, se o mesmo conjunto de dados for usado para uma campanha de marketing, talvez seja necessário enriquecer os dados com detalhes adicionais, como informações do banco de dados de fidelidade do cliente.

Com o [S3 Object Lambda](https://aws.amazon.com/s3/features/object-lambda) você pode adicionar seu próprio código para processar dados recuperados do S3 antes de retorná-los para uma aplicação. É possível, especificamente, configurar uma função do AWS Lambda e anexá-la a um ponto de acesso do S3 Object Lambda. Quando uma aplicação envia [solicitações GET padrão do S3](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) por meio do ponto de acesso do S3 Object Lambda, a função do Lambda especificada é invocada para processar quaisquer dados recuperados da fonte de dados subjacente por meio do ponto de acesso de suporte do S3. Depois, o ponto de acesso do S3 Object Lambda retorna o resultado transformado de volta à aplicação. Você pode criar e executar suas próprias funções Lambda personalizadas, adaptando a transformação de dados do S3 Object Lambda ao seu caso de uso específico, tudo sem a necessidade de alterações em suas aplicações.

![\[Este é um diagrama de fluxo de trabalho do S3 Object Lambda.\]](http://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/images/ol-example-image-global.png)


**Objetivo**  
Neste tutorial, você aprende como adicionar código personalizado a solicitações GET padrão do S3 para modificar o objeto solicitado recuperado do S3 para que o objeto atenda às necessidades do cliente ou aplicação solicitante. Especificamente, você aprende a transformar todo o texto no objeto original armazenado no bucket do S3 em maiúsculas por meio do S3 Object Lambda. 

**nota**  
Este tutorial usa código Python para transformar os dados. Para ter exemplos de uso de outros AWS SDKs, consulte [Como transformar dados para sua aplicação com o S3 Object Lambda](https://docs.aws.amazon.com/code-library/latest/ug/lambda_example_cross_ServerlessS3DataTransformation_section.html) na Biblioteca de códigos de exemplo de AWS SDK. 

**Topics**
+ [

## Pré-requisitos
](#ol-upper-prerequisites)
+ [

## Etapa 1: criar um bucket do S3
](#ol-upper-step1)
+ [

## Etapa 2: fazer upload do arquivo para seu bucket do S3
](#ol-upper-step2)
+ [

## Etapa 3: criar um ponto de acesso do S3
](#ol-upper-step3)
+ [

## Etapa 4: Criar uma função Lambda
](#ol-upper-step4)
+ [

## Etapa 5: configurar uma política do IAM para a função de execução da função Lambda
](#ol-upper-step5)
+ [

## Etapa 6: criar um ponto de acesso do S3 Object Lambda
](#ol-upper-step6)
+ [

## Etapa 7: exibir os dados transformados
](#ol-upper-step7)
+ [

## Etapa 8: limpar
](#ol-upper-step8)
+ [

## Próximas etapas
](#ol-upper-next-steps)

## Pré-requisitos
<a name="ol-upper-prerequisites"></a>

Antes de começar este tutorial, você deve ter uma Conta da AWS na qual possa fazer login como um usuário do AWS Identity and Access Management (IAM) com permissões corretas. Você também deve instalar a versão 3.8 ou posterior do Python.

**Topics**
+ [

### Criar um usuário do IAM com permissões em sua Conta da AWS (console)
](#ol-upper-prerequisites-account)
+ [

### Instale o Python 3.8 ou posterior em sua máquina local
](#ol-upper-prerequisites-python)

### Criar um usuário do IAM com permissões em sua Conta da AWS (console)
<a name="ol-upper-prerequisites-account"></a>

Você pode criar um usuário do IAM para o tutorial. Para concluir este tutorial, o usuário do IAM deve anexar as seguintes políticas do IAM para acessar recursos da AWS e executar ações específicas. Para obter mais informações sobre como criar um usuário do IAM, consulte [Criar usuários do IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) no *Guia do usuário do IAM*.

Seu usuário do IAM requer as seguintes políticas:
+ [AmazonS3FullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor): concede permissões a todas as ações do Amazon S3, incluindo permissões para criar e usar um ponto de acesso do Object Lambda. 
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor): concede permissões a todas as ações do Lambda. 
+ [IAMFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor): concede permissões a todas as ações do IAM. 
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor): concede permissões para ler todas as informações de acesso fornecidas pelo IAM Access Analyzer. 
+ [CloudWatchLogsFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLogsFullAccess$jsonEditor): concede acesso total ao CloudWatch Logs. 

**nota**  
Para simplificar, este tutorial cria e usa um usuário do IAM. Depois de concluir este tutorial, lembre-se de [Excluir o usuário do IAM](#ol-upper-step8-delete-user). Para uso em produção, recomendamos que você siga as [Práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) no *Guia do usuário do IAM*. Uma das práticas recomendadas exige que os usuários humanos usem a federação com um provedor de identidades para acessar a AWS usando credenciais temporárias. Outra prática recomendada é exigir que as workloads usem credenciais temporárias com perfis do IAM para acessar a AWS. Para saber como usar o Centro de Identidade do AWS IAM para criar usuários com credenciais temporárias, consulte [Getting started](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) (Conceitos básicos) no *Guia do usuário do Centro de Identidade do AWS IAM*.   
Este tutorial também usa políticas de acesso total gerenciadas pela AWS. Para uso em produção, recomendamos que você conceda apenas as permissões mínimas necessárias para seu caso de uso, de acordo com as [práticas recomendadas de segurança](security-best-practices.md#security-best-practices-prevent).

### Instale o Python 3.8 ou posterior em sua máquina local
<a name="ol-upper-prerequisites-python"></a>

Use o procedimento a seguir para instalar o Python 3.8 ou posterior em sua máquina local. Para obter instruções de instalação, consulte a página [Downloading Python](https://wiki.python.org/moin/BeginnersGuide/Download) (Como baixar Python) no *Guia do iniciante do Python*.

1. Abra seu terminal local ou shell e execute o seguinte comando para determinar se o Python já está instalado e, em caso afirmativo, qual versão está instalada. 

   ```
   python --version
   ```

1. Se não tiver o Python 3.8 nem posterior, faça download do [instalador oficial](https://www.python.org/downloads/) do Python 3.8 ou posterior que é adequado para sua máquina local. 

1. Execute o instalador clicando duas vezes no arquivo baixado e siga as etapas para concluir a instalação. 

   Para os **Usuários do Windows**, escolha **Adicionar Python 3.X ao PATH** no assistente de instalação antes de escolher **Instalar agora**. 

1. Reinicie o terminal fechando-o e reabrindo-o. 

1. Execute o seguinte comando para verificar se o Python 3.8 ou posterior está instalado corretamente. 

   Para os **usuários do macOS**, execute este comando: 

   ```
   python3 --version
   ```

   Para **usuários do Windows**, execute este comando: 

   ```
   python --version
   ```

1. Execute o comando a seguir para verificar se o gerenciador de pacotes pip3 está instalado. Se você vir um número de versão pip e python 3.8 ou posterior na resposta do comando, isso significa que o gerenciador de pacotes pip3 está instalado com sucesso.

   ```
   pip --version
   ```

## Etapa 1: criar um bucket do S3
<a name="ol-upper-step1"></a>

Crie um bucket para armazenar os dados originais que você planeja transformar. 

**nota**  
Os pontos de acesso podem ser anexados a outra fonte de dados, como um volume do Amazon FSx para OpenZFS, mas este tutorial usa um ponto de acesso de suporte anexado a um bucket do S3.

**Para criar um bucket**

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 **Create bucket (Criar bucket)**. 

   A página **Create bucket** (Criar bucket) é aberta.

1. Para **Bucket name** (Nome do bucket), insira um nome para o seu bucket (por exemplo, **tutorial-bucket**). 

   Para obter mais informações sobre como nomear buckets no Amazon S3, consulte [Regras de nomenclatura de buckets de uso geral](bucketnamingrules.md).

1. Em **Region** (Região), escolha a Região da AWS onde deseja que o bucket resida. 

   Para obter mais informações sobre a região do bucket, consulte [Visão geral dos buckets de uso geral](UsingBucket.md).

1. Para **Block Public Access settings for this bucket** (Configurações de acesso de bloqueio público para este bucket), mantenha as configurações padrão (**Block *all*public access** (Bloquear todo acesso público) está habilitado). 

   Recomendamos que você mantenha todas as configurações de acesso de bloqueio público ativadas, a menos que precise desativar uma ou mais delas para seu caso de uso. Para obter mais informações sobre como bloquear o acesso público, consulte [Bloquear o acesso público ao armazenamento do Amazon S3](access-control-block-public-access.md).

1. Mantenha as configurações restantes definidas conforme os padrões. 

   (Opcional) Se quiser definir configurações de bucket adicionais para o caso de uso específico, consulte [Criar um bucket de uso geral](create-bucket-overview.md).

1. Selecione **Criar bucket**.

## Etapa 2: fazer upload do arquivo para seu bucket do S3
<a name="ol-upper-step2"></a>

Carregue um arquivo de texto para o bucket do S3. Este arquivo de texto contém os dados originais que você transformará em maiúsculas posteriormente neste tutorial. 

Por exemplo, você pode carregar um `tutorial.txt` que contém o seguinte texto:

```
Amazon S3 Object Lambda Tutorial:
You can add your own code to process data retrieved from S3 before 
returning it to an application.
```

**Fazer upload de um arquivo para um bucket**

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 que você criou na [Etapa 1](#ol-upper-step1) (por exemplo, **tutorial-bucket**) para carregar seu arquivo.

1. Na guia **Objects** (Objetos) do bucket, escolha **Upload** (Fazer upload).

1. Na página **Upload** (Carregar), em **Files and folders** (Arquivos e pastas), escolha **Add files** (Adicionar arquivos).

1. Escolha um arquivo para carregar e, em seguida, escolha **Open** (Abrir). Por exemplo, você pode carregar o exemplo de arquivo `tutorial.txt`mencionado anteriormente.

1. Escolha **Upload** (Carregar).

## Etapa 3: criar um ponto de acesso do S3
<a name="ol-upper-step3"></a>

Para usar um ponto de acesso do S3 Object Lambda para acessar e transformar os dados originais, você deve criar um ponto de acesso do S3 e associá-lo ao bucket do S3 criado na [Etapa 1](#ol-upper-step1). O ponto de acesso deve estar na mesma Região da AWS que os objetos que você deseja transformar.

Mais adiante neste tutorial, você usará esse ponto de acesso como um ponto de acesso de suporte para o ponto de acesso do Object Lambda. 

**Como criar um ponto de acesso**

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, escolha **Access Points** (Pontos de acesso).

1. Na página **Access Points** (Pontos de acesso), escolha **Create access point** (Criar ponto de acesso).

1. No campo **Access point name** (Nome do ponto de acesso), insira o nome (por exemplo, **tutorial-access-point**) para o ponto de acesso.

   Para obter mais informações sobre nomenclatura de pontos de acesso, consulte [Regras de nomenclatura para pontos de acesso](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. No campo **Fonte de dados** insira o nome do bucket criado na [Etapa 1](#ol-upper-step1) (por exemplo, **tutorial-bucket**). O S3 anexa o ponto de acesso a este bucket. 

   (Opcional) Você pode escolher **Browse S3** (Procurar S3) para navegar e pesquisar buckets na sua conta. Se você escolher **Browse S3** (Procurar S3), selecione o bucket desejado e escolha **Choose path** (Escolher caminho) para preencher o campo **Bucket name** (Nome do bucket) com o nome do bucket.

1. Para **Network origin** (Origem de rede), escolha **Internet**. 

   Para obter mais informações sobre origens de rede para pontos de acesso, consulte [Criar pontos de acesso restritos a uma nuvem privada virtual](access-points-vpc.md).

1. Por padrão, todas as configurações de bloqueio de acesso público são habilitadas para seu ponto de acesso. Recomendamos manter a opção **Block *all* public access** (Bloquear todo o acesso público) ativada.

   Para obter mais informações, consulte [Gerenciar o acesso público a pontos de acesso para buckets de uso geral](access-points-bpa-settings.md).

1. Para todas as outras configurações de ponto de acesso, mantenha as configurações padrão.

   (Opcional) Você pode modificar as configurações do ponto de acesso para dar suporte ao caso de uso. Para este tutorial, recomendamos manter as configurações padrão. 

   (Opcional) Se você precisar gerenciar o acesso ao seu ponto de acesso, você pode especificar uma política de ponto de acesso. Para obter mais informações, consulte [Exemplos de política para pontos de acesso](access-points-policies.md#access-points-policy-examples). 

1. Selecione **Create access point** (Criar ponto de acesso).

## Etapa 4: Criar uma função Lambda
<a name="ol-upper-step4"></a>

Para transformar dados originais, crie uma função do Lambda para usar com o ponto de acesso do S3 Object Lambda. 

**Topics**
+ [

### Gravar código de função Lambda e criar um pacote de implantação com um ambiente virtual
](#ol-upper-step4-write-lambda)
+ [

### Crie uma função Lambda com uma função de execução (console)
](#ol-upper-step4-create-function)
+ [

### Implante seu código de função Lambda com arquivos .zip e configure a função Lambda (console)
](#ol-upper-step4-deploy-function)

### Gravar código de função Lambda e criar um pacote de implantação com um ambiente virtual
<a name="ol-upper-step4-write-lambda"></a>

1. Na sua máquina local, crie uma pasta com o nome da pasta `object-lambda` para que o ambiente virtual use posteriormente neste tutorial.

1. Na pasta `object-lambda`, crie um arquivo com uma função Lambda que altere todo o texto no objeto original para maiúsculas. Por exemplo, você pode usar a seguinte função gravada em Python. Salve esta função em um arquivo chamado `transform.py`. 

   ```
   import boto3
   import requests
   from botocore.config import Config
   
   # This function capitalizes all text in the original object
   def lambda_handler(event, context):
       object_context = event["getObjectContext"]
       # Get the presigned URL to fetch the requested original object 
       # from S3
       s3_url = object_context["inputS3Url"]
       # Extract the route and request token from the input context
       request_route = object_context["outputRoute"]
       request_token = object_context["outputToken"]
       
       # Get the original S3 object using the presigned URL
       response = requests.get(s3_url)
       original_object = response.content.decode("utf-8")
   
       # Transform all text in the original object to uppercase
       # You can replace it with your custom code based on your use case
       transformed_object = original_object.upper()
   
       # Write object back to S3 Object Lambda
       s3 = boto3.client('s3', config=Config(signature_version='s3v4'))
       # The WriteGetObjectResponse API sends the transformed data
       # back to S3 Object Lambda and then to the user
       s3.write_get_object_response(
           Body=transformed_object,
           RequestRoute=request_route,
           RequestToken=request_token)
   
       # Exit the Lambda function: return the status code  
       return {'status_code': 200}
   ```
**nota**  
O exemplo anterior da função Lambda carrega todo o objeto solicitado na memória antes de transformá-lo e retorná-lo para o cliente. Como alternativa, você pode transmitir o objeto do S3 para evitar o carregamento do objeto inteiro na memória. Essa abordagem pode ser útil ao trabalhar com objetos grandes. Para obter mais informações sobre streaming de respostas com pontos de acesso do Object Lambda, consulte os exemplos de streaming em [Trabalhar com solicitações `GetObject` no Lambda](olap-writing-lambda.md#olap-getobject-response).

   Quando você está gravando uma função do Lambda para uso com um ponto de acesso do S3 Object Lambda, a função é baseada no contexto de evento de entrada que o S3 Object Lambda fornece à função do Lambda. O contexto do evento fornece informações sobre a solicitação que está sendo feita no evento passado do S3 Object Lambda para o Lambda. Ele contém os parâmetros que você usa para criar a função Lambda.

   Os campos usados para criar a função Lambda anterior são os seguintes: 

   O campo `getObjectContext` significa os detalhes de entrada e saída para conexões com o Amazon S3 e S3 Object Lambda. Ele tem os seguintes campos:
   + `inputS3Url`: um URL pré-assinado que a função Lambda pode usar para baixar o objeto original do ponto de acesso de suporte. Usando um URL pré-assinado, a função Lambda não precisa ter permissões de leitura do Amazon S3 para recuperar o objeto original e só pode acessar o objeto processado por cada chamada.
   + `outputRoute`: um token de roteamento que é adicionado ao URL do Object Lambda do S3 quando a função Lambda chama `WriteGetObjectResponse` para enviar de volta o objeto transformado.
   + `outputToken`: um token usado pelo S3 Object Lambda para corresponder à chamada `WriteGetObjectResponse` com o chamador original ao enviar de volta o objeto transformado.

   Para obter mais informações sobre todos os campos no contexto de evento, consulte [Formato e uso de contexto de evento](olap-event-context.md) e [Escrever funções do Lambda para pontos de acesso do S3 Object Lambda](olap-writing-lambda.md).

1. No terminal local, insira o seguinte comando para instalar o comando do pacote `virtualenv`:

   ```
   python -m pip install virtualenv
   ```

1. No terminal local, abra o `object-lambda` que você criou anteriormente e insira o seguinte comando para criar e inicializar um ambiente virtual chamado `venv`.

   ```
   python -m virtualenv venv
   ```

1. Para ativar o ambiente virtual, insira o seguinte comando para executar o arquivo `activate` da pasta do ambiente:

   Para os **usuários do macOS**, execute este comando:

   ```
   source venv/bin/activate
   ```

   Para **usuários do Windows**, execute este comando:

   ```
   .\venv\Scripts\activate
   ```

   Agora, seu prompt de comando é alterado para mostrar **(venv)**, indicando que o ambiente virtual está ativo.

1. Para instalar as bibliotecas necessárias, execute os seguintes comandos linha por linha no ambiente virtual do `venv`.

   Esses comandos instalam versões atualizadas das dependências de sua função Lambda `lambda_handler`. Essas dependências são o AWSSDK for Python (Boto3) e o módulo de solicitações.

   ```
   pip3 install boto3
   ```

   ```
   pip3 install requests
   ```

1. Para desativar o ambiente virtual, execute o seguinte comando:

   ```
   deactivate
   ```

1. Para criar um pacote de implantação com as bibliotecas instaladas como um arquivo `.zip` chamado `lambda.zip` na raiz do diretório , execute os comandos a seguir, linha por linha, em seu terminal local.
**dica**  
Os comandos a seguir talvez precisem ser ajustados para funcionar em seu ambiente específico. Por exemplo, uma biblioteca pode aparecer em `site-packages`ou em `dist-packages` e a primeira pasta pode ser `lib` ou `lib64`. Além disso, a pasta `python` pode ser nomeada com uma versão Python diferente. Use o comando `pip show` para localizar um pacote específico.

   Para **usuários do macOS**, execute estes comandos:

   ```
   cd venv/lib/python3.8/site-packages 
   ```

   ```
   zip -r ../../../../lambda.zip .
   ```

   Para **usuários do Windows**, execute estes comandos:

   ```
   cd .\venv\Lib\site-packages\ 
   ```

   ```
   powershell Compress-Archive * ../../../lambda.zip
   ```

   O último comando salva o pacote de implantação na raiz do diretório do `object-lambda`.

1. Adicione o arquivo de código de função `transform.py` à raiz do pacote de implantação.

   Para **usuários do macOS**, execute estes comandos:

   ```
   cd ../../../../ 
   ```

   ```
   zip -g lambda.zip transform.py
   ```

   Para **usuários do Windows**, execute estes comandos: 

   ```
   cd ..\..\..\
   ```

   ```
   powershell Compress-Archive -update transform.py lambda.zip
   ```

   Depois de concluir esta etapa, você deverá ter seguinte estrutura de diretórios:

   ```
   lambda.zip$
     │ transform.py
     │ __pycache__
     | boto3/
     │ certifi/
     │ pip/
     │ requests/
     ...
   ```

### Crie uma função Lambda com uma função de execução (console)
<a name="ol-upper-step4-create-function"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do 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-object-lambda-function**.

   1. Para **Runtime** (Tempo de execução), escolha **Python 3.8** ou uma versão posterior.

1. Expandir a seção **Alterar função de execução padrão**. Em **Execution role** (Função de execução), selecione **Create a new role with basic Lambda permissions** (Criar uma função com permissões básicas do Lambda).

   Na [Etapa 5](#ol-upper-step5), posteriormente neste tutorial, você anexa o **AmazonS3ObjectLambdaExecutionRolePolicy** a essa função de execução do Lambda. 

1. Mantenha as configurações restantes definidas conforme os padrões.

1. Escolha **Create function** (Criar função).

### Implante seu código de função Lambda com arquivos .zip e configure a função Lambda (console)
<a name="ol-upper-step4-deploy-function"></a>

1. No console do AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), escolha **Functions** (Funções) no painel de navegação à esquerda. 

1. Escolha a função do Lambda que você criou anteriormente (por exemplo, **tutorial-object-lambda-function**). 

1. Na página de detalhes da função Lambda, selecione a guia **Code** (Código). Na seção **Code Source** (Origem do código), escolha **Upload from** (Carregar de) e depois **arquivo .zip**.

1. Selecione **Upload** (Carregar) para selecionar seu arquivo `.zip` local.

1. Selecione o arquivo `lambda.zip` que você criou anteriormente e, em seguida, selecione **Open** (Abrir).

1. Escolha **Salvar**.

1. Na seção **Runtime settings** (Configurações do tempo de execução), escolha **Edit** (Editar). 

1. Na página **Edit runtime settings** (Editar configurações do tempo de execução), confirme se **Runtime** (Tempo de execução) foi definido como **Python 3.8** ou uma versão posterior. 

1. Para informar ao tempo de execução do Lambda qual método de handler em seu código de função Lambda chamar, insira **transform.lambda\$1handler** para **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, `transform.lambda_handler` chama o método `lambda_handler` definido no arquivo `transform.py`.

1. Escolha **Salvar**.

1. (Opcional) Na página de detalhes da função Lambda, escolha a guia **Configuration** (Configuração). No painel de navegação à esquerda, selecione **General configuration** (Configuração geral) e, depois, escolha **Edit** (Editar). No campo **Timeout** (Tempo limite), insira **1** min **0** segundos. Mantenha as configurações restantes definidas, conforme os padrões e escolha **Save** (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. A duração máxima para uma função Lambda usada pelo S3 Object Lambda é de 60 segundos. O preço é baseado na quantidade de memória configurada e na quantidade de tempo em que o código é executado.

## Etapa 5: configurar uma política do IAM para a função de execução da função Lambda
<a name="ol-upper-step5"></a>

Para habilitar sua função Lambda para fornecer dados personalizados e cabeçalhos de resposta para o chamador de `GetObject`, a função de execução da função Lambda precisa ter permissões do IAM para chamar a API `WriteGetObjectResponse`.

**Para anexar uma política do IAM à atribuição da função Lambda**



1. No console do AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), escolha **Functions** (Funções) no painel de navegação à esquerda. 

1. Escolha a função que você criou na [Etapa 4](#ol-upper-step4) (por exemplo, **tutorial-object-lambda-function**).

1. Na página de detalhes da função Lambda, selecione a guia **Configuration** (Configuração) e, depois, escolha **Permission** (Permissões) no painel de navegação à esquerda. 

1. Em **Execution role** (Função de execução), escolha o link do **Role name** (Nome da função). O console do IAM é aberto. 

1. Na página **Summary** (Resumo) do console do IAM para o perfil de execução da função do Lambda, escolha a guia **Permissions** (Permissões). Depois, no menu **Add Permissions** (Adicionar permissões), escolha **Attach policies** (Anexar políticas).

1. Na página **Attach Permissions** (Anexar permissões), insira **AmazonS3ObjectLambdaExecutionRolePolicy** na caixa de pesquisa para filtrar a lista de políticas. Marque a caixa de seleção ao lado do nome da política **AmazonS3ObjectLambdaExecutionRolePolicy**. 

1. Escolha **Anexar políticas**. 

## Etapa 6: criar um ponto de acesso do S3 Object Lambda
<a name="ol-upper-step6"></a>

Um ponto de acesso do S3 Object Lambda fornece a flexibilidade de chamar uma função do Lambda diretamente de uma solicitação GET do S3 para que a função possa processar dados recuperados de um ponto de acesso do S3. Ao criar e configurar um ponto de acesso do S3 Object Lambda, você deve especificar a função do Lambda para chamar e fornecer o contexto do evento no formato JSON como parâmetros personalizados para o Lambda usar.

**Para criar um ponto de acesso do S3 Object Lambda**

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 **Object Lambda access points** (Pontos de acesso do Object Lambda).

1. Na página **Object Lambda Access Points** (Pontos de acesso do Object Lambda), escolha **Create Object Lambda Access Point** (Criar ponto de acesso do Object Lambda).

1. Para **Nome do Ponto de acesso Lambda do objeto**, informe o nome que você deseja usar para o ponto de acesso Lambda do objeto (por exemplo, **tutorial-object-lambda-accesspoint**). 

1. Para **Supporting Access Point** (Ponto de acesso de suporte), informe ou procure o ponto de acesso padrão criado na [Etapa 3](#ol-upper-step3) (por exemplo, **tutorial-access-point**) e, em seguida, escolha **Choose supporting Access Point** (Escolher ponto de acesso de suporte). 

1. Para recuperar objetos do bucket do S3 para que a função do Lambda processe, selecione **GetObject** em **S3 APIs** (APIs do S3).

1. Para **Invoke Lambda function** (Chamar função Lambda), você pode escolher qualquer uma das duas opções a seguir para este tutorial. 
   + Selecione **Escolha entre as funções da sua conta** e escolha a função do Lambda que você criou na [Etapa 4](#ol-upper-step4) (por exemplo, **tutorial-object-lambda-function**) da lista suspensa **Função do Lambda**.
   + Escolha **Enter ARN** (Inserir ARN) e depois informe o Nome do recurso da Amazon (ARN) da função Lambda que você criou na [Etapa 4](#ol-upper-step4).

1. Para **Lambda function version** (Versão da função Lambda), escolha **\$1LATEST** (a versão mais recente da função Lambda que você criou na [Etapa 4](#ol-upper-step4)).

1. (Opcional) Se precisar da função Lambda para reconhecer e processar solicitações GET com cabeçalhos de intervalo e número de peça, selecione **Lambda function supports requests using range** (A função Lambda suporta solicitações usando intervalo) e **Lambda function supports requests using part numbers** (A função Lambda suporta solicitações usando números de parte). Caso contrário, desmarque essas duas caixas de seleção.

   Para obter mais informações sobre como usar números de intervalo ou de parte com o S3 Object Lambda, consulte [Trabalhar com cabeçalhos Range e partNumber](range-get-olap.md).

1. (Opcional) Em **Payload - *optional*** (Carga útil - opcional), adicione um texto JSON para fornecer informações adicionais à sua função Lambda.

   Uma carga útil é um texto JSON opcional que você pode fornecer à sua função do Lambda como entrada para todas as chamadas provenientes de um ponto de acesso do S3 Object Lambda específico. Para personalizar os comportamentos de vários pontos de acesso Lambda do objeto que chamam a mesma função do Lambda, você pode configurar cargas úteis com diferentes parâmetros, estendendo, assim, a flexibilidade da função do Lambda.

   Para obter mais informações sobre carga útil, consulte [Formato e uso de contexto de evento](olap-event-context.md).

1. (Opcional) Em **Métricas de solicitação – *opcional***, escolha **Desabilitar** ou **Habilitar** para adicionar o monitoramento do Amazon S3 ao ponto de acesso do Object Lambda. As métricas de solicitação são cobradas na taxa padrão do Amazon CloudWatch. Para obter mais informações, consulte [Preço do CloudWatch.](https://aws.amazon.com/cloudwatch/pricing/)

1. Em **Object Lambda Access Point policy - *optional*** (Política do ponto de acesso do Object Lambda - opcional), mantenha a configuração padrão. 

   (Opcional) Você pode definir uma política de recursos. Essa política de recursos concede permissão da API `GetObject` para usar o ponto de acesso do Object Lambda especificado.

1. Mantenha as configurações restantes definidas conforme os padrões e escolha **Create Object Lambda Access Point** (Criar ponto de acesso do Object Lambda).

## Etapa 7: exibir os dados transformados
<a name="ol-upper-step7"></a>

Agora, o S3 Object Lambda está pronto para transformar seus dados para seu caso de uso. Neste tutorial, o S3 Object Lambda transforma todo o texto em seu objeto em maiúsculas.

**Topics**
+ [

### Exibir os dados transformados no ponto de acesso do S3 Object Lambda
](#ol-upper-step7-check-data)
+ [

### Execute um script Python para imprimir os dados originais e transformados
](#ol-upper-step7-python-print)

### Exibir os dados transformados no ponto de acesso do S3 Object Lambda
<a name="ol-upper-step7-check-data"></a>

Quando você solicita para recuperar um arquivo por meio do ponto de acesso do S3 Object Lambda, você faz uma chamada de API `GetObject` para o S3 Object Lambda. O S3 Object Lambda chama a função Lambda para transformar seus dados e, em seguida, retorna os dados transformados como a resposta à chamada de API de `GetObject` do S3 padrão.

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 **Object Lambda access points** (Pontos de acesso do Object Lambda).

1. Na página **Pontos de acesso do Object Lambda**, escolha o ponto de acesso do S3 Object Lambda que você criou na [Etapa 6](#ol-upper-step6) (por exemplo, **tutorial-object-lambda-accesspoint**).

1. Na guia **Objetos** do ponto de acesso do S3 Object Lambda, selecione o arquivo que tem o mesmo nome (por exemplo, `tutorial.txt`) daquele que você carregou no bucket do S3 na [Etapa 2](#ol-upper-step2). 

   Esse arquivo deve conter todos os dados transformados.

1. Para exibir os dados transformados, escolha **Open** (Abrir) ou **Download** (Baixar).

### Execute um script Python para imprimir os dados originais e transformados
<a name="ol-upper-step7-python-print"></a>

Você pode usar o S3 Object Lambda com suas aplicações existentes. Para fazer isso, atualize a configuração da aplicação para usar o novo ARN do ponto de acesso do S3 Object Lambda criado na [Etapa 6](#ol-upper-step6) para recuperar dados do S3.

O exemplo de script Python a seguir imprime os dados originais do bucket do S3 e os dados transformados do ponto de acesso do S3 Object Lambda. 

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 **Object Lambda access points** (Pontos de acesso do Object Lambda).

1. Na página **Pontos de acesso Lambda de objeto**, selecione o botão de opção à esquerda do ponto de acesso do S3 Object Lambda que você criou na [Etapa 6](#ol-upper-step6) (por exemplo, **tutorial-object-lambda-accesspoint**).

1. Escolha **Copy ARN** (Copiar ARN).

1. Salve o ARN para uso mais tarde.

1. Grave um script Python na máquina local para imprimir os dados originais (por exemplo, `tutorial.txt`) do bucket do S3 e os dados transformados (por exemplo, `tutorial.txt`) do ponto de acesso do S3 Object Lambda). Você pode usar o seguinte script de exemplo: 

   ```
   import boto3
   from botocore.config import Config
   
   s3 = boto3.client('s3', config=Config(signature_version='s3v4'))
   
   def getObject(bucket, key):
       objectBody = s3.get_object(Bucket = bucket, Key = key)
       print(objectBody["Body"].read().decode("utf-8"))
       print("\n")
   
   print('Original object from the S3 bucket:')
   # Replace the two input parameters of getObject() below with 
   # the S3 bucket name that you created in Step 1 and 
   # the name of the file that you uploaded to the S3 bucket in Step 2
   getObject("tutorial-bucket", 
             "tutorial.txt")
   
   print('Object transformed by S3 Object Lambda:')
   # Replace the two input parameters of getObject() below with 
   # the ARN of your S3 Object Lambda Access Point that you saved earlier and
   # the name of the file with the transformed data (which in this case is
   # the same as the name of the file that you uploaded to the S3 bucket 
   # in Step 2)
   getObject("arn:aws:s3-object-lambda:us-west-2:111122223333:accesspoint/tutorial-object-lambda-accesspoint",
             "tutorial.txt")
   ```

1. Salve seu script Python com um nome personalizado (por exemplo, `tutorial_print.py`) na pasta (por exemplo, `object-lambda`) que você criou na [Etapa 4](#ol-upper-step4) na sua máquina local.

1. No terminal local, execute o seguinte comando da raiz do diretório (por exemplo, `object-lambda`) que você criou na [Etapa 4](#ol-upper-step4).

   ```
   python3 tutorial_print.py
   ```

   Você deve ver os dados originais e os dados transformados (todo o texto em maiúsculas) através do terminal. Por exemplo, você deve ver algo parecido com o texto a seguir.

   ```
   Original object from the S3 bucket:
   Amazon S3 Object Lambda Tutorial:
   You can add your own code to process data retrieved from S3 before 
   returning it to an application.
   
   Object transformed by S3 Object Lambda:
   AMAZON S3 OBJECT LAMBDA TUTORIAL:
   YOU CAN ADD YOUR OWN CODE TO PROCESS DATA RETRIEVED FROM S3 BEFORE 
   RETURNING IT TO AN APPLICATION.
   ```

## Etapa 8: limpar
<a name="ol-upper-step8"></a>

Se você transformou seus dados por meio do S3 Object Lambda apenas como um exercício de aprendizado, exclua os recursos da AWS que você alocou para que não haja mais encargos. 

**Topics**
+ [

### Excluir o ponto de acesso do Object Lambda
](#ol-upper-step8-delete-olap)
+ [

### Exclua o ponto de acesso do S3
](#ol-upper-step8-delete-ap)
+ [

### Exclua a função de execução de sua função Lambda
](#ol-upper-step8-delete-lambda-role)
+ [

### Excluir a função Lambda
](#ol-upper-step8-delete-lambda-function)
+ [

### Excluir o grupo de logs do CloudWatch
](#ol-upper-step8-delete-cloudwatch)
+ [

### Exclua o arquivo original no bucket de origem do S3
](#ol-upper-step8-delete-file)
+ [

### Exclua o bucket de origem do S3
](#ol-upper-step8-delete-bucket)
+ [

### Excluir o usuário do IAM
](#ol-upper-step8-delete-user)

### Excluir o ponto de acesso do Object Lambda
<a name="ol-upper-step8-delete-olap"></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 **Object Lambda access points** (Pontos de acesso do Object Lambda).

1. Na página **Pontos de acesso Lambda de objeto**, selecione o botão de opção à esquerda do ponto de acesso do S3 Object Lambda que você criou na [Etapa 6](#ol-upper-step6) (por exemplo, **tutorial-object-lambda-accesspoint**).

1. Escolha **Excluir**.

1. Confirme se deseja excluir o ponto de acesso do Lambda, inserindo o nome no campo de texto exibido e escolha **Excluir**.

### Exclua o ponto de acesso do S3
<a name="ol-upper-step8-delete-ap"></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, escolha **Access Points** (Pontos de acesso).

1. Navegue até o ponto de acesso que você criou na [Etapa 3](#ol-upper-step3) (por exemplo, **tutorial-access-point**) e escolha o botão de opção ao lado do nome do ponto de acesso.

1. Escolha **Excluir**.

1. Confirme se deseja excluir o ponto de acesso inserindo o nome no campo de texto exibido e escolha **Delete** (Excluir).

### Exclua a função de execução de sua função Lambda
<a name="ol-upper-step8-delete-lambda-role"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do 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 a função que você criou na [Etapa 4](#ol-upper-step4) (por exemplo, **tutorial-object-lambda-function**).

1. Na página de detalhes da função Lambda, selecione a guia **Configuration** (Configuração) e, depois, escolha **Permission** (Permissões) no painel de navegação à esquerda. 

1. Em **Execution role** (Função de execução), escolha o link do **Role name** (Nome da função). O console do IAM é aberto.

1. Na página **Summary** (Resumo) do console do IAM da função de execução da função Lambda, selecione **Delete role** (Excluir função).

1. Na caixa de diálogo **Delete role** (Excluir função), selecione **Yes, delete** (Sim, excluir).

### Excluir a função Lambda
<a name="ol-upper-step8-delete-lambda-function"></a>

1. No console do AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), escolha **Functions** (Funções) no painel de navegação à esquerda. 

1. Marque a caixa de seleção à esquerda do nome da função que você criou na [Etapa 4](#ol-upper-step4) (por exemplo, **tutorial-object-lambda-function**).

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="ol-upper-step8-delete-cloudwatch"></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 esquerdo, escolha **Log groups** (Grupos de log).

1. Localize o grupo de logs cujo nome termina com a função Lambda que você criou na [Etapa 4](#ol-upper-step4) (por exemplo, **tutorial-object-lambda-function**).

1. Marque a caixa de seleção à esquerda do nome do grupo de logs.

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 o arquivo original no bucket de origem do S3
<a name="ol-upper-step8-delete-file"></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 **Bucket name** (Nome do bucket), escolha o nome do bucket para o qual você carregou o arquivo original na [Etapa 2](#ol-upper-step2) (por exemplo, **tutorial-bucket**).

1. Marque a caixa de seleção à esquerda do nome do objeto que você deseja excluir (por exemplo, `tutorial.txt`).

1. Escolha **Excluir**.

1. Na página **Delete objects** (Excluir objetos) na seção **Permanently delete objects?** (Excluir objetos permanentemente?), confirme se deseja excluir este objeto informando **permanently delete** na caixa de texto.

1. Escolha **Delete objects** (Excluir objetos).

### Exclua o bucket de origem do S3
<a name="ol-upper-step8-delete-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. Na lista de **Buckets**, escolha o botão de opção ao lado do nome do bucket que você criou na [Etapa 1](#ol-upper-step1) (por exemplo, **tutorial-bucket**).

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).

### Excluir o usuário do IAM
<a name="ol-upper-step8-delete-user"></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 esquerdo, escolha **Users** (Usuários) e marque a caixa de seleção ao lado do nome do usuário que você deseja excluir.

1. Na parte superior da página, escolha **Delete** (Excluir).

1. Na caixa de diálogo **Delete *user name*?** (Excluir nome de usuário?), insira o nome de usuário no campo de entrada de texto para confirmar a exclusão do usuário. Escolha **Excluir**.

## Próximas etapas
<a name="ol-upper-next-steps"></a>

Após concluir este tutorial, você pode personalizar a função Lambda para o caso de uso para modificar os dados retornados por solicitações S3 GET padrão.

Veja a seguir uma lista de casos de uso comuns para o S3 Object Lambda:
+ Mascaramento de dados confidenciais para segurança e conformidade.

  Para obter mais informações, consulte [Tutorial: Detectar e editar dados PII com o S3 Object Lambda e o Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md).
+ Filtragem de determinadas linhas de dados para fornecer informações específicas.
+ Aumento de dados com informações de outros serviços ou bancos de dados.
+ Conversão entre formatos de dados, como conversão de XML em JSON para compatibilidade de aplicações.
+ Compactação ou descompactação de arquivos enquanto eles estão sendo baixados.
+ Redimensionamento e marcação d'água de imagens.

  Para obter mais informações, consulte [Tutorial: Using S3 Object Lambda to dynamically watermark images as they are retrieved](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/tutorial-s3-object-lambda-uppercase.html) (Tutorial: Como usar o S3 Object Lambda para colocar marca d’água em imagens de maneira dinâmica à medida que são recuperadas).
+ Implementação de regras de autorização personalizadas para acessar dados.

Para obter mais informações sobre o S3 Object Lambda, consulte [Transformar objetos com o S3 Object Lambda](transforming-objects.md).