Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Automatizza l'inserimento di flussi di dati in un database Snowflake utilizzando Snowflake Snowpipe, Amazon S3, Amazon SNS e Amazon Data Firehose - Prontuario AWS

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à.

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à.

Automatizza l'inserimento di flussi di dati in un database Snowflake utilizzando Snowflake Snowpipe, Amazon S3, Amazon SNS e Amazon Data Firehose

Creato da Bikash Chandra Rout (AWS)

Riepilogo

Questo modello descrive come utilizzare i servizi su Amazon Web Services (AWS) Cloud per elaborare un flusso continuo di dati e caricarlo in un database Snowflake. Il modello utilizza Amazon Data Firehose per inviare i dati ad Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon SNS) per inviare notifiche quando vengono ricevuti nuovi dati e Snowflake Snowpipe per caricare i dati in un database Snowflake.

Seguendo questo schema, puoi avere a disposizione i dati generati continuamente per l'analisi in pochi secondi, evitare più COPY comandi manuali e avere il supporto completo per i dati semistrutturati in fase di caricamento.

Prerequisiti e limitazioni

Prerequisiti

  • Un attivo Account AWS.

  • Una fonte di dati che invia continuamente dati a un flusso di distribuzione Firehose.

  • Un bucket S3 esistente che riceve i dati dal flusso di distribuzione Firehose.

  • Un account Snowflake attivo.

Limitazioni

  • Snowflake Snowpipe non si collega direttamente a Firehose.

Architettura

I dati acquisiti da Firehose vengono trasferiti ad Amazon S3, Amazon SNS, Snowflake Snowpipe e Snowflake DB.

Stack tecnologico

  • Amazon Data Firehose

  • Amazon SNS

  • Amazon S3

  • Snowflake Snowpipe

  • Banca dati Snowflake

Strumenti

Epiche

AttivitàDescrizioneCompetenze richieste

Crea un file CSV in Snowflake.

Accedi a Snowflake ed esegui il CREATE FILE FORMAT comando per creare un file CSV con un delimitatore di campo specificato. Per ulteriori informazioni su questo e altri comandi Snowflake, consulta la sezione Informazioni aggiuntive.

Developer

Crea uno stage Snowflake esterno.

Eseguite il CREATE STAGE comando per creare uno stage Snowflake esterno che faccia riferimento al file CSV creato in precedenza. Importante: avrai bisogno dell'URL del bucket S3, della tua chiave di accesso e della tua chiave di AWS accesso segreta. AWS Esegui il SHOW STAGES comando per verificare che lo stage Snowflake sia stato creato.

Developer

Create la tabella di destinazione Snowflake.

Esegui il CREATE TABLE comando per creare la tabella Snowflake.

Developer

Crea una pipa.

Esegui il CREATE PIPE comando; assicurati che auto_ingest=true sia nel comando. Eseguite il SHOW PIPES comando per verificare che la pipe sia stata creata. Copia e salva il valore notification_channel della colonna. Questo valore verrà utilizzato per configurare le notifiche degli eventi di Amazon S3.

Developer

Configura uno Snowflake Snowpipe

AttivitàDescrizioneCompetenze richieste

Crea un file CSV in Snowflake.

Accedi a Snowflake ed esegui il CREATE FILE FORMAT comando per creare un file CSV con un delimitatore di campo specificato. Per ulteriori informazioni su questo e altri comandi Snowflake, consulta la sezione Informazioni aggiuntive.

Developer

Crea uno stage Snowflake esterno.

Eseguite il CREATE STAGE comando per creare uno stage Snowflake esterno che faccia riferimento al file CSV creato in precedenza. Importante: avrai bisogno dell'URL del bucket S3, della tua chiave di accesso e della tua chiave di AWS accesso segreta. AWS Esegui il SHOW STAGES comando per verificare che lo stage Snowflake sia stato creato.

Developer

Create la tabella di destinazione Snowflake.

Esegui il CREATE TABLE comando per creare la tabella Snowflake.

Developer

Crea una pipa.

Esegui il CREATE PIPE comando; assicurati che auto_ingest=true sia nel comando. Eseguite il SHOW PIPES comando per verificare che la pipe sia stata creata. Copia e salva il valore notification_channel della colonna. Questo valore verrà utilizzato per configurare le notifiche degli eventi di Amazon S3.

Developer
AttivitàDescrizioneCompetenze richieste

Crea una politica del ciclo di vita di 30 giorni per il bucket S3.

