Tutorial: transformación de datos para su aplicación con S3 Object Lambda - Amazon Simple Storage Service

Tutorial: transformación de datos para su aplicación con S3 Object Lambda

Cuando almacena datos en Amazon S3, puede compartirlos fácilmente para utilizarlos en varias aplicaciones. Sin embargo, cada aplicación puede tener requisitos únicos de formato de datos y es posible que necesite modificar o procesar sus datos para un caso de uso específico. Por ejemplo, un conjunto de datos creado por una aplicación de comercio electrónico puede incluir información de identificación personal (PII). Cuando se procesan los mismos datos para análisis, esta PII no es necesaria y debe ser borrada. Sin embargo, si se utiliza el mismo conjunto de datos para una campaña de marketing, es posible que deba enriquecer los datos con detalles adicionales, como información de la base de datos de fidelización del cliente.

Con S3 Object Lambda, puede agregar su propio código para procesar los datos recuperados de S3 antes de devolverlos a una aplicación. En concreto, puede configurar una función AWS Lambda y asociarla a un punto de acceso de S3 Object Lambda. Cuando una aplicación envía solicitudes estándar S3 a través del punto de acceso de S3 Object Lambda, se invoca la función de Lambda especificada para procesar cualquier dato recuperado de un bucket de S3 a través del punto de acceso de S3 compatible. Luego, el punto de acceso de S3 Object Lambda devuelve el resultado transformado a la aplicación. Puede crear y ejecutar sus propias funciones Lambda personalizadas, adaptando la transformación de datos de S3 Object Lambda a su caso de uso específico, todo ello sin necesidad de cambios en suAplicaciones de.

Diagrama de flujo de trabajo de S3 Object Lambda.
Objetivo

En este aprendizaje, aprenderá a agregar código personalizado a las solicitudes GET S3 estándar para modificar el objeto solicitado recuperado de S3 de modo que el objeto se ajuste a las necesidades del cliente o aplicación solicitante. Específicamente, aprenderá cómo transformar todo el texto del objeto original almacenado en S3 a mayúsculas a través de S3 Object Lambda.

nota

En este tutorial, se usa código Python para transformar los datos. Para ver ejemplos sobre cómo usar otros AWS SDK, consulte Transformación de datos para su aplicación con S3 Object Lambda en la biblioteca de ejemplos de código de AWS SDK.

Requisitos previos

Antes de empezar este tutorial, debe tener una Cuenta de AWS en la que puede iniciar sesión como usuario de AWS Identity and Access Management (IAM) con los permisos correctos. También debe instalar la versión 3.8 o posterior de Python.

Crear un usuario de IAM con permisos en la Cuenta de AWS (consola)

Puede crear un usuario de IAM para el tutorial. Para completar este tutorial, el usuario de IAM debe adjuntar las siguientes políticas de IAM para acceder a los recursos de AWS y realizar acciones específicas. Para obtener más información acerca de cómo crear un usuario de IAM, consulte Creación del primer grupo de usuarios y administradores de IAM en la guía del usuario de IAM.

El usuario de IAM requiere las siguientes directivas:

nota

Para simplificar, este tutorial crea y utiliza un usuario de IAM. Después de completar este tutorial, recuerde Eliminación del rol de IAM. Para uso en producción, le recomendamos que siga las Prácticas recomendadas de seguridad de IAM en la Guía del usuario de IAM. Una práctica recomendada exige que los usuarios humanos utilicen la federación con un proveedor de identidades para acceder a AWS con credenciales temporales. Otra práctica recomendada es exigir a las cargas de trabajo que utilicen credenciales temporales con roles de IAM para acceder a AWS. Para obtener información sobre el uso de AWS IAM Identity Center para crear usuarios con credenciales temporales, consulte Getting started (Introducción) en la Guía del usuario de AWS IAM Identity Center.

Este tutorial también utiliza políticas administradas de AWS de acceso completo. Para uso en producción, le recomendamos que otorgue solo los permisos mínimos necesarios para su caso de uso, de acuerdo con las prácticas recomendadas de seguridad.

