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.
Interrogez de grands ensembles de données (Amazon Athena, Amazon S3 AWS Glue, Amazon SNS)
Cet exemple de projet montre comment ingérer un ensemble de données volumineux dans Amazon S3 et le partitionner via AWS Glue Crawlers, puis exécuter des requêtes Amazon Athena sur cette partition.
Dans ce projet, la machine d'état Step Functions invoque un AWS Glue robot d'exploration qui partitionne un ensemble de données volumineux dans Amazon S3. Une fois que le AWS Glue robot d'exploration renvoie un message de réussite, le flux de travail exécute les requêtes Athena sur cette partition. Une fois que l'exécution de la requête est terminée avec succès, une notification Amazon SNS est envoyée à une rubrique Amazon SNS.
Étape 1 : créer la machine à états et provisionner les ressources
-
Ouvrez la console Step Functions
et choisissez Create state machine. -
Tapez
Query large datasets
dans la zone de recherche, puis choisissez Interroger de grands ensembles de données dans les résultats de recherche renvoyés. -
Choisissez Next (Suivant) pour continuer.
-
Step Functions répertorie les AWS services éléments utilisés dans l'exemple de projet que vous avez sélectionné. Il montre également un graphique de flux de travail pour l'exemple de projet. Déployez ce projet sur votre site Compte AWS ou utilisez-le comme point de départ pour créer vos propres projets. Selon la façon dont vous souhaitez procéder, choisissez Exécuter une démo ou Construire à partir de celle-ci.
Cet exemple de projet déploie les ressources suivantes :
-
Un compartiment Amazon S3
-
Un AWS Glue crawler
-
Une rubrique Amazon SNS
-
Machine d'état AWS Step Functions
-
Rôles AWS Identity and Access Management (IAM) connexes
L'image suivante montre le graphique du flux de travail pour l'exemple de projet Query large datasets :
-
-
Choisissez Utiliser le modèle pour poursuivre votre sélection.
-
Effectuez l’une des actions suivantes :
-
Si vous avez sélectionné Build on it, Step Functions crée le prototype de flux de travail pour l'exemple de projet que vous avez sélectionné. Step Functions ne déploie pas les ressources répertoriées dans la définition du flux de travail.
Dans Workflow StudioMode de conception, glissez-déposez les états depuis le Navigateur d'états pour continuer à créer votre prototype de flux de travail. Vous pouvez également passer à un éditeur de code intégré similaire à VS Code pour mettre à jour la définition Amazon States Language (ASL) de votre machine à états dans la console Step Functions. Mode code Pour plus d'informations sur l'utilisation de Workflow Studio pour créer vos machines d'état, consultezUtilisation de Workflow Studio.
Important
N'oubliez pas de mettre à jour l'espace réservé Amazon Resource Name (ARN) pour les ressources utilisées dans l'exemple de projet avant d'exécuter votre flux de travail.
-
Si vous avez sélectionné Run a demo, Step Functions crée un exemple de projet en lecture seule qui utilise un AWS CloudFormation modèle pour déployer les AWS ressources répertoriées dans ce modèle sur votre. Compte AWS
Astuce
Pour afficher la définition de la machine à états de l'exemple de projet, choisissez Code.
Lorsque vous êtes prêt, choisissez Déployer et exécuter pour déployer l'exemple de projet et créer les ressources.
La création de ces ressources et des autorisations IAM associées peut prendre jusqu'à 10 minutes. Pendant le déploiement de vos ressources, vous pouvez ouvrir le lien CloudFormation Stack ID pour voir quelles ressources sont mises en service.
Une fois que toutes les ressources de l'exemple de projet ont été créées, vous pouvez voir le nouvel exemple de projet répertorié sur la page State machines.
Important
Des frais standard peuvent s'appliquer pour chaque service utilisé dans le CloudFormation modèle.
-
Étape 2 : Exécuter la machine à états
-
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) Pour identifier votre exécution, vous pouvez lui donner un nom dans le champ Nom. Par défaut, Step Functions génère automatiquement un nom d'exécution unique.
Note
Step Functions vous permet de créer des noms pour les machines d'état, les exécutions, les activités et les étiquettes contenant des caractères non ASCII. Ces noms non ASCII ne fonctionnent pas avec Amazon. CloudWatch Pour être sûr de pouvoir suivre CloudWatch les métriques, choisissez un nom qui utilise uniquement des caractères ASCII.
-
(Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée au format JSON pour exécuter votre flux de travail.
Si vous avez choisi d'exécuter une démo, vous n'avez pas besoin de fournir d'entrée d'exécution.
-
Choisissez Start execution (Démarrer l'exécution).
-
La console Step Functions vous dirige vers une page intitulée avec votre ID d'exécution. Cette page est connue sous le nom de page Détails de l'exécution. Sur cette page, vous pouvez consulter les résultats de l'exécution au fur et à mesure que l'exécution progresse ou une fois celle-ci terminée.
Pour consulter les résultats de l'exécution, choisissez des états individuels dans la vue graphique, puis choisissez les onglets individuels du Détails de l'étape volet pour afficher les détails de chaque état, y compris les entrées, les sorties et la définition respectivement. Pour plus de détails sur les informations d'exécution que vous pouvez consulter sur la page Détails de l'exécution, voirPage de détails d'exécution — Vue d'ensemble de l'interface.
-
Exemple de code de machine d'état
Dans cet exemple de projet, la machine à états s'intègre à Amazon S3 AWS Glue, Amazon Athena et Amazon SNS en transmettant des paramètres directement à ces ressources.
Parcourez cet exemple de machine à états pour découvrir comment Step Functions contrôle Amazon S3 AWS Glue, Amazon Athena et Amazon SNS en se connectant à l'Amazon Resource Name (ARN) sur Resource
le terrain et en accédant à l'API du Parameters
service.
Pour plus d'informations sur la manière de AWS Step Functions contrôler d'autres AWS services, consultezUtilisation AWS Step Functions avec d'autres services.
{
"Comment": "An example demonstrates how to ingest a large data set in Amazon S3 and partition it through aws Glue Crawlers, then execute Amazon Athena queries against that partition.",
"StartAt": "Start Crawler",
"States": {
"Start Crawler": {
"Type": "Task",
"Next": "Get Crawler status",
"Parameters": {
"Name": "<GLUE_CRAWLER_NAME>"
},
"Resource": "arn:aws:states:::aws-sdk:glue:startCrawler"
},
"Get Crawler status": {
"Type": "Task",
"Parameters": {
"Name": "<GLUE_CRAWLER_NAME>"
},
"Resource": "arn:aws:arn:aws:states:::aws-sdk:glue:getCrawler",
"Next": "Check Crawler status"
},
"Check Crawler status": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.Crawler.State",
"StringEquals": "RUNNING",
"Next": "Wait"
}
],
"Default": "Start an Athena query"
},
"Wait": {
"Type": "Wait",
"Seconds": 30,
"Next": "Get Crawler status"
},
"Start an Athena query": {
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "<ATHENA_QUERYSTRING>",
"WorkGroup": "<ATHENA_WORKGROUP>"
},
"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": "<SNS_TOPIC_ARN>",
"Message": {
"Input.$": "$.ResultSet.Rows"
}
},
"Type": "Task",
"End": true
}
}
}
Exemples IAM
Ces exemples de politiques AWS Identity and Access Management (IAM) générés par l'exemple de projet incluent 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 politiques IAM.
AthenaGetQueryResults
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:getQueryResults"
],
"Resource": [
"arn:aws:athena:us-east-2:123456789012:workgroup/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
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-8v7bshiv70",
"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": [
"*"
]
}
]
}
SNS Publish
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:us-east-2:123456789012:StepFunctionsSample-AthenaIngestLargeDataset92bc4949-abf8-4a1e-9236-5b7c81b3efa3-SNSTopic-8Y5ZLI5AASXV"
]
}
]
}
Pour plus d'informations sur la configuration de l'IAM lors de l'utilisation de Step Functions avec d'autres AWS services, consultezPolitiques IAM pour les services intégrés.