Accedi AWS Management Console e apri la console Amazon S3. Scegliete il bucket S3 che contiene i dati di Firehose. Quindi scegli la scheda Gestione nel bucket S3 e scegli Aggiungi regola del ciclo di vita. Inserisci un nome per la regola nella finestra di dialogo delle regole del ciclo di vita e configura una regola del ciclo di vita di 30 giorni per il tuo bucket. Per informazioni su questa e altre storie, consulta la sezione Risorse correlate.

Amministratore di sistema, sviluppatore

Crea una policy IAM per il bucket S3.

Apri la console AWS Identity and Access Management (IAM) e scegli Policies. Scegli Create policy (Crea policy), quindi scegli la scheda JSON. Copia e incolla la policy dalla sezione Informazioni aggiuntive nel campo JSON. Questa politica concederà PutObject e DeleteObject autorizzazioni, nonché GetObjectGetObjectVersion, e ListBucket autorizzazioni. Scegli Rivedi politica, inserisci un nome di politica, quindi scegli Crea politica.

Amministratore di sistema, sviluppatore

Assegna la policy a un ruolo IAM.

Apri la console IAM, scegli Ruoli, quindi scegli Crea ruolo. Scegli un altro account AWS come entità affidabile. Inserisci il tuo Account AWS ID e scegli Richiedi un ID esterno. Inserisci un ID segnaposto che potrai modificare in seguito. Scegli Avanti e assegna la policy IAM che hai creato in precedenza. Quindi crea il ruolo IAM.

Amministratore di sistema, sviluppatore

Copia l'Amazon Resource Name (ARN) per il ruolo IAM.

Apri la console IAM e scegli Ruoli. Scegli il ruolo IAM che hai creato in precedenza, quindi copia e archivia l'ARN del ruolo.

Amministratore di sistema, sviluppatore

Configura il bucket S3

AttivitàDescrizioneCompetenze richieste

Crea una politica del ciclo di vita di 30 giorni per il bucket S3.

Accedi AWS Management Console e apri la console Amazon S3. Scegliete il bucket S3 che contiene i dati di Firehose. Quindi scegli la scheda Gestione nel bucket S3 e scegli Aggiungi regola del ciclo di vita. Inserisci un nome per la regola nella finestra di dialogo delle regole del ciclo di vita e configura una regola del ciclo di vita di 30 giorni per il tuo bucket. Per informazioni su questa e altre storie, consulta la sezione Risorse correlate.

Amministratore di sistema, sviluppatore

Crea una policy IAM per il bucket S3.

Apri la console AWS Identity and Access Management (IAM) e scegli Policies. Scegli Create policy (Crea policy), quindi scegli la scheda JSON. Copia e incolla la policy dalla sezione Informazioni aggiuntive nel campo JSON. Questa politica concederà PutObject e DeleteObject autorizzazioni, nonché GetObjectGetObjectVersion, e ListBucket autorizzazioni. Scegli Rivedi politica, inserisci un nome di politica, quindi scegli Crea politica.

Amministratore di sistema, sviluppatore

Assegna la policy a un ruolo IAM.

Apri la console IAM, scegli Ruoli, quindi scegli Crea ruolo. Scegli un altro account AWS come entità affidabile. Inserisci il tuo Account AWS ID e scegli Richiedi un ID esterno. Inserisci un ID segnaposto che potrai modificare in seguito. Scegli Avanti e assegna la policy IAM che hai creato in precedenza. Quindi crea il ruolo IAM.

Amministratore di sistema, sviluppatore

Copia l'Amazon Resource Name (ARN) per il ruolo IAM.

Apri la console IAM e scegli Ruoli. Scegli il ruolo IAM che hai creato in precedenza, quindi copia e archivia l'ARN del ruolo.

Amministratore di sistema, sviluppatore
AttivitàDescrizioneCompetenze richieste

Crea un'integrazione di archiviazione in Snowflake.

Accedi a Snowflake ed esegui il comando. CREATE STORAGE INTEGRATION Ciò modificherà la relazione di fiducia, concederà l'accesso a Snowflake e fornirà l'ID esterno per il tuo stage Snowflake.

Amministratore di sistema, sviluppatore

Recupera il ruolo IAM per il tuo account Snowflake.

Esegui il DESC INTEGRATION comando per recuperare l'ARN per il ruolo IAM.

Importante

<integration_ name>è il nome dell'integrazione di storage Snowflake creata in precedenza.

Amministratore di sistema, sviluppatore

Registra due valori di colonna.

Copia e salva i valori per le storage_aws_external_id colonne storage_aws_iam_user_arn and.

