Iniciar una consulta de Athena y enviar una notificación de resultados - AWS Step Functions

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.

Iniciar una consulta de Athena y enviar una notificación de resultados

Este proyecto de ejemplo muestra cómo usar Step Functions y Amazon Athena para iniciar una consulta de Athena y enviar una notificación con los resultados de la consulta mediante flujos de trabajo estándar.

En este proyecto, Step Functions utiliza funciones Lambda y un AWS Glue rastreador para generar un conjunto de datos de ejemplo. A continuación, realiza una consulta mediante la integración del servicio Athena y devuelve los resultados mediante un SNS tema.

Para obtener más información acerca de de Athena y de las integraciones de servicios de Step Functions, consulte los temas siguientes.

nota

Este proyecto de muestra puede generar cargos.

Para AWS los nuevos usuarios, hay disponible un nivel de uso gratuito. En esta capa, los servicios son gratuitos por debajo de determinado nivel de uso. Para obtener más información sobre AWS los costes y la capa gratuita, consulta los precios de Athena.

Paso 1: Crear la máquina de estado y aprovisionar recursos

  1. Abra la consola de Step Functions y seleccione Crear máquina de estado.

  2. Escriba Start an Athena query en el cuadro de búsqueda y, a continuación, seleccione Iniciar una consulta de Athena en de los resultados de búsqueda que aparecen.

  3. Elija Siguiente para continuar.

  4. Step Functions muestra una lista de las Servicios de AWS utilizadas en el proyecto de muestra que ha seleccionado. También muestra un gráfico del flujo de trabajo para el proyecto de muestra. Implemente este proyecto en su empresa Cuenta de AWS o utilícelo como punto de partida para crear sus propios proyectos. En función de cómo desee continuar, elija Ejecutar una demostración o Crear a partir de ella.

    En este proyecto de muestra se implementan los siguientes recursos:

    • Una consulta de Amazon Athena

    • Una Rastreador de AWS Glue

    • Un tema de Amazon SNS

    • Una máquina de estado de AWS Step Functions

    • Roles de AWS Identity and Access Management (IAM) relacionados

    En la siguiente imagen se ilustra el gráfico de flujo del trabajo del proyecto de muestra Iniciar una consulta de Athena:

    Gráfico del flujo de trabajo del proyecto de muestra Iniciar una consulta de Athena.
  5. Elija Utilizar plantilla para continuar con la selección.

  6. Realice una de las siguientes acciones siguientes:

    • Si seleccionó Construir a partir de él, Step Functions crea el prototipo de flujo de trabajo, pero no despliega los recursos de la definición del flujo de trabajo, por lo que puede seguir creando su prototipo de flujo de trabajo.

      En Workflow StudioModo Diseño, puedes añadir estados adicionales a tu prototipo de flujo de trabajo. O bien, puede cambiar Modo Código al editor de código integrado para editar la definición Amazon States Language (ASL) de su máquina de estados desde la consola Step Functions.

      importante

      Es posible que tengas que actualizar el marcador de posición Amazon Resource Name (ARN) para los recursos utilizados en el proyecto de ejemplo antes de poder ejecutar tu flujo de trabajo.

    • Si seleccionó Ejecutar una demostración, Step Functions crea un proyecto de solo lectura que utiliza una AWS CloudFormation plantilla para implementar los AWS recursos de esa plantilla en su empresa. Cuenta de AWS Puede ver la definición de la máquina de estados seleccionando el modo Código.

      Elija Implementar y ejecutar para implementar el proyecto y crear los recursos.

      Tenga en cuenta que la implementación puede tardar hasta 10 minutos en crearse IAM los recursos y los permisos. Mientras se despliegan tus recursos, puedes abrir el enlace AWS CloudFormation Stack ID para ver qué recursos se están aprovisionando.

      Una vez creados todos los recursos, deberías ver el proyecto en la página State Machines de la consola.

      importante

      Se pueden aplicar cargos estándar por cada servicio utilizado en la CloudFormation plantilla.

