Starten einer Athena-Abfrage - 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.

Starten einer Athena-Abfrage

Dieses Beispielprojekt, das auf Standard-Workflows basiert, zeigt, wie Sie Step Functions und Amazon Athena verwenden, um eine Athena-Abfrage zu starten und eine Benachrichtigung mit Abfrageergebnissen zu senden. Dieses Beispielprojekt erstellt Folgendes:

  • Eine Amazon Athena Athena-Abfrage

  • Einen AWS Glue-Crawler

  • Ein Amazon Simple Notification Service-Thema

  • verwandtenAWS Identity and Access Management(IAM) -Rollen

In diesem Projekt verwendet Step Functions Lambda-Funktionen undAWS GlueCrawler, um eine Reihe von Beispieldaten zu generieren. Anschließend führt es eine Abfrage mit demAthena-Dienstintegrationund gibt die Ergebnisse unter Verwendung eines SNS-Themas zurück.

Weitere Informationen Athena -Serviceintegrationen

Anmerkung

Für dieses Beispielprojekt können Gebühren anfallen.

Für neue AWS-Benutzer steht ein kostenloses Nutzungskontingent zur Verfügung. Im Rahmen dieses Kontingents sind die Services bis zu einem bestimmten Nutzungsumfang kostenlos. Weitere Informationen zuAWS-KostenAthena-Preise.

Erstellen des Zustandsautomaten und Bereitstellen von Ressourcen

Öffnen SieStep Functions Konsoleund wähleZustandsautomat.

  1. Klicken Sie aufBeispielprojekteund wählen SieStarten einer Athena-Abfrage.

    Der Code und der Visual Workflow des Zustandsautomaten werden angezeigt.

    
            Schulungsmodell-Workflow.
  2. Wählen Sie Next (Weiter).

    Die Seite Deploy resources (Ressourcen bereitstellen) wird angezeigt und listet die Ressourcen auf, die erstellt werden. Die Ressourcen für dieses Beispielprojekt:

    • Zwei Lambda-Funktionen

    • Ein -Zustandsautomat

    • Ein SNS-Thema.

    • Zugehörige IAM roles

  3. Wählen Sie Deploy Resources (Ressourcen bereitstellen) aus.

    Anmerkung

    Es kann bis zu 10 Minuten dauern, bis diese Ressourcen und dazugehörende IAM-Berechtigungen erstellt werden. Wenn die Seite Deploy resources (Ressourcen bereitstellen) anzeigt wird, können Sie den Link Stack ID (Stack-ID) öffnen, um zu sehen, welche Ressourcen bereitgestellt werden.

Starten einer neuen Ausführung

  1. Öffnen SieStep Functions Konsole.

  2. Auf derZustandsautomatenSeite, wählen Sie denAthenaStateMachineZustandsautomat, der vom Beispielprojekt erstellt wurde, und wählen Sie dannStarten der Ausführung.

  3. 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).

  4. (Optional) Um Ihre Ausführung zu identifizieren, können Sie imNameaus. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.

    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.

  5. (Optional) Wechseln Sie im Step FunctionsDashboardund wählen SieNeue Ausführung.

  6. Wenn eine Ausführung abgeschlossen ist, können Sie Zustände aufVisueller Workflowund stöbern Sie imEingabeundAusgabeunterEinzelheiten zum Schritt.

Code des Zustandsautomaten aus diesem Beispiel

Der Zustandsautomat in diesem Beispielprojekt wird in Athena undAWS Lambdaindem Parameter direkt an diese Ressourcen übergeben werden, und verwendet ein SNS-Topic, um die Ergebnisse der Abfrage zurückzugeben.

Durchsuchen Sie diesen Beispielzustandsautomaten, um zu sehen, wie Step Functions Lambda und Athena steuert.

Weitere Informationen darüber, wie AWS Step Functions andere AWS-Services steuern kann, finden Sie unter Verwenden von AWS Step Functions mit sonstigen Services.

{ "StartAt": "Generate example log", "States": { "Generate example log": { "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athena-LambdaForDataGeneration-AKIAIOSFODNN7EXAMPLE", "Type": "Task", "Next": "Run Glue crawler" }, "Run Glue crawler": { "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athen-LambdaForInvokingCrawler-AKIAI44QH8DHBEXAMPLE", "Type": "Task", "Next": "Start an Athena query" }, "Start an Athena query": { "Resource": "arn:aws:states:::athena:startQueryExecution.sync", "Parameters": { "QueryString": "SELECT * FROM \"athena-sample-project-db-wJalrXUtnFEMI\".\"log\" limit 1", "WorkGroup": "stepfunctions-athena-sample-project-workgroup-wJalrXUtnFEMI" }, "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": "arn:aws:sns:us-east-1:111122223333:StepFunctionsSample-AthenaDataQueryd1111-2222-3333-777788889999-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE", "Message": { "Input.$": "$.ResultSet.Rows" } }, "Type": "Task", "End": true } } }

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

IAM-Beispiel

Dieses BeispielAWS Identity and Access Management(IAM) -Beispielrichtlinien 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.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athena-LambdaForDataGeneration-AKIAIOSFODNN7EXAMPLE", "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-Athen-LambdaForInvokingCrawler-AKIAI44QH8DHBEXAMPLE" ], "Effect": "Allow" }, { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-east-1:111122223333:StepFunctionsSample-AthenaDataQueryd1111-2222-3333-777788889999-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE" ], "Effect": "Allow" }, { "Action": [ "athena:getQueryResults", "athena:startQueryExecution", "athena:stopQueryExecution", "athena:getQueryExecution", "athena:getDataCatalog" ], "Resource": [ "arn:aws:athena:us-east-1:111122223333:workgroup/stepfunctions-athena-sample-project-workgroup-wJalrXUtnFEMI", "arn:aws:athena:us-east-1:111122223333: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-1:111122223333:database/*", "arn:aws:glue:us-east-1:111122223333:table/*", "arn:aws:glue:us-east-1:111122223333:catalog" ], "Effect": "Allow" } ] }

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