Instale Python 3.8 o posterior en su equipo local

Utilice el siguiente procedimiento para instalar Python 3.8 o posterior en su equipo local. Para obtener instrucciones de instalación, consulte la página Downloading Python en la Guía para principiantes de Python.

  1. Abra su terminal o shell local y ejecute el siguiente comando para determinar si Python ya está instalado y, en caso afirmativo, qué versión está instalada.

    python --version
  2. Si no dispone de Python 3.8 ni posterior, descargue el Instalador oficial de Python 3.8 o posterior que sea adecuado para su máquina local.

  3. Ejecute el instalador haciendo doble clic en el archivo descargado y siga los pasos para completar la instalación.

    Para Usuarios de Windows, elija Agregar Python 3.X a PATH en el asistente de instalación antes de elegir Instalar ahora.

  4. Reinicie el terminal cerrándolo y volviéndolo a abrirlo.

  5. Ejecute el siguiente comando para verificar que Python 3.8 o posterior se instaló correctamente.

    Para Usuarios de macOS, ejecute este comando:

    python3 --version

    Para usuarios de Windows, ejecute este comando:

    python --version
  6. Ejecute el siguiente comando para comprobar que el administrador de paquetes pip3 está instalado. Si ve un número de versión pip y python 3.8 o posterior en la respuesta del comando, eso significa que el gestor de paquetes pip3 se instaló correctamente.

    pip --version

Paso 1: Crear un bucket de S3

Cree un bucket para almacenar los datos originales que tiene previsto transformar.

Creación de un bucket
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. Elija Crear bucket.

    Se abrirá la página Crear bucket.

  4. En Nombre de bucket, escriba el nombre del bucket (por ejemplo: tutorial-bucket).

    Para obtener más información acerca de las reglas de nomenclatura del bucket de Amazon S3, consulte Reglas de nomenclatura de buckets.

  5. En Región, elija la Región de AWS en la que desea que se encuentre el bucket.

    Para obtener más información acerca de bucket Region, consulte Descripción general de los buckets.

  6. Para Configuración de Block Public Access para este bucket, conserve la configuración predeterminada (Bloquear todo acceso público está habilitado).

    Le recomendamos que deje todas las configuraciones habilitadas a menos que sepa que necesita desactivar una o varias de ellas para su caso de uso, como alojar un sitio web público. Para obtener más información acerca del bloqueo del acceso público, consulte Bloquear el acceso público a su almacenamiento de Amazon S3.

  7. Mantenga la configuración restante establecida en los valores predeterminados.

    (Opcional) Si desea configurar opciones de bucket adicionales para el caso de uso específico, consulteCrear un bucket.

  8. Elija Crear bucket.

Paso 2: cargar un archivo al bucket de S3.

Cargue el archivo en un bucket de &S3;. Este archivo de texto contiene los datos originales que transformará a mayúsculas más adelante en este tutorial.

Por ejemplo, puede cargar un archivo tutorial.txt que contiene el siguiente texto:

Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application.
Para cargar un archivo en un bucket
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Buckets, elija el nombre del bucket que creó en elPaso 1 (por ejemplo: tutorial-bucket) para cargar el archivo.

  4. En la pestaña Objetos del bucket, elija Cargar.

  5. En la página Cargar, en Archivos y carpetas, elija Añadir archivos.

  6. Seleccione un archivo que cargar y luego seleccione Abrir. Por ejemplo, puede cargar el archivo de ejemplo tutorial.txt mencionado anteriormente.

  7. Seleccione Cargar.

Paso 3: Crear un punto de acceso de S3

Para utilizar un punto de acceso de S3 Object Lambda para acceder y transformar los datos originales, debe crear un punto de acceso de S3 y asociarlo con el bucket de S3 que creó en el Paso 1. El punto de acceso debe estar en la misma Región de AWS que los objetos que desea transformar.

Más adelante en este tutorial, utilizará este punto de acceso como punto de acceso de soporte para su punto de acceso de Object Lambda.