Amministratore di sistema, sviluppatore

Configura un'integrazione dello storage in Snowflake

AttivitàDescrizioneCompetenze richieste

Crea un'integrazione di archiviazione in Snowflake.

Accedi a Snowflake ed esegui il comando. CREATE STORAGE INTEGRATION Ciò modificherà la relazione di fiducia, concederà l'accesso a Snowflake e fornirà l'ID esterno per il tuo stage Snowflake.

Amministratore di sistema, sviluppatore

Recupera il ruolo IAM per il tuo account Snowflake.

Esegui il DESC INTEGRATION comando per recuperare l'ARN per il ruolo IAM.

Importante

<integration_ name>è il nome dell'integrazione di storage Snowflake creata in precedenza.

Amministratore di sistema, sviluppatore

Registra due valori di colonna.

Copia e salva i valori per le storage_aws_external_id colonne storage_aws_iam_user_arn and.

Amministratore di sistema, sviluppatore
AttivitàDescrizioneCompetenze richieste

Modifica la politica dei ruoli IAM.

Apri la console IAM e scegli Ruoli. Scegli il ruolo IAM che hai creato in precedenza e scegli la scheda Relazioni di fiducia. Seleziona Modifica relazione di attendibilità. snowflake_external_idSostituiscilo con il storage_aws_external_id valore che hai copiato in precedenza. Sostituisci snowflake_user_arn con il storage_aws_iam_user_arn valore che hai copiato in precedenza. Quindi scegli Aggiorna politica di fiducia.

Amministratore di sistema, sviluppatore

Consenti a Snowflake Snowpipe di accedere al bucket S3

AttivitàDescrizioneCompetenze richieste

Modifica la politica dei ruoli IAM.

Apri la console IAM e scegli Ruoli. Scegli il ruolo IAM che hai creato in precedenza e scegli la scheda Relazioni di fiducia. Seleziona Modifica relazione di attendibilità. snowflake_external_idSostituiscilo con il storage_aws_external_id valore che hai copiato in precedenza. Sostituisci snowflake_user_arn con il storage_aws_iam_user_arn valore che hai copiato in precedenza. Quindi scegli Aggiorna politica di fiducia.

Amministratore di sistema, sviluppatore
AttivitàDescrizioneCompetenze richieste

Attiva le notifiche degli eventi per il bucket S3.

Apri la console Amazon S3 e scegli il tuo bucket. Scegli Proprietà e, in Impostazioni avanzate, scegli Eventi. Scegli Aggiungi notifica e inserisci un nome per questo evento. Se non inserisci un nome, verrà utilizzato un identificatore univoco globale (GUID).

Amministratore di sistema, sviluppatore

Configura le notifiche Amazon SNS per il bucket S3.

In Eventi, scegli ObjectCreate (Tutti), quindi scegli SQS Queue nell'elenco a discesa Invia a. Nell'elenco SNS, scegli Aggiungi ARN della coda SQS e incolla notification_channel il valore che hai copiato in precedenza. Quindi scegli Save (Salva).

Amministratore di sistema, sviluppatore

Sottoscrivi la coda Snowflake SQS all'argomento SNS.

Sottoscrivi la coda Snowflake SQS all'argomento SNS che hai creato. Per informazioni su questo passaggio, consulta la sezione Risorse correlate.

Amministratore di sistema, sviluppatore

Attiva e configura le notifiche SNS per il bucket S3

AttivitàDescrizioneCompetenze richieste

Attiva le notifiche degli eventi per il bucket S3.

Apri la console Amazon S3 e scegli il tuo bucket. Scegli Proprietà e, in Impostazioni avanzate, scegli Eventi. Scegli Aggiungi notifica e inserisci un nome per questo evento. Se non inserisci un nome, verrà utilizzato un identificatore univoco globale (GUID).

Amministratore di sistema, sviluppatore

Configura le notifiche Amazon SNS per il bucket S3.

In Eventi, scegli ObjectCreate (Tutti), quindi scegli SQS Queue nell'elenco a discesa Invia a. Nell'elenco SNS, scegli Aggiungi ARN della coda SQS e incolla notification_channel il valore che hai copiato in precedenza. Quindi scegli Save (Salva).

Amministratore di sistema, sviluppatore

Sottoscrivi la coda Snowflake SQS all'argomento SNS.

Sottoscrivi la coda Snowflake SQS all'argomento SNS che hai creato. Per informazioni su questo passaggio, consulta la sezione Risorse correlate.

