Procesar eventos de Amazon S3 con AWS SAM - AWS Serverless Application Model

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Procesar eventos de Amazon S3 con AWS SAM

Con esta aplicación de muestra, puedes basarte en lo aprendido en los ejemplos anteriores e instalar una aplicación más compleja. Esta aplicación consiste en una función de Lambda invocada por un origen de eventos de subida de objetos de Amazon S3. En este ejercicio verás cómo acceder a los recursos AWS y cómo realizar llamadas de servicio de AWS mediante una función de Lambda.

Esta aplicación de muestra, que no tiene servidor, procesa eventos de creación de objetos en Amazon S3. Para cada imagen que se carga en un bucket, Amazon S3 detecta el evento creado por el objeto e invoca una función de Lambda. La función de Lambda invoca a Amazon Rekognition para detectar el texto de la imagen. A continuación, almacena los resultados devueltos por Amazon Rekognition en una tabla de DynamoDB.

nota

Con esta aplicación de ejemplo, los pasos se realizan en un orden ligeramente diferente al de los ejemplos anteriores. Esto es debido a que este ejemplo requiere que AWS se creen recursos y que se configuren los permisos de IAM antes de que pueda probar la función de Lambda de forma local. Vamos a aprovechar AWS CloudFormation para crear esos recursos y configurar los permisos para ti. De lo contrario, tendrás que hacerlo manualmente antes de poder probar la función de Lambda de forma local.

Como este ejemplo es más complicado, asegúrate primero de estar familiarizado con la instalación de las aplicaciones del ejemplo anterior antes de ejecutar esta.

Antes de empezar

Asegúrate de que has completado la configuración requerida en el Instala la AWS SAM CLI.

Paso 1: Inicializar la aplicación

En esta sección, tienes que descargar la aplicación de muestra, que consta de una plantilla de AWS SAM y el código de aplicación.

Para inicializar la aplicación
  1. Ejecuta el siguiente comando en un AWS SAM CLI indicador de comandos.

    sam init \ --location https://github.com/aws-samples/cookiecutter-aws-sam-s3-rekognition-dynamodb-python \ --no-input
  2. Revisa el contenido del directorio creado por el comando (aws_sam_ocr/):

    • template.yaml: Define los tres recursos AWS que necesita la aplicación de Amazon S3. Esto es, una función de Lambda, un bucket de Amazon S3 y una tabla de DynamoDB. La plantilla también define el mapeo y los permisos entre estos recursos.

    • Directorio de src/: contiene el código de la aplicación de Amazon S3.

    • SampleEvent.json: El origen del evento de muestra, que se utiliza para las pruebas locales.

Paso 2: Crear el paquete de la aplicación

Antes de poder probar la aplicación de forma local, debes utilizar la AWS SAM CLI para crear un paquete de implementación, que se utiliza para desplegar la aplicación en la AWS nube. Esta implementación crea los recursos y permisos AWS necesarios para probar la aplicación a nivel local.

Creación del paquete de implementación de Lambda
  1. Crea un bucket de S3 en la ubicación donde desea guardar el código empaquetado. Si quieres utilizar un bucket de S3 existente, omite este paso.

    aws s3 mb s3://bucketname
  2. Crea el paquete de implementación ejecutando el siguiente comando package CLI en el indicador de comandos.

    sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket bucketname

    El nuevo archivo de plantilla, packaged.yaml, se especifica al implementar la aplicación en el siguiente paso.

Paso 3: implementar de la aplicación

Ahora que has creado el paquete de implementación, puedes utilizarlo para implementar la aplicación en la AWS nube. A continuación, prueba la aplicación invocándola en la AWS nube.

Para implementar la aplicación sin servidor en la AWS nube.
  • En la CLI AWS SAM, usa el comando deploy para implementar todos los recursos que definiste en la plantilla.

    sam deploy \ --template-file packaged.yaml \ --stack-name aws-sam-ocr \ --capabilities CAPABILITY_IAM \ --region us-east-1

    En el comando, el parámetro --capabilities permite a AWS CloudFormation crear un rol de IAM.

    AWS CloudFormation crea los recursos de AWS que se definen en la plantilla. Puedes acceder a los nombres de estos recursos en la AWS CloudFormation consola.

Para probar la aplicación sin servidor en la AWS nube.
  1. Cargua una imagen en el bucket de Amazon S3 que creaste para esta aplicación de muestra.

  2. Abre la consola de DynamoDB y busca la tabla que se ha creado. Consulta la tabla para ver los resultados devueltos por Amazon Rekognition.

  3. Comprueba que la tabla de DynamoDB contenga nuevos registros, que a su vez contengan el texto que Amazon Rekognition encontró en la imagen cargada.

Paso 4: probar la aplicación de forma local

Antes de poder probar la aplicación de forma local, primero debes recuperar los nombres de los recursos AWS creados AWS CloudFormation.

  • Recupera tanto el nombre claves como el nombre del bucket de Amazon S3 desde AWS CloudFormation. Modifica el archivo SampleEvent.json sustituyendo los valores claves del objeto, el nombre del bucket y el ARN del bucket.

  • Recupera el nombre de la tabla de DynamoDB. Este nombre se utiliza para el siguiente comando sam local invoke.

Utiliza la CLI de AWS SAM para generar un ejemplo de evento de Amazon S3 e invocar la función de Lambda:

TABLE_NAME=Table name obtained from AWS CloudFormation console sam local invoke --event SampleEvent.json

La parte TABLE_NAME= establece el nombre de la tabla de DynamoDB. El parámetro --event especifica el archivo que contiene el mensaje del evento de prueba que se va a pasar a la función de Lambda.

Ahora puedes comprobar que se crearon los registros de DynamoDB esperados, en función de los resultados devueltos por Amazon Rekognition.

Próximos pasos a seguir

El repositorio de AWS SAM GitHub contiene aplicaciones de muestra adicionales para que las descargue y las pueda probar. Para acceder a este repositorio, consulta las AWS SAM Aplicaciones de muestra.