Para crear un punto de acceso
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Puntos de acceso.

  3. En la página de Puntos de acceso, elija Crear punto de acceso.

  4. Introduzca el nombre que desee (por ejemplo: tutorial-access-point) para el punto de acceso en el campo Nombre del punto de acceso.

    Para obtener más información sobre cómo asignar nombres a los puntos de acceso, consulte Reglas para asignar nombres a los puntos de acceso de Amazon S3.

  5. En el campo Nombre del Bucket escriba el nombre del bucket que creó en el Paso 1 (por ejemplo: tutorial-bucket). A continuación, asocie dicha política al bucket de S3.

    (Opcional) Puede elegir Examinar S3) para explorar su cuenta y buscar buckets. Si elige Examinar S3, seleccione el bucket que le interese y seleccione Elegir ruta para rellenar el campo Nombre del bucket con el nombre del bucket en cuestión.

  6. Para Origen de la red, elija Internet.

    Para obtener más información acerca de los orígenes de red para los puntos de acceso, consulte Crear puntos de acceso restringidos a una nube privada virtual.

  7. Todas las configuraciones de bloqueo de acceso público están habilitadas de forma predeterminada para los puntos de acceso. Le recomendamos que deje habilitada Block all public access (Bloquear todo el acceso público).

    Para obtener más información, consulte Administrar el acceso público a los puntos de acceso.

  8. En el resto de configuraciones de punto de acceso, mantenga la configuración predeterminada.

    (Opcional) Puede modificar la configuración del punto de acceso para admitir el caso de uso. En este tutorial, le recomendamos que mantenga la configuración predeterminada.

    (Opcional) Si necesita administrar el acceso al punto de acceso, puede especificar una directiva de punto de acceso. Para obtener más información, consulte Ejemplos de políticas de puntos de acceso.

  9. Elija Crear punto de acceso.

Paso 4: Crear una función de Lambda

Para transformar los datos originales, cree una función de Lambda para utilizarla con el punto de acceso de S3 Object Lambda.

