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.
Mantenga los datos de una tabla de destino actualizados con AWS Glue y Athena
Este proyecto de ejemplo muestra cómo consultar una tabla de destino para obtener datos actuales con AWS Glue Catalog y, a continuación, actualizarla con nuevos datos de otras fuentes mediante Amazon Athena.
En este proyecto, la máquina de estados Step Functions llama a AWS Glue Catalog para verificar si existe una tabla de destino en un bucket de Amazon S3. Si no encuentra ninguna tabla, se creará una nueva. A continuación, Step Functions ejecuta una consulta de Athena para añadir filas a la tabla de destino desde un origen de datos diferente: primero consulta la tabla de destino para obtener la fecha más reciente y, posteriormente, consulta la tabla de origen para obtener datos más recientes e insertarlos en la tabla de destino.
Paso 1: Crear la máquina de estado y aprovisionar recursos
-
Abra la consola de Step Functions
y seleccione Crear máquina de estado. -
Escriba
Keep data up to date
en el cuadro de búsqueda y, a continuación, seleccione Mantener los datos actualizados en los resultados de búsqueda que aparecen. -
Elija Siguiente para continuar.
-
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:
-
Un bucket de Amazon S3
-
Consultas de Amazon Athena
-
Una llamada de AWS Glue Data Catalog
-
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 del flujo de trabajo del proyecto de muestra Mantener los datos actualizados:
-
-
Elija Utilizar plantilla para continuar con la selección.
-
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
-
En la página Máquina de estado, elija su proyecto de muestra.
-
En la página del proyecto de muestra, seleccione Iniciar ejecución.
-
En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:
-
(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
-
(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.
-
Seleccione Iniciar ejecución.
-
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 Amazon S3 y Amazon Athena al pasar los parámetros directamente a esos recursos. AWS Glue
Explore este ejemplo de máquina de estados para ver cómo Step Functions controla Amazon S3 y Amazon Athena conectándose al nombre de recurso de Amazon (ARN) en el Resource
campo y pasando Parameters
al servicio. AWS Glue API
Para obtener más información sobre cómo AWS Step Functions puede controlar otros AWS servicios, consulteIntegración de otros servicios con Step Functions.
{
"Comment": "An example demonstrates how to use Athena to query a target table to get current data, then update it with new data from other sources.",
"StartAt": "Get Target Table",
"States": {
"Get Target Table": {
"Type": "Task",
"Parameters": {
"DatabaseName": "<GLUE_DATABASE_NAME>",
"Name": "target"
},
"Catch": [
{
"ErrorEquals": [
"Glue.EntityNotFoundException"
],
"Next": "Create Target Table"
}
],
"Resource": "arn:aws:states:::aws-sdk:glue:getTable",
"Next": "Update Target Table"
},
"Create Target Table": {
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "<ATHENA_QUERYSTRING>",
"WorkGroup": "<ATHENA_WORKGROUP>"
},
"Type": "Task",
"Next": "Update Target Table"
},
"Update Target Table": {
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "<ATHENA_QUERYSTRING>",
"WorkGroup": "<ATHENA_WORKGROUP>"
},
"Type": "Task",
"End": true
}
}
}
IAMEjemplo
Esta política de ejemplo AWS Identity and Access Management (IAM) generada por el proyecto de muestra incluye 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.
AthenaStartQueryExecution
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:startQueryExecution",
"athena:stopQueryExecution",
"athena:getQueryExecution",
"athena:getDataCatalog"
],
"Resource": [
"arn:aws:athena:us-east-2:123456789012:workgroup/stepfunctions-athena-sample-project-workgroup-26ujlyawxg",
"arn:aws:athena:us-east-2:123456789012: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-2:123456789012:catalog",
"arn:aws::glue:us-east-2:123456789012:database/*",
"arn:aws::glue:us-east-2:123456789012:table/*",
"arn:aws::glue:us-east-2:123456789012:userDefinedFunction/*"
]
},
{
"Effect": "Allow",
"Action": [
"lakeformation:GetDataAccess"
],
"Resource": [
"*"
]
}
]
}
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.