Amministratore di sistema, sviluppatore
AttivitàDescrizioneCompetenze richieste

Controlla e prova Snowpipe.

Accedi a Snowflake e apri il livello Snowflake. Trascina i file nel tuo bucket S3 e controlla se la tabella Snowflake li carica. Amazon S3 invierà notifiche SNS a Snowpipe quando vengono visualizzati nuovi oggetti nel bucket S3.

Amministratore di sistema, sviluppatore

Verifica l'integrazione con Snowflake Stage

AttivitàDescrizioneCompetenze richieste

Controlla e prova Snowpipe.

Accedi a Snowflake e apri il livello Snowflake. Trascina i file nel tuo bucket S3 e controlla se la tabella Snowflake li carica. Amazon S3 invierà notifiche SNS a Snowpipe quando vengono visualizzati nuovi oggetti nel bucket S3.

Amministratore di sistema, sviluppatore

Risorse correlate

Informazioni aggiuntive

Crea un formato di file:

CREATE FILE FORMAT <name> TYPE = 'CSV' FIELD_DELIMITER = '|' SKIP_HEADER = 1;

Crea una fase esterna:

externalStageParams (for Amazon S3) ::= URL = 's3://[//]' [ { STORAGE_INTEGRATION = } | { CREDENTIALS = ( { { AWS_KEY_ID = `` AWS_SECRET_KEY = `` [ AWS_TOKEN = `` ] } | AWS_ROLE = `` } ) ) }` ] [ ENCRYPTION = ( [ TYPE = 'AWS_CSE' ] [ MASTER_KEY = '' ] | [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '' ] | [ TYPE = NONE ] )

Crea una tabella:

CREATE [ OR REPLACE ] [ { [ LOCAL | GLOBAL ] TEMP[ORARY] | VOLATILE } | TRANSIENT ] TABLE [ IF NOT EXISTS ] <table_name> ( <col_name> <col_type> [ { DEFAULT <expr> | { AUTOINCREMENT | IDENTITY } [ ( <start_num> , <step_num> ) | START <num> INCREMENT <num> ] } ] /* AUTOINCREMENT / IDENTITY supported only for numeric data types (NUMBER, INT, etc.) */ [ inlineConstraint ] [ , <col_name> <col_type> ... ] [ , outoflineConstraint ] [ , ... ] ) [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ] [ STAGE_FILE_FORMAT = ( { FORMAT_NAME = '<file_format_name>' | TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ] } ) ] [ STAGE_COPY_OPTIONS = ( copyOptions ) ] [ DATA_RETENTION_TIME_IN_DAYS = <num> ] [ COPY GRANTS ] [ COMMENT = '<string_literal>' ]

Mostra fasi:

SHOW STAGES;

Crea una pipa:

CREATE [ OR REPLACE ] PIPE [ IF NOT EXISTS ] [ AUTO_INGEST = [ TRUE | FALSE ] ] [ AWS_SNS_TOPIC = ] [ INTEGRATION = '' ] [ COMMENT = '' ] AS

Mostra tubi:

SHOW PIPES [ LIKE '<pattern>' ] [ IN { ACCOUNT | [ DATABASE ] <db_name> | [ SCHEMA ] <schema_name> } ]

Crea un'integrazione di archiviazione:

CREATE STORAGE INTEGRATION <integration_name> TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = S3 ENABLED = TRUE STORAGE_AWS_ROLE_ARN = '<iam_role>' STORAGE_ALLOWED_LOCATIONS = ('s3://<bucket>/<path>/', 's3://<bucket>/<path>/') [ STORAGE_BLOCKED_LOCATIONS = ('s3://<bucket>/<path>/', 's3://<bucket>/<path>/') ]

Esempio:

create storage integration s3_int type = external_stage storage_provider = s3 enabled = true storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole' storage_allowed_locations = ('s3://amzn-s3-demo-bucket1/mypath1/', 's3://amzn-s3-demo-bucket2/mypath2/') storage_blocked_locations = ('s3://amzn-s3-demo-bucket1/mypath1/sensitivedata/', 's3://amzn-s3-demo-bucket2/mypath2/sensitivedata/');

Per ulteriori informazioni su questo passaggio, consulta Configurazione di un'integrazione di storage Snowflake per accedere ad Amazon S3 dalla documentazione di Snowflake.

Descrivi un'integrazione:

DESC INTEGRATION <integration_name>;

Politica sui bucket S3:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3::://*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition": { "StringLike": { "s3:prefix": [ "/*" ] } } } ] }
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.