Escribir el código de función de Lambda y crear un paquete de implementación con un entorno virtual

  1. En el equipo local, cree una carpeta con el nombre de carpetaobject-lambdaPara utilizarlo más adelante en este tutorial del entorno virtual.

  2. En la carpeta object-lambda, cree un archivo con una función de Lambda que cambie todo el texto del objeto original a mayúsculas. Por ejemplo, puede utilizar la siguiente función escrita en Python. Guarde esta función en un archivo llamadotransform.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

    La función de Lambda de ejemplo anterior carga todo el objeto solicitado en la memoria antes de transformarlo y devolverlo al cliente. Alternativamente, puede transmitir el objeto desde S3 para evitar cargar todo el objeto en la memoria. Este enfoque puede resultar útil cuando se trabaja con objetos grandes. Para obtener más información acerca del streaming de respuestas con puntos de acceso Object Lambda, consulte los ejemplos de transmisión en Trabajar con solicitudes GetObject en Lambda.

    Cuando está escribiendo una función de Lambda para su uso con un punto de acceso de S3 Object Lambda, la función se basa en el contexto de evento de entrada que S3 Object Lambda proporciona a la función de Lambda. S3 Object Lambda proporciona contexto sobre la solicitud que se realiza en el evento pasado a Lambda. Contiene los parámetros que utiliza para crear la función de Lambda.

    Los campos utilizados para crear la función de Lambda anterior son los siguientes:

    El campo de getObjectContext se refiere a los detalles de entrada y salida de las conexiones a Amazon S3 y S3 Object Lambda. Tiene los subcampos siguientes:

    • inputS3Url— URL prefirmada que la función de Lambda puede utilizar para descargar el objeto original desde el punto de acceso de soporte. Al utilizar una URL prefirmada, la función de Lambda no necesita tener permisos de lectura de Amazon S3 para recuperar el objeto original y solo puede acceder al objeto procesado por cada invocación.

    • outputRoute ‐ un token de enrutamiento que se agrega a la URL de S3 Object Lambda cuando la función de Lambda llama a WriteGetObjectResponse.

    • outputToken: un token utilizado por S3 Object Lambda para hacer coincidir elWriteGetObjectResponsecon la persona que llama original al enviar de vuelta el objeto transformado.

    Para obtener más información acerca de todos los campos del contexto de evento, consulte Formato y uso del contexto del evento y Escritura de funciones de Lambda para puntos de acceso de S3 Object Lambda.

  3. En el terminal local, introduzca el siguiente comando para instalar el paquete virtualenv:

    python -m pip install virtualenv
  4. En su terminal local, abra el object-lambda que creó anteriormente y, a continuación, escriba el siguiente comando para crear e inicializar un entorno virtual denominado venv.

    python -m virtualenv venv
  5. Para activar el entorno virtual, ingrese el siguiente comando para ejecutar el archivo activate desde la carpeta del entorno:

    Para Usuarios de macOS, ejecute este comando:

    source venv/bin/activate

    En Windows, ejecute este comando:

    .\venv\Scripts\activate

    El símbolo del sistema cambia para mostrar (venv) que indica que el entorno virtual está activo.

  6. Para instalar las bibliotecas requeridas, ejecute los siguientes comandos línea por línea en el venv entorno virtual.

    Estos comandos instalan versiones actualizadas de las dependencias de su lambda_handler función de Lambda. Estas dependencias son AWS SDK for Python (Boto3) y el módulo de solicitudes.

    pip3 install boto3
    pip3 install requests
  7. Para desactivar el entorno virtual, puede ejecutar el siguiente comando:

    deactivate
  8. Para crear un paquete de implementación con las bibliotecas instaladas como un archivo .zip llamado lambda.zip en la raíz del directorio object-lambda, ejecute los siguientes comandos línea por línea en el terminal local.

    sugerencia

    Es posible que sea necesario ajustar los siguientes comandos para que funcionen en su entorno concreto. Por ejemplo, una biblioteca puede aparecer en site-packages o dist-packages, y la primera carpeta podría ser lib o lib64. Además, la carpeta python puede tener un nombre con una versión de Python diferente. Puede utilizar el comando pip show para localizar un paquete específico.

    Para Usuarios de macOS ejecute estos comandos:

    cd venv/lib/python3.8/site-packages
    zip -r ../../../../lambda.zip .

    Para Usuarios de Windows ejecute estos comandos:

    cd .\venv\Lib\site-packages\
    powershell Compress-Archive * ../../../lambda.zip

    El último comando guarda el paquete de implementación en la raíz del directorio object-lambda.

  9. Agregue archivos de código de función transform.py a la raíz del paquete de implementación.

    Para Usuarios de macOS ejecute estos comandos:

    cd ../../../../
    zip -g lambda.zip transform.py

    Para Usuarios de Windows ejecute estos comandos:

    cd ..\..\..\
    powershell Compress-Archive -update transform.py lambda.zip

    Cuando realice este paso, tendrá la siguiente estructura de directorio:

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

Crear una función de Lambda con un rol de ejecución (consola)

  1. Inicie sesión en la AWS Management Console y abra la consola AWS Lambda en https://console.aws.amazon.com/lambda/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. Elija Create function (Crear función).

  4. Elija Author from scratch (Crear desde cero).

  5. Bajo Basic information (Información básica), haga lo siguiente:

    1. En Function name (Nombre de función), introduzca tutorial-object-lambda-function.

    2. En Runtime (Tiempo de ejecución):, elija Python 3.8 o una versión posterior.

  6. Expanda la sección Change default execution role (Cambiar el rol de ejecución predeterminado). En Execution role (Rol de ejecución), elija Create a new role with basic Lambda permissions (Crear un nuevo rol con permisos básicos de Lambda).

    En el Paso 5 más adelante en este tutorial, adjunte el archivoAmazonS3ObjectLambdaExecutionRolePolicy a este rol de ejecución de la función de Lambda.

  7. Mantenga la configuración restante establecida en los valores predeterminados.

  8. Elija Crear función.

