Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Mantieni aggiornati i dati in una tabella di destinazione con AWS Glue e Athena
Questo progetto di esempio dimostra come interrogare una tabella di destinazione per ottenere dati correnti con AWS Glue Catalog, quindi aggiornarla con nuovi dati da altre fonti utilizzando Amazon Athena.
In questo progetto, la macchina a stati Step Functions chiama AWS Glue Catalog per verificare se esiste una tabella di destinazione in un bucket Amazon S3. Se non viene trovata alcuna tabella, verrà creata una nuova tabella. Quindi, Step Functions esegue una query Athena per aggiungere righe alla tabella di destinazione da un'origine dati diversa: prima interroga la tabella di destinazione per ottenere la data più recente, quindi interroga la tabella di origine per i dati più recenti e li inserisce nella tabella di destinazione.
Fase 1: Creare la macchina a stati e fornire risorse
-
Apri la console Step Functions
e scegli Crea macchina a stati. -
Digita
Keep data up to date
nella casella di ricerca, quindi scegli Mantieni i dati aggiornati dai risultati di ricerca restituiti. -
Seleziona Successivo per continuare.
-
Step Functions elenca quelli AWS servizi utilizzati nel progetto di esempio selezionato. Mostra anche un grafico del flusso di lavoro per il progetto di esempio. Implementa questo progetto sul tuo Account AWS o usalo come punto di partenza per creare i tuoi progetti. In base a come vuoi procedere, scegli Esegui una demo o Sviluppa su di essa.
Questo progetto di esempio utilizza le seguenti risorse:
-
Un bucket Amazon S3
-
Amazon Athenainterrogazioni
-
Qualsiasi chiamata AWS Glue Data Catalog
-
Una macchina a stati AWS Step Functions
-
Ruoli AWS Identity and Access Management (IAM) correlati
L'immagine seguente mostra il grafico del flusso di lavoro per il progetto di esempio Keep data update:
-
-
Scegli Usa modello per continuare con la selezione.
-
Esegui una di queste operazioni:
-
Se hai selezionato Costruisci su di esso, Step Functions crea il prototipo del flusso di lavoro, ma non distribuisce le risorse nella definizione del flusso di lavoro, quindi puoi continuare a creare il tuo prototipo di flusso di lavoro.
In Workflow Studiomodalità di progettazione, puoi aggiungere stati al tuo prototipo di flusso di lavoro. In alternativa, puoi passare Modalità codice a utilizzare l'editor di codice integrato per modificare la definizione Amazon States Language (ASL) della tua macchina a stati dalla console Step Functions.
Importante
Potrebbe essere necessario aggiornare il segnaposto Amazon Resource Name (ARN) per le risorse utilizzate nel progetto di esempio prima di poter eseguire il flusso di lavoro.
-
Se hai selezionato Esegui una demo, Step Functions crea un progetto di sola lettura che utilizza un AWS CloudFormation modello per distribuire le AWS risorse di quel modello sul tuo. Account AWSÈ possibile visualizzare la definizione della macchina a stati scegliendo la modalità Codice.
Scegli Distribuisci ed esegui per distribuire il progetto e creare le risorse.
Tieni presente che la creazione di risorse e IAM autorizzazioni può richiedere fino a 10 minuti per la distribuzione. Durante la distribuzione delle risorse, puoi aprire il link AWS CloudFormation Stack ID per vedere quali risorse vengono fornite.
Dopo aver creato tutte le risorse, dovresti vedere il progetto nella pagina State machines della console.
Importante
Potrebbero essere applicate tariffe standard per ogni servizio utilizzato nel CloudFormation modello.
-
Fase 2: Eseguire la macchina a stati
-
Nella pagina Macchine a stati, scegli il tuo progetto di esempio.
-
Nella pagina del progetto di esempio, scegli Avvia esecuzione.
-
Nella finestra di dialogo Avvia esecuzione, effettuate le seguenti operazioni:
-
(Facoltativo) Per identificare l'esecuzione, è possibile specificare un nome o utilizzare il nome di esecuzione generato di default.
Nota
Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono non ASCII caratteri. Poiché i nomi senza ASCII caratteri non funzionano con Amazon CloudWatch, ti consigliamo di utilizzare solo ASCII caratteri per tenere traccia delle metriche. CloudWatch
-
(Facoltativo) Nella casella Input, inserisci i valori di input nel JSON formato per eseguire il flusso di lavoro.
Se avete scelto di eseguire una demo, non è necessario fornire alcun input di esecuzione.
Nota
Se il progetto demo che hai distribuito contiene dati di input di esecuzione precompilati, usa quell'input per eseguire la macchina a stati.
-
Selezionare Start execution (Avvia esecuzione).
-
La console Step Functions ti indirizza a una pagina intitolata con il tuo ID di esecuzione. Questa pagina è nota come pagina dei dettagli di esecuzione. In questa pagina è possibile esaminare i risultati dell'esecuzione man mano che l'esecuzione procede o dopo il suo completamento.
Per esaminare i risultati dell'esecuzione, scegliete i singoli stati nella vista Grafico, quindi scegliete le singole schede Dettagli del passaggio nel riquadro per visualizzare i dettagli di ogni stato, inclusi rispettivamente input, output e definizione. Per i dettagli sulle informazioni sull'esecuzione che è possibile visualizzare nella pagina Dettagli di esecuzione, vederePagina dei dettagli di esecuzione: panoramica dell'interfaccia.
-
Esempio di codice della macchina a stati
La macchina a stati di questo progetto di esempio si integra con Amazon S3 AWS Glue e Amazon Athena passando i parametri direttamente a tali risorse.
Esplora questo esempio di macchina a stati per vedere come Step Functions controlla Amazon S3 e Amazon Athena connettendosi ad Amazon Resource Name ARN () Resource
sul campo e Parameters
passando al servizio. AWS Glue API
Per ulteriori informazioni su come AWS Step Functions controllare altri AWS servizi, consulta. Integrazione di altri servizi con 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
}
}
}
IAMEsempio
Questa politica di esempio AWS Identity and Access Management (IAM) generata dal progetto di esempio include il minimo privilegio necessario per eseguire la macchina a stati e le risorse correlate. Ti consigliamo di includere solo le autorizzazioni necessarie nelle tue IAM politiche.
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": [
"*"
]
}
]
}
Per informazioni su come configurare l'IAMutilizzo di Step Functions con altri AWS servizi, vedereIn che modo Step Functions genera IAM politiche per servizi integrati.