Procesar eventos de Amazon S3 - 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 esta aplicación de ejemplo, se basa en lo aprendido en los ejemplos anteriores e instala una aplicación más compleja. Esta aplicación consiste en una función Lambda invocada por un origen de eventos de carga de objetos de Amazon S3. En este ejercicio puede ver cómo accederAWSrecursos y hacerAWSllamadas de servicio a través de una función Lambda.

Este ejemplo de aplicación sin 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 objeto e invoca una función Lambda. La función Lambda invoca Amazon Rekognition para detectar el texto que se encuentra en la imagen. A continuación, almacena los resultados devueltos por Amazon Rekognition en una tabla de DynamoDB.

nota

Con esta aplicación de ejemplo, se realizan pasos en un orden ligeramente diferente al de los ejemplos anteriores. La razón de esto es que este ejemplo requiere queAWSse crean recursos y se configuran los permisos de IAMantepuede probar la función Lambda localmente. Vamos a aprovecharAWS CloudFormationpara crear los recursos y configurar los permisos para usted. De lo contrario, tendría que hacerlo manualmente antes de poder probar la función Lambda localmente.

Dado que este ejemplo es más complicado, asegúrese de que está familiarizado con la instalación de las aplicaciones de ejemplo anteriores antes de ejecutar esta.

Antes de empezar

Asegúrese de que ha realizado la configuración necesaria en elInstalación de la CLI de AWS SAM.

Paso 1: Inicializar la aplicación

En esta sección, se descarga el ejemplo de aplicación, que consta de una plantilla de AWS SAM y el código de aplicación.

Para inicializar la aplicación

  1. Ejecute el siguiente comando en un símbolo del sistema de la CLI de AWS SAM.

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

    • template.yaml— Define tresAWSRecursos que necesita la aplicación Amazon S3: una función de Lambda, un bucket de Amazon S3 y una tabla de DynamoDB La plantilla también define las asignaciones y los permisos entre estos recursos.

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

    • SampleEvent.json: el origen de eventos de ejemplo, que se utiliza para las pruebas locales.

Paso 2: Creación de paquete de la aplicación

Antes de poder probar esta aplicación localmente, debe utilizar elAWS SAMCLI para crear un paquete de implementación, que se utiliza para implementar la aplicación en elAWSCloud. Esta implementación crea lo necesarioAWSrecursos y permisos necesarios para probar la aplicación localmente.

Para crear un paquete de implementación de Lambda

  1. Cree un bucket de S3 en la ubicación donde desea guardar el código empaquetado. Si desea utilizar un bucket de S3 existente, omita este paso.

    aws s3 mb s3://bucketname
  2. Cree el paquete de implementación de ejecutando lo siguientepackageComando de la CLI en el símbolo del sistema.

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

    Especifica el nuevo archivo de plantilla,packaged.yaml, cuando implemente la aplicación en el próximo paso.

Paso 3: Implementación de la aplicación

Ahora que ha creado el paquete de implementación, puede utilizarlo para implementar la aplicación enAWSCloud. A continuación, pruebe la aplicación invocándola en elAWSCloud.

Para implementar la aplicación sin servidor en elAWSNube

  • En el navegadorAWS SAMCLI, utilice ladeploypara implementar todos los recursos que ha definido 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--capabilitiesparámetro permiteAWS CloudFormationpara crear un rol de IAM.

    AWS CloudFormationcrea elAWSrecursos que se definen en la plantilla de. Puede acceder a los nombres de estos recursos en elAWS CloudFormationconsola de .

Para probar la aplicación sin servidor en elAWSNube

  1. Cargue una imagen en el depósito de Amazon S3 que ha creado para esta aplicación de ejemplo.

  2. Abra la consola de DynamoDB y busque la tabla que se creó. Consulte la tabla para ver los resultados devueltos por Amazon Rekognition.

  3. Compruebe que la tabla DynamoDB contiene nuevos registros que contengan texto que Amazon Rekognition encontró en la imagen cargada.

Paso 4: Pruebe la aplicación localmente

Antes de poder probar la aplicación localmente, primero debe recuperar los nombres delAWSrecursos que ha creadoAWS CloudFormation.

  • Recuperar el nombre de clave de Amazon S3 y el nombre del bucket deAWS CloudFormation. Modifique laSampleEvent.jsonsustituyendo los valores de la clave de objeto, el nombre del depósito y el ARN del bucket.

  • Recuperar el nombre de la tabla de DynamoDB Este nombre se utiliza para lo siguientesam local invokecomando.

UsarAWS SAMCLI para generar un evento de muestra de Amazon S3 e invocar la función Lambda:

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

LaTABLE_NAME=parte establece el nombre de la tabla de DynamoDB. La--eventespecifica el archivo que contiene el mensaje del evento de prueba que se va a pasar a la función Lambda.

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

Pasos siguientes

LaAWS SAMEl repositorio de GitHub contiene aplicaciones de ejemplo adicionales para que las descargues y experimentes. Para acceder a este repositorio, consulteAWS SAMAplicaciones de ejemplo.