Implemente su código de función de Lambda con archivos .zip y configure la función de Lambda (consola)

  1. En la consola AWS Lambda en https://console.aws.amazon.com/lambda/, elija Funciones En el panel de navegación izquierdo.

  2. Elija la función de Lambda que creó anteriormente (por ejemplo, tutorial-object-lambda-function).

  3. En la página de detalles de la función de Lambda, elija la pestaña Code (Código). En el sector Code Source (Código fuente), seleccione Upload from (Cargar desde) y luego .zip file (archivo .zip).

  4. Seleccione Upload (Cargar) para seleccionar el archivo .zip local.

  5. Elija el archivo lambda.zip que creó anteriormente y, a continuación, elija Open (Abrir).

  6. Seleccione Save (Guardar).

  7. En la sección Runtime settings (Configuración de tiempo de ejecución), elija Edit (Editar).

  8. En la página Edit runtime settings (Editar la configuración de tiempo de ejecución), confirme que Runtime (Tiempo de ejecución): toma el valor Python 3.8 o una versión posterior.

  9. Para decirle al tiempo de ejecución de Lambda qué método de controlador en su código de función de Lambda invocar, ingrese transform.lambda_handler: paraHandler (Controlador):.

    Al configurar una función en Python, el valor del controlador es el nombre del archivo y el nombre de un módulo del controlador exportado, separados por un punto. Por ejemplo, transform.lambda_handler llama al método lambda_handler definido en transform.py.

  10. Seleccione Guardar.

  11. (Opcional) En la página de detalles de la función de Lambda, seleccione la pestaña Configuration (Configuración). En el panel de navegación izquierdo, elija General configuration (Configuración general) y, a continuación, elija Edit (Editar). En el campo Timeout (Tiempo de espera), introduzca 1 min 0 seg. Mantenga la configuración restante establecida en los valores predeterminados y elija Save (Guardar).

    Timeout (Tiempo de espera): período durante el cual Lambda permite que se ejecute una función antes de pararla. El valor predeterminado es de 3 segundos. La duración máxima de una función de Lambda utilizada por S3 Object Lambda es de 60 segundos. Los precios se basan en la cantidad de memoria configurada y en la cantidad de tiempo durante la que se ejecuta el código.

Paso 5: Configurar una política de IAM para el rol de ejecución de su función de Lambda

Para habilitar la función de Lambda para proporcionar datos personalizados y encabezados de respuesta a GetObject, el rol de ejecución de la función de Lambda debe tener permisos de IAM para llamar a la API de WriteGetObjectResponse.

Para asociar una política de IAM a su función de Lambda

  1. En la consola AWS Lambda en https://console.aws.amazon.com/lambda/, elija Functions (Funciones) en el panel de navegación izquierdo.

  2. Elija la función que creó en el paso 4 (por ejemplo: tutorial-object-lambda-function).

  3. En la página de detalles de su función de Lambda, elija la opción Configuration (Configuración) y, a continuación, elija Permissions (Permisos) en el panel de navegación izquierdo.

  4. En Execution role (Rol de ejecución), elija el enlace del Role name (Nombre del rol). Abra la consola de IAM.

  5. En la página Summary (Resumen) de la consola de IAM para el rol de ejecución de la función de Lambda, elija la pestaña Permissions (Permisos). A continuación, en el menú Add Permissions (Agregar permisos), elija Attach policies (Asociar políticas).

  6. En la página Attach Permissions (Asociar permisos), introduzca AmazonS3ObjectLambdaExecutionRolePolicy en el campo de búsqueda para filtrar la lista de políticas. Active la casilla de verificación que hay junto al nombre del cuadro de diálogoAmazonS3ObjectLambdaExecutionRolePolicypolítica.

  7. Seleccione Asociar políticas.

Paso 6: Crear un punto de acceso de S3 Object Lambda

