Abfragen großer Datensätze (Amazon Athena, Amazon S3,AWS GlueAmazon SNS) - AWS Step Functions

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 (Amazon Athena, Amazon S3,AWS GlueAmazon SNS)

Dieses Beispielprojekt zeigt, wie Sie einen großen Datensatz in Amazon S3 aufnehmen und partitionierenAWS GlueCrawler, führen dann Amazon Athena Athena-Abfragen für diese Partition aus. Durch Bereitstellen dieses Beispielprojekts wird einAWS Step FunctionsState Machine, ein Amazon S3 S3-Bucket, einAWS Glueein Crawler und ein Amazon SNS-Thema.

In diesem Projekt ruft die Step Functions Functions-Zustandsmaschine eineAWS GlueCrawler, der einen großen Datensatz in Amazon S3 partitioniert. Once-derAWS GlueCrawler 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 Amazon SNS-Benachrichtigung an ein Amazon SNS-Thema gesendet.

Erstellen des Zustandsautomaten und Bereitstellen von Ressourcen

  1. Öffnen Sie die Amazon-Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Wählen Sie im linken Navigationsbereich die Option-Workflows.

  3. In derGroße Datensätze abfragenKachel, wählenErste Schritte.

  4. In derErste Schrittedie OptionBereitstellen eines Beispielprojektsund danach aufContinue.

  5. Sie werden zu umgeleitetWorkflow überprüfenSeite der Step Functions Functions-Konsole. Überprüfen Sie die automatisch für das Beispielprojekt generierte Amazon States-Sprachdefinition.

    Der ZustandsautomatWorkflow-DefinitionundVisueller Workflowangezeigt werden.

    
                        Workflow zum Abfragen großer Datensätze.
  6. Wählen Sie Next (Weiter).

    DieBereitstellen und ausführenangezeigt werden und listet die Ressourcen auf, die erstellt werden. Dieses Beispielprojekt erstellt die folgenden Ressourcen:

    • Amazon Athena Athena-Abfragen

    • Lambda-Funktion

    • Ein Amazon-S3-Bucket

    • Amazon-SNS-Thema

    • EINAWS GlueDatenbank

  7. Klicken Sie aufBereitstellen und ausführen.

    Anmerkung

    Es kann bis zu 10 Minuten dauern, bis diese Ressourcen und dazu gehörende IAM-Berechtigungen erstellt werden. Während derBereitstellen und ausführenangezeigt wird, öffnen Sie denStack-IDLink, um zu sehen, welche Ressourcen bereitgestellt werden.

Starten einer neuen Ausführung

  1. Geben Sie auf der Seite New execution (Neue Ausführung) einen Namen für die Ausführung (optional) ein und wählen Sie Start Execution (Ausführung starten).

  2. (Optional) Um Ihre Ausführung zu identifizieren, können Sie eine ID für sie imNameaus. Step Functions erstellt automatisch einen eindeutigen Ausführungsnamen, wenn Sie keinen Namen eingeben.

    Anmerkung

    Mit Step Functions können Sie Zustandsautomaten-, Ausführungs- und Aktivitätsnamen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit Amazon CloudWatch. Um sicherzustellen, dass Sie verfolgen können CloudWatch metriken, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

  3. (Optional) Sie können in den Step Functions zum neu erstellten Zustandsautomaten wechselnDashboardund danach aufNeue Ausführung.

  4. Wenn eine Ausführung abgeschlossen ist, können Sie einen Zustandsautomaten auf derVisueller Workflowund stöbern Sie imEingabeundAusgabeunterEinzelheiten zum Schritt.

Code des Zustandsautomaten aus diesem Beispiel

Der Zustandsautomat in diesem Beispielprojekt wird in Amazon S3 integriert.AWS Glue, Amazon Athena und Amazon SNS, indem Parameter direkt an diese Ressourcen übergeben werden.

Durchsuchen Sie diesen Beispiel-Zustandsautomaten, um zu sehen, wie Step Functions Amazon S3 steuert.AWS Glue, Amazon Athena und Amazon SNS, indem Sie eine Verbindung zum Amazon Ressourcenname (ARN) imResourceFeld und durch PassierenParameterszur Service-API.

Weitere Informationen darüber, wie AWS Step Functions andere AWS-Services steuern kann, finden Sie unter Verwenden von AWS Step Functions mit sonstigen 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 } } }

IAM-Beispiele

Dieses BeispielAWS Identity and Access Management(IAM) -Beispielprojekt erstellt wurden, enthalten die geringstmöglichen Privilegien, die für die Ausführung des Zustandsautomaten und der verwandten Ressourcen erforderlich sind. Wir empfehlen, nur die erforderlichen Berechtigungen in Ihre IAM-Richtlinien aufzunehmen.

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 veröffentlichen

{ "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" ] } ] }

Weitere Informationen zum Konfigurieren von IAM bei Verwendung von Step Functions mit anderenAWSDienstleistungen, sieheIAM-Richtlinien für integrierte Dienste.