Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Mettez à jour les données d'une table cible avec AWS Glue et Athéna
Cet exemple de projet montre comment interroger une table cible pour obtenir des données actuelles avec AWS Glue Cataloguez, puis mettez-le à jour avec de nouvelles données provenant d'autres sources à l'aide d'Amazon Athena.
Dans ce projet, la machine d'état Step Functions appelle AWS Glue Catalogue pour vérifier si une table cible existe dans un compartiment Amazon S3. Si aucune table n'est trouvée, une nouvelle table sera créée. Ensuite, Step Functions exécute une requête Athena pour ajouter des lignes à la table cible à partir d'une autre source de données : en interrogeant d'abord la table cible pour obtenir la date la plus récente, puis en interrogeant la table source pour obtenir des données plus récentes et en les insérant dans la table cible.
Étape 1 : Création de la machine à états
-
Ouvrez la console Step Functions
et choisissez Create state machine. -
Tapez
Keep data up to date
dans la zone de recherche, puis choisissez Garder les données à jour à partir des résultats de recherche renvoyés. -
Choisissez Next (Suivant) pour continuer.
-
Choisissez Exécuter une démo pour créer un ready-to-deploy flux de travail et un mode de travail en lecture seule, ou choisissez Construire dessus pour créer une définition de machine à états modifiable sur laquelle vous pourrez vous appuyer pour la déployer ultérieurement.
Cet exemple de projet déploie les ressources suivantes :
-
Un Amazon S3 bucket
-
Amazon Athena queries
-
Un AWS Glue Data Catalog appel
-
Un AWS Step Functions machine d'état
-
Relié AWS Identity and Access Management (IAM) rôles
L'image suivante montre le graphique du flux de travail pour l'exemple de projet Maintenir les données à jour :
-
-
Choisissez Utiliser le modèle pour poursuivre votre sélection.
Les prochaines étapes dépendent de votre choix précédent :
-
Exécuter une démonstration : vous pouvez passer en revue la machine d'état avant de créer un projet en lecture seule avec des ressources déployées par AWS CloudFormation à votre Compte AWS.
Vous pouvez consulter la définition de la machine d'état et, lorsque vous êtes prêt, choisissez Déployer et exécuter pour déployer le projet et créer les ressources.
Le déploiement peut prendre jusqu'à 10 minutes pour créer des ressources et des autorisations. Vous pouvez utiliser le lien Stack ID pour suivre les progrès dans AWS CloudFormation.
Une fois le déploiement terminé, vous devriez voir votre nouvelle machine d'état dans la console.
-
Tirez parti de cette information : vous pouvez revoir et modifier la définition du flux de travail. Vous devrez peut-être définir des valeurs pour les espaces réservés dans l'exemple de projet avant de tenter d'exécuter votre flux de travail personnalisé.
Note
Des frais standard peuvent s'appliquer pour les services déployés sur votre compte.
Étape 2 : Exécuter la machine d'état
-
Sur la page State machines, choisissez votre exemple de projet.
-
Sur la page d'exemple de projet, choisissez Démarrer l'exécution.
-
Dans la boîte de dialogue Démarrer l'exécution, procédez comme suit :
-
(Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.
ASCIINon-noms et journalisation
Step Functions accepte les noms des machines d'état, des exécutions, des activités et des étiquettes contenant des caractères autres que des ASCII caractères. Comme ces caractères ne fonctionneront pas avec Amazon CloudWatch, nous vous recommandons de n'utiliser que des ASCII caractères afin de pouvoir suivre les statistiques CloudWatch.
-
(Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée sous la formeJSON. Vous pouvez ignorer cette étape si vous lancez une démonstration.
-
Choisissez Start execution (Démarrer l'exécution).
La console Step Functions vous dirige vers une page de détails d'exécution où vous pouvez choisir les états dans la vue graphique pour explorer les informations associées dans le Détails de l'étape volet.
-
Exemple de code de machine d'état
Dans cet exemple de projet, la machine à états s'intègre à Amazon S3, AWS Glue, et Amazon Athena en transmettant les paramètres directement à ces ressources.
Parcourez cet exemple de machine à états pour découvrir comment Step Functions contrôle Amazon S3, AWS Glue, et Amazon Athena en vous connectant au nom de ressource Amazon (ARN) Resource
sur le terrain et en accédant Parameters
au service. API
Pour plus d'informations sur la façon dont AWS Step Functions peut contrôler d'autres AWS services, voirIntégrer les services avec 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
}
}
}
IAMExemple
Cet exemple AWS Identity and Access Management (IAM) la politique générée par l'exemple de projet inclut le moindre privilège nécessaire pour exécuter la machine à états et les ressources associées. Nous vous recommandons de n'inclure que les autorisations nécessaires dans vos IAM politiques.
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": [
"*"
]
}
]
}
Pour plus d'informations sur la configuration IAM lors de l'utilisation de Step Functions avec d'autres AWS services, voirComment Step Functions génère IAM des politiques pour les services intégrés.