Un punto de acceso de S3 Object Lambda proporciona la flexibilidad para invocar una función de Lambda directamente desde una solicitud GET S3 para que la función pueda procesar datos recuperados de un punto de acceso de S3. Al crear y configurar un punto de acceso de S3 Object Lambda, debe especificar la función de Lambda para invocar y proporcionar el contexto de evento en formato JSON como parámetros personalizados para utilizar Lambda.

Para crear un punto de acceso de S3 Object Lambda
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación del lado izquierdo de la consola, elija Object Lambda Access Points (Puntos de acceso de Object Lambda).

  3. En la página Object Lambda Access Points (Puntos de acceso Object Lambda), elija Create Object Lambda Access Point (Crear un punto de acceso de Object Lambda).

  4. En Nombre del punto de acceso del objeto Lambda, introduzca el nombre que desea utilizar para el punto de acceso del objeto Lambda (por ejemplo: tutorial-object-lambda-accesspoint).

  5. Para Supporting Access Point (Soporte de punto de acceso), introduzca o busque el punto de acceso estándar que ha creado en el Paso 3(por ejemplo: tutorial-access-point), y luego elija Choose Supporting Access Point (Elegir soporte de punto de acceso).

  6. Para las S3 APIs (API de S3), para recuperar objetos del bucket de S3 para que la función de Lambda los procese, seleccione GetObject.

  7. Para Invoke Lambda function (Invocación de una función de Lambda), puede elegir una de las dos opciones siguientes.

    • Elegir Choose from functions in your account (Elija entre las funciones de su cuenta) y, a continuación, elija la función de Lambda que ha creado en el Paso 4 (por ejemplo: tutorial-object-lambda-function) desde la lista desplegable Lambda function (Función de Lambda).

    • Elegir Enter ARN (Ingresar ARN) y, a continuación, introduzca el nombre de recurso de Amazon (ARN) de la función de Lambda que ha creado en el Paso 4.

  8. Para Lambda function version (Versión de función de Lambda), elija $LATEST (la última versión de la función de Lambda que ha creado en el Paso 4).

  9. (Opcional) Si necesita su función de Lambda para reconocer y procesar solicitudes GET con encabezados de rango y número de pieza, seleccione Lambda function supports requests using range (La función de Lambda admite solicitudes usando rango) y Lambda function supports requests using part numbers (La función de Lambda admite solicitudes usando números de pieza). De lo contrario, desactive estas dos casillas de verificación.

    Para obtener más información acerca de cómo utilizar números de rango o rango con S3 Object Lambda, consulte Trabajar con encabezados Range y partNumber.

  10. (Opcional) En Payload - optional (Carga - opcional), agregue texto JSON para proporcionar información adicional a su función de Lambda.

    Una carga es texto JSON opcional que puede proporcionar a su función de Lambda como entrada para todas las invocaciones procedentes de un punto de acceso de S3 Object Lambda específico. Puede configurar cargas con diferentes parámetros para diferentes puntos de acceso Object Lambda que invoquen la misma función de Lambda, ampliando así la flexibilidad de su función de Lambda.

    Para obtener más información acerca de patones de rutas, consulte Formato y uso del contexto del evento.

  11. (Opcional) Para las Métricas de solicitudes - opcional, elija Deshabilitar o Habilitar para agregar la supervisión de Amazon S3 al punto de acceso del objeto Lambda. Las métricas de solicitud se facturan según la tarifa de Amazon CloudWatch estándar. Para obtener más información, consulte los precios de CloudWatch.

  12. En Object Lambda Access Point policy - optional (Política de punto de acceso Object Lambda -opcional), conserve la configuración predeterminada.

    (Opcional) Ejecute para establecer la política de recursos. Esta política de recursos concede el permiso de la API GetObject para usar el punto de acceso del objeto Lambda específico.

  13. Mantenga la configuración restante establecida en los valores predeterminados y elija Create Object Lambda Access Point (Creación de punto de acceso Object Lambda).

Paso 7: Ver los datos transformados

