Tutorial: Como transformar dados para sua aplicação com o S3 Object Lambda - Amazon Simple Storage Service

Tutorial: Como transformar dados para sua aplicação com o S3 Object Lambda

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 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 por meio do ponto de acesso do S3 Object Lambda, a função do Lambda especificada é chamada para processar quaisquer dados recuperados de um bucket do S3 por meio do ponto de acesso do S3 de suporte. 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.
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 como transformar todo o texto no objeto original armazenado no S3 para maiúsculas por meio do S3 Object Lambda.

Pré-requisitos

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.

Criar um usuário do IAM com permissões em sua Conta da AWS (console)

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) no Guia do usuário do IAM.

Seu usuário do IAM requer as seguintes políticas:

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. Para uso em produção, recomendamos que você siga as Práticas recomendadas de segurança no IAM 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 AWS IAM Identity Center para criar usuários com credenciais temporárias, consulte Getting started (Conceitos básicos) no Guia do usuário do AWS IAM Identity Center.

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.

Instale o Python 3.8 ou posterior em sua máquina local

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 (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
  2. Se não tiver o Python 3.8 nem posterior, faça download do instalador oficial do Python 3.8 ou posterior que é adequado para sua máquina local.

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

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

  5. 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
  6. 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

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

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

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

  3. Selecione Create bucket (Criar bucket).

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

  4. 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 nomeação de bucket.

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

  6. 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 allpublic 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.

  7. 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 Criação de um bucket.

  8. Selecione Criar bucket.

Etapa 2: fazer upload do arquivo para seu bucket do S3

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 AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

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

  3. Na lista de Buckets, escolha o nome do bucket que você criou na Etapa 1 (por exemplo, tutorial-bucket) para carregar seu arquivo.

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

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

  6. Escolha um arquivo para carregar e, em seguida, escolha Open (Abrir). Por exemplo, você pode carregar o exemplo de arquivo tutorial.txtmencionado anteriormente.

  7. Escolha Upload (Carregar).

Etapa 3: criar um ponto de acesso do S3

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. 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 AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação, escolha Access Points (Pontos de acesso).

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

  4. 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 para nomear pontos de acesso do Amazon S3.

  5. No campo Bucket name (Nome do bucket), insira o nome do bucket criado na Etapa 1 (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.

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

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

  8. 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 de ponto de acesso.

  9. Selecione Create access point (Criar ponto de acesso).

Etapa 4: Criar uma função Lambda

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

Gravar código de função Lambda e criar um pacote de implantação com um ambiente virtual

  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.

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

    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 e Escrever funções do Lambda para pontos de acesso do S3 Object Lambda.

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

    python -m pip install virtualenv
  4. 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
  5. 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.

  6. 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
  7. Para desativar o ambiente virtual, execute o seguinte comando:

    deactivate
  8. 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-packagesou 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.

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

  1. Faça login no AWS Management Console e abra o console AWS Lambda em https://console.aws.amazon.com/lambda/.

  2. No painel de navegação à esquerda, escolha Functions (Funções).

  3. Escolha Create function (Criar função).

  4. Escolha Author from scratch (Criar do zero).

  5. Em Basic information (Informações básicas), faça o seguinte:

    1. Em Function name (Nome da função), insira tutorial-object-lambda-function.

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

  6. 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, posteriormente neste tutorial, você anexa o AmazonS3ObjectLambdaExecutionRolePolicy a essa função de execução do Lambda.

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

  8. Escolha Create function (Criar função).

Implante seu código de função Lambda com arquivos .zip e configure a função Lambda (console)

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

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

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

  4. Selecione Upload (Carregar) para selecionar seu arquivo .zip local.

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

  6. Escolha Salvar.

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

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

  9. 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_handler 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.

  10. Escolha Salvar.

  11. (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

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/, escolha Functions (Funções) no painel de navegação à esquerda.

  2. Escolha a função que você criou na Etapa 4 (por exemplo, tutorial-object-lambda-function).

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

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

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

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

  7. Escolha Anexar políticas.

Etapa 6: criar um ponto de acesso do S3 Object Lambda

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 AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação à esquerda, escolha Object Lambda access points (Pontos de acesso do Object Lambda).

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

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

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

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

  7. Para Invoke Lambda function (Chamar função Lambda), você pode escolher qualquer uma das duas opções a seguir para este tutorial.

    • Selecione Choose from functions in your account (Escolher das funções de sua conta) e escolha a função Lambda que você criou na Etapa 4 (por exemplo, tutorial-object-lambda-function) da lista suspensa Lambda function (Função 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.

  8. Para Lambda function version (Versão da função Lambda), escolha $LATEST (a versão mais recente da função Lambda que você criou na Etapa 4).

  9. (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.

  10. (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.

  11. (Opcional) Para Métricas de solicitação – opcional, escolha Desativar ou Ativar para adicionar o monitoramento do Amazon S3 ao ponto de acesso Lambda do objeto. 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.

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

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

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.

Exibir os dados transformados no ponto de acesso do S3 Object Lambda

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 AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação à esquerda, escolha Object Lambda access points (Pontos de acesso do Object Lambda).

  3. Na página Pontos de acesso do Object Lambda, escolha o ponto de acesso do S3 Object Lambda que você criou na Etapa 6 (por exemplo, tutorial-object-lambda-accesspoint).

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

    Esse arquivo deve conter todos os dados transformados.

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

Execute um script Python para imprimir os dados originais e transformados

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 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 AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação à esquerda, escolha Object Lambda access points (Pontos de acesso do Object Lambda).

  3. 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 (por exemplo, tutorial-object-lambda-accesspoint).

  4. Escolha Copy ARN (Copiar ARN).

  5. Salve o ARN para uso mais tarde.

  6. 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")
  7. 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 na sua máquina local.

  8. No terminal local, execute o seguinte comando da raiz do diretório (por exemplo, object-lambda) que você criou na Etapa 4.

    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

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.

Excluir o ponto de acesso do Object Lambda

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

  2. No painel de navegação à esquerda, escolha Object Lambda access points (Pontos de acesso do Object Lambda).

  3. 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 (por exemplo, tutorial-object-lambda-accesspoint).

  4. Escolha Excluir.

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

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

  2. No painel de navegação, escolha Access Points (Pontos de acesso).

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

  4. Escolha Excluir.

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

  1. Faça login no AWS Management Console e abra o console AWS Lambda em https://console.aws.amazon.com/lambda/.

  2. No painel de navegação à esquerda, escolha Functions (Funções).

  3. Escolha a função que você criou na Etapa 4 (por exemplo, tutorial-object-lambda-function).

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

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

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

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

Excluir a função Lambda

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

  2. Marque a caixa de seleção à esquerda do nome da função que você criou na Etapa 4 (por exemplo, tutorial-object-lambda-function).

  3. Escolha Ações e, em seguida, escolha Excluir.

  4. Na caixa de diálogo Delete function (Excluir função), escolha Delete (Excluir).

Excluir o grupo de logs do CloudWatch

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação esquerdo, escolha Log groups (Grupos de log).

  3. Localize o grupo de logs cujo nome termina com a função Lambda que você criou na Etapa 4 (por exemplo, tutorial-object-lambda-function).

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

  5. Escolha Actions (Ações) e Delete log group(s) (Excluir grupo(s) de log).

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

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

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

  3. Na lista Bucket name (Nome do bucket), escolha o nome do bucket para o qual você carregou o arquivo original na Etapa 2 (por exemplo, tutorial-bucket).

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

  5. Escolha Excluir.

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

  7. Escolha Delete objects (Excluir objetos).

Exclua o bucket de origem do S3

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

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

  3. Na lista de Buckets, escolha o botão de opção ao lado do nome do bucket que você criou na Etapa 1 (por exemplo, tutorial-bucket).

  4. Escolha Excluir.

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

  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

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

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

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

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.

  • 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 (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.