Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Abfragen großer Datensätze mit einem AWS Glue Crawler
Dieses Beispielprojekt zeigt, wie Sie einen großen Datensatz in Amazon S3 aufnehmen und partitionieren AWS Glue Crawler und führen dann Amazon Athena Athena-Abfragen für diese Partition aus.
In diesem Projekt ruft die Step Functions Functions-Zustandsmaschine eine AWS Glue Crawler, der einen großen Datensatz in Amazon S3 partitioniert. Sobald der AWS Glue Der Crawler gibt eine Erfolgsmeldung zurück, der Workflow führt Athena-Abfragen für diese Partition aus. Sobald die Abfrageausführung erfolgreich abgeschlossen wurde, wird eine SNS Amazon-Benachrichtigung an ein SNS Amazon-Thema gesendet.
Schritt 1: Erstellen Sie die Zustandsmaschine
-
Öffnen Sie die Step Functions Functions-Konsole
und wählen Sie Create State Machine. -
Geben Sie
Query large datasets
etwas in das Suchfeld ein, und wählen Sie dann Große Datensätze aus den zurückgegebenen Suchergebnissen abfragen aus. -
Wählen Sie Next (Weiter), um fortzufahren.
-
Wählen Sie „Demo ausführen“, um eine schreibgeschützte Datei und einen ready-to-deploy Workflow zu erstellen, oder wählen Sie „Darauf aufbauen“, um eine bearbeitbare Zustandsmaschinen-Definition zu erstellen, auf der Sie aufbauen und diese später bereitstellen können.
Dieses Beispielprojekt stellt die folgenden Ressourcen bereit:
-
Importieren in &S3; Amazon S3 Bucket
-
Importieren in &S3; AWS-Glue-Crawler
-
Importieren in &S3; Amazon SNS Thema
-
Importieren in &S3; AWS Step Functions Zustandsautomat
-
Verwandt AWS Identity and Access Management (IAM) Rollen
Die folgende Abbildung zeigt das Workflow-Diagramm für das Beispielprojekt Query large datasets:
-
-
Wählen Sie Vorlage verwenden, um mit Ihrer Auswahl fortzufahren.
Die nächsten Schritte hängen von Ihrer vorherigen Auswahl ab:
-
Führen Sie eine Demo durch — Sie können den Status Machine überprüfen, bevor Sie ein schreibgeschütztes Projekt mit Ressourcen erstellen, die bereitgestellt werden von AWS CloudFormation zu Ihrem AWS-Konto.
Sie können sich die State-Machine-Definition ansehen. Wenn Sie bereit sind, wählen Sie Deploy and run, um das Projekt bereitzustellen und die Ressourcen zu erstellen.
Die Bereitstellung kann bis zu 10 Minuten dauern, bis Ressourcen und Berechtigungen erstellt sind. Sie können den Stack-ID-Link verwenden, um den Fortschritt zu überwachen AWS CloudFormation.
Nach Abschluss der Bereitstellung sollte Ihre neue Zustandsmaschine in der Konsole angezeigt werden.
-
Darauf aufbauen — Sie können die Workflow-Definition überprüfen und bearbeiten. Möglicherweise müssen Sie Werte für Platzhalter im Beispielprojekt festlegen, bevor Sie versuchen, Ihren benutzerdefinierten Workflow auszuführen.
Anmerkung
Für Dienste, die für Ihr Konto bereitgestellt werden, können Standardgebühren anfallen.
Schritt 2: Führen Sie die Zustandsmaschine aus
-
Wählen Sie auf der Seite State Machines Ihr Beispielprojekt aus.
-
Wählen Sie auf der Seite mit dem Beispielprojekt die Option Ausführung starten aus.
-
Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:
-
(Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.
ASCIINichtnamen und Protokollierung
Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Bezeichnungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.
-
(Optional) Geben Sie im Eingabefeld die Eingabewerte als einJSON. Sie können diesen Schritt überspringen, wenn Sie eine Demo ausführen.
-
Wählen Sie Start execution (Ausführung starten) aus.
Die Step Functions Functions-Konsole leitet Sie zu einer Seite mit den Ausführungsdetails weiter, auf der Sie Status in der Diagrammansicht auswählen können, um die zugehörigen Informationen im Einzelheiten zu den Schritten Bereich zu untersuchen.
-
Code des Zustandsautomaten aus diesem Beispiel
Die Zustandsmaschine in diesem Beispielprojekt ist in Amazon S3 integriert. AWS Glue, Amazon Athena und Amazon, SNS indem Parameter direkt an diese Ressourcen übergeben werden.
Sehen Sie sich diese Beispiel-Zustandsmaschine an, um zu sehen, wie Step Functions Amazon S3 steuert. AWS Glue, Amazon Athena und Amazon, SNS indem sie sich mit dem Amazon-Ressourcennamen (ARN) im Resource
Feld verbinden und Parameters
an den Service API weiterleiten.
Weitere Informationen darüber, wie AWS Step Functions kann andere kontrollieren AWS Dienstleistungen, sieheIntegration von Diensten mit Step Functions.
{
"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
}
}
}
IAMBeispiele
Diese Beispiele AWS Identity and Access Management (IAM) Die durch das Beispielprojekt generierten Richtlinien beinhalten die geringsten Rechte, die für die Ausführung der Zustandsmaschine und der zugehörigen Ressourcen erforderlich sind. Wir empfehlen, dass Sie nur die Berechtigungen in Ihre IAM Richtlinien aufnehmen, die erforderlich sind.
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": [
"*"
]
}
]
}
SNSPublish
{
"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"
]
}
]
}
Informationen zur Konfiguration IAM bei der Verwendung von Step Functions mit anderen AWS Dienste finden Sie unterSo generiert Step Functions IAM Richtlinien für integrierte Dienste.