Ahora, S3 Object Lambda está listo para transformar sus datos para su caso de uso. En este tutorial, S3 Object Lambda transforma todo el texto de su objeto a mayúsculas.

Visualización de los datos transformados en el punto de acceso de S3 Object Lambda

Cuando solicita recuperar un archivo a través de su punto de acceso de S3 Object Lambda, cree una llamada de la API GetObject a S3 Object Lambda. S3 Object Lambda invoca la función de Lambda para transformar sus datos, y luego devuelve los datos transformados como la respuesta a la llamada a la API estándar S3 GetObject.

  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Object Lambda Access Points (Puntos de acceso de Object Lambda).

  3. En la página Puntos de acceso del objeto lambda, elija el punto de acceso de S3 Object Lambda que ha creado en el Paso 6 (por ejemplo, tutorial-object-lambda-accesspoint).

  4. En la pestaña Objetos de su punto de acceso de S3 Object Lambda, seleccione el archivo que tenga el mismo nombre (por ejemplo, tutorial.txt) como el que cargó en el bucket de S3 en el Paso 2.

    Este archivo debe contener todos los datos transformados.

  5. Para ver los datos transformados, elija Open (Abrir) o Download (Descargar).

Ejecución de una secuencia de comandos de Python para imprimir los datos originales y transformados

Puede utilizar S3 Object Lambda con sus aplicaciones existentes. Para ello, actualice la configuración de la aplicación para utilizar el nuevo ARN de punto de acceso de S3 Object Lambda que creó en el Paso 6 para recuperar datos desde S3.

El siguiente ejemplo de secuencia de comandos de Python imprime tanto los datos originales del bucket de S3 como los datos transformados desde el punto de acceso de S3 Object Lambda.

  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Object Lambda Access Points (Puntos de acceso de Object Lambda).

  3. En la página Puntos de acceso del objeto Lambda, elija el botón de opción situado a la izquierda del punto de acceso de S3 Object Lambda que ha creado en el Paso 6(por ejemplo, tutorial-object-lambda-accesspoint).

  4. Seleccionar Copy ARN (Copiar ARN).

  5. Guarde el ARN para utilizarlo más tarde.

  6. Escriba un script de Python en su máquina local para imprimir los datos originales (por ejemplo, tutorial.txt) de su S3 Bucket y los datos transformados (por ejemplo, tutorial.txt) desde el punto de acceso de S3 Object Lambda). Puede realizar una prueba con el siguiente script de ejemplo.

    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. Guarde su script de Python con un nombre personalizado (por ejemplo: tutorial_print.py) en la carpeta (por ejemplo: object-lambda) que ha creado en el Paso 4 en el equipo local.

  8. En el terminal local, ejecute el siguiente comando desde la raíz del directorio (por ejemplo: object-lambda) que ha creado en el Paso 4.

    python3 tutorial_print.py

    Debería ver tanto los datos originales como los datos transformados (todo el texto en mayúsculas) a través del terminal. Debería ver algo parecido a lo siguiente.

    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.

Paso 8: Eliminación

Si transformó sus datos a través de S3 Object Lambda solo como un ejercicio de aprendizaje, elimine los recursos de AWS que asignó para dejar de acumular cargos.

Eliminar el punto de acceso del objeto Lambda

  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Object Lambda Access Points (Puntos de acceso de Object Lambda).

  3. En la página Puntos de acceso del objeto Lambda, elija el botón de opción situado a la izquierda del punto de acceso de S3 Object Lambda que ha creado en el Paso 6 (por ejemplo, tutorial-object-lambda-accesspoint).

  4. Elija Delete (Eliminar).

  5. Confirme que desea eliminar el punto de acceso del objeto Lambda. Para ello, escriba su nombre en el campo de texto que aparece y elija Eliminar.

Elimine el punto de acceso de S3

  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Access Points (Puntos de acceso).

  3. Desplácese hasta el punto de acceso que creó en el Paso 3 (por ejemplo: tutorial-access-point) y elija el botón de opción situado junto al nombre del punto de acceso.

  4. Elija Eliminar.

  5. Confirme que desea eliminar el punto de acceso escribiendo su nombre en el campo de texto que aparece y elija Delete (Eliminar).

Busque el rol de ejecución de la función de Lambda.

  1. Inicie sesión en la AWS Management Console y abra la consola AWS Lambda en https://console.aws.amazon.com/lambda/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. Elija la función que creó en el paso 4 (por ejemplo: tutorial-object-lambda-function).

  4. En la página de detalles de su función de Lambda, elija la opción Configuration (Configuración) y, a continuación, elija Permissions (Permisos) en el panel de navegación izquierdo.

  5. En Execution role (Rol de ejecución), elija el enlace del Role name (Nombre del rol). Abra la consola de IAM.

  6. En la página Summary (Resumen) de la consola de IAM de la página de ejecución de su función de Lambda, elija Delete role (Eliminar rol).

  7. En el cuadro de diálogo Delete role (Eliminar rol), elija Yes, delete (Sí, eliminar).

Para eliminar la función de Lambda

  1. En la consola AWS Lambda en https://console.aws.amazon.com/lambda/, elija Funciones en el panel de navegación izquierdo.

  2. Active la casilla de verificación situada a la izquierda del nombre de la función que ha creado en el Paso 4 (por ejemplo: tutorial-object-lambda-function).

  3. Elija Acciones y, a continuación, elija Eliminar.

  4. En el cuadro de diálogo Eliminar función, elija Eliminar.

Eliminación del grupo de registros de CloudWatch

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación izquierdo, elija Logs (Registros), Log groups (Grupos de registros).

  3. Busque el grupo de registros cuyo nombre termina con la función de Lambda que creó en el Paso 4(por ejemplo: tutorial-object-lambda-function).

  4. Active la casilla de verificación situada a la izquierda del nombre del grupo de registros.

  5. Elija Actions (Acciones) y, a continuación, elija Delete log group (Eliminar grupo de registro).

  6. En el cuadro de diálogo Delete log group(s), Eliminar grupo(s) de registro(s) elija Delete (Eliminar).

Elimine el archivo original en el bucket de origen de S3

  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Bucket name (Nombre del Bucket), seleccione el nombre del bucket al que ha subido el archivo original en el Paso 2 (por ejemplo: tutorial-bucket).

  4. Seleccione la casilla de verificación situada a la izquierda de los nombres de los objetos que desea eliminar (por ejemplo: tutorial.txt).

  5. Elija Eliminar.

  6. En la página Delete objects (Eliminar objetos), en la sección Permanently delete objects? (¿Eliminar objetos de forma permanente?), confirme que desea eliminar este objeto escribiendo permanently delete en el cuadro de texto.

  7. Elija Eliminar objetos.

Eliminar el bucket de origen de S3

  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Buckets, elija el botón de opción situado junto al nombre del bucket que ha creado en el Paso 1 (por ejemplo: tutorial-bucket).

  4. Elija Eliminar.

  5. En la página Delete bucket (Eliminar bucket) confirme que desea eliminar el bucket introduciendo el nombre del bucket en el campo de texto y, a continuación, elija Delete bucket (Eliminar bucket).

Eliminación del rol de IAM

  1. Inicie sesión en AWS Management Console Management Console y abra la consola IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, elija Roles y, a continuación, seleccione la casilla de verificación junto al nombre del rol que desee eliminar.

  3. En la parte superior de la página, elija Delete user (Eliminar usuario).

  4. En el cuadro de diálogo Delete user name? (¿Eliminar Nombre de usuario?), introduzca el nombre de usuario en el campo de entrada de texto para confirmar la eliminación del usuario. Elija Eliminar.

Siguientes pasos

Después de completar este tutorial, puede personalizar la función de Lambda para su caso de uso para modificar los datos devueltos por solicitudes GET de S3 estándar.

La siguiente es una lista de casos de uso comunes para S3 Object Lambda:

Para obtener más información acerca de S3 Object Lambda, consulte Transformación de objetos con Lambda para objetos S3.