Paso 2: Ejecutar la máquina de estado

  1. En la página Máquina de estado, elija su proyecto de muestra.

  2. En la página del proyecto de muestra, seleccione Iniciar ejecución.

  3. En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:

    1. (Opcional) Para identificar la ejecución, puede especificar un nombre o utilizar el nombre de ejecución generado por defecto.

      nota

      Step Functions acepta nombres para máquinas de estados, ejecuciones, actividades y etiquetas que no contengan ASCII caracteres. Como los nombres que no contengan ASCII caracteres no funcionan en Amazon CloudWatch, te recomendamos que utilices solo ASCII caracteres para poder realizar un seguimiento de las métricas. CloudWatch

    2. (Opcional) En el cuadro de entrada, introduce los valores de entrada en el JSON formato adecuado para ejecutar tu flujo de trabajo.

      Si se ha seleccionado Ejecutar una demostración, no es necesario proporcionar ninguna entrada de ejecución.

      nota

      Si el proyecto de demostración que implementó contiene datos de entrada de ejecución rellenados previamente, utilice esa entrada para ejecutar la máquina de estado.

    3. Seleccione Iniciar ejecución.

    4. La consola de Step Functions le dirige a una página cuyo título es su ID de ejecución. Esta página se conoce como Detalles de la ejecución. En esta página, puede revisar los resultados de la ejecución a medida que avanza la ejecución o una vez finalizada.

      Para revisar los resultados de la ejecución, elija los estados individuales en la Vista de gráfico y, a continuación, elija las pestañas individuales del panel Detalles del paso para ver los detalles de cada estado, incluidas la entrada, la salida y la definición, respectivamente. Para obtener más información sobre la ejecución que puede ver en la página Detalles de la ejecución, consulte Página de detalles de ejecución: información general de la interfaz.

Código de la máquina de estado de ejemplo

La máquina de estados de este proyecto de ejemplo se integra con Athena y pasa AWS Lambda los parámetros directamente a esos recursos, y utiliza un SNS tema para devolver los resultados de la consulta.

Examine este ejemplo de máquina de estado para ver cómo Step Functions controla Lambda y Athena.

Para obtener más información sobre cómo AWS Step Functions controlar otros AWS servicios, consulteIntegración de otros servicios con Step Functions.

{ "StartAt": "Generate example log", "States": { "Generate example log": { "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athena-LambdaForDataGeneration-AKIAIOSFODNN7EXAMPLE", "Type": "Task", "Next": "Run Glue crawler" }, "Run Glue crawler": { "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athen-LambdaForInvokingCrawler-AKIAI44QH8DHBEXAMPLE", "Type": "Task", "Next": "Start an Athena query" }, "Start an Athena query": { "Resource": "arn:aws:states:::athena:startQueryExecution.sync", "Parameters": { "QueryString": "SELECT * FROM \"athena-sample-project-db-wJalrXUtnFEMI\".\"log\" limit 1", "WorkGroup": "stepfunctions-athena-sample-project-workgroup-wJalrXUtnFEMI" }, "Type": "Task", "Next": "Get query results" }, "Get query results": { "Resource": "arn:aws:states:::athena:getQueryResults", "Parameters": { "QueryExecutionId.$": "$.QueryExecution.QueryExecutionId" }, "Type": "Task", "Next": "Send query results" }, "Send query results": { "Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:us-east-1:111122223333:StepFunctionsSample-AthenaDataQueryd1111-2222-3333-777788889999-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE", "Message": { "Input.$": "$.ResultSet.Rows" } }, "Type": "Task", "End": true } } }

Para obtener información sobre cómo configurar el IAM uso de Step Functions con otros AWS servicios, consulteCómo Step Functions genera IAM políticas para servicios integrados.

IAMEjemplo

Estas políticas de ejemplo AWS Identity and Access Management (IAM) generadas por el proyecto de muestra incluyen los privilegios mínimos necesarios para ejecutar la máquina de estados y los recursos relacionados. Le recomendamos que incluya solo los permisos que sean necesarios en sus IAM políticas.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athena-LambdaForDataGeneration-AKIAIOSFODNN7EXAMPLE", "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athen-LambdaForInvokingCrawler-AKIAI44QH8DHBEXAMPLE" ], "Effect": "Allow" }, { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-east-1:111122223333:StepFunctionsSample-AthenaDataQueryd1111-2222-3333-777788889999-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE" ], "Effect": "Allow" }, { "Action": [ "athena:getQueryResults", "athena:startQueryExecution", "athena:stopQueryExecution", "athena:getQueryExecution", "athena:getDataCatalog" ], "Resource": [ "arn:aws:athena:us-east-1:111122223333:workgroup/stepfunctions-athena-sample-project-workgroup-wJalrXUtnFEMI", "arn:aws:athena:us-east-1:111122223333:datacatalog/*" ], "Effect": "Allow" }, { "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": [ "glue:CreateDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:DeleteDatabase", "glue:CreateTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:DeletePartition", "glue:BatchDeletePartition" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:database/*", "arn:aws:glue:us-east-1:111122223333:table/*", "arn:aws:glue:us-east-1:111122223333:catalog" ], "Effect": "Allow" } ] }

Para obtener información sobre cómo configurar el IAM uso de Step Functions con otros AWS servicios, consulteCómo Step Functions genera IAM políticas para servicios integrados.