Informazioni sulla versione precedente di Managed Service for Apache Flink - Servizio gestito per Apache Flink

Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis per Apache Flink.

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

Informazioni sulla versione precedente di Managed Service for Apache Flink

Nota

Le versioni 1.6, 1.8 e 1.11 di Apache Flink non sono supportate dalla community di Apache Flink da oltre tre anni. Ora prevediamo di terminare il supporto per queste versioni in Amazon Managed Service for Apache Flink. A partire dal 5 novembre 2024, non potrai creare nuove applicazioni per queste versioni di Flink. Puoi continuare a eseguire le applicazioni esistenti in questo momento.

Per tutte le regioni ad eccezione delle regioni della Cina e AWS GovCloud (US) Regions, dal 5 febbraio 2025, non sarà più possibile creare, avviare o eseguire applicazioni utilizzando queste versioni di Apache Flink in Amazon Managed Service for Apache Flink.

Per le regioni cinesi e il AWS GovCloud (US) Regions19 marzo 2025, non sarà più possibile creare, avviare o eseguire applicazioni utilizzando queste versioni di Apache Flink in Amazon Managed Service for Apache Flink.

Puoi aggiornare le tue applicazioni in modo statico utilizzando la funzionalità di aggiornamento immediato delle versioni di Managed Service for Apache Flink. Per ulteriori informazioni, consulta Usa gli aggiornamenti di versione sul posto per Apache Flink.

Le versioni 1.15.2 e 1.13.2 di Apache Flink sono supportate da Managed Service for Apache Flink, ma non sono più supportate dalla community di Apache Flink.

Utilizzo del connettore Apache Flink Kinesis Streams con versioni precedenti di Apache Flink

Il connettore di flussi Apache Flink Kinesis non era incluso in Apache Flink prima della versione 1.11. Affinché l'applicazione possa utilizzare il connettore Apache Flink Kinesis con le versioni precedenti di Apache Flink, è necessario scaricare, compilare e installare la versione di Apache Flink utilizzata dall'applicazione. Questo connettore serve per utilizzare i dati di un flusso Kinesis utilizzato come origine dell'applicazione o per scrivere dati su un flusso Kinesis utilizzato per l'output dell'applicazione.

Per scaricare e installare il codice di origine di Apache Flink 1.8.2, procedi come segue:

  1. Assicurati di avere installato Apache Maven e che la variabile di JAVA_HOME ambiente punti a anziché a. JDK JRE Puoi testare la tua installazione di Apache Maven con il comando seguente:

    mvn -version
  2. Scarica il codice di origine di Apache Flink 1.8.2:

    wget https://archive.apache.org/dist/flink/flink-1.8.2/flink-1.8.2-src.tgz
  3. Decomprimi il codice di origine di Apache Flink:

    tar -xvf flink-1.8.2-src.tgz
  4. Passa alla directory del codice di origine di Apache Flink:

    cd flink-1.8.2
  5. Compila e installa Apache Flink:

    mvn clean install -Pinclude-kinesis -DskipTests
    Nota

    Se stai compilando Flink su Microsoft Windows, devi aggiungere il parametro -Drat.skip=true.

Creazione di applicazioni con Apache Flink 1.8.2

Questa sezione contiene informazioni sui componenti utilizzati per creare applicazioni del servizio gestito per Apache Flink compatibili con Apache Flink 1.8.2.

Utilizza le seguenti versioni dei componenti per il servizio gestito per Apache Flink:

Componente Versione
Java 1.8 (consigliata)
Apache Flink 1.8.2
Servizio gestito per Apache Flink for Flink Runtime () aws-kinesisanalytics-runtime 1.0.1
Servizio gestito per connettori Apache Flink Flink () aws-kinesisanalytics-flink 1.0.1
Apache Maven 3.1

Per compilare un'applicazione utilizzando Apache Flink 1.8.2, esegui Maven con il seguente parametro:

mvn package -Dflink.version=1.8.2

Per un esempio di file pom.xml per un'applicazione del servizio gestito per Apache Flink che utilizza Apache Flink 1.8.2, consulta l'applicazione introduttiva del servizio gestito per Apache Flink 1.8.2.

Per informazioni su come creare e utilizzare il codice applicativo per un'applicazione del servizio gestito per Apache Flink, consulta Creazione di un'applicazione.

Creazione di applicazioni con Apache Flink 1.6.2

Questa sezione contiene informazioni sui componenti utilizzati per creare applicazioni del servizio gestito per Apache Flink compatibili con Apache Flink 1.6.2.

Utilizza le seguenti versioni dei componenti per il servizio gestito per Apache Flink:

Componente Versione
Java 1.8 (consigliata)
AWS Java SDK 1.11.379
Apache Flink 1.6.2
Servizio gestito per Apache Flink for Flink Runtime () aws-kinesisanalytics-runtime 1.0.1
Servizio gestito per connettori Apache Flink Flink () aws-kinesisanalytics-flink 1.0.1
Apache Maven 3.1
Apache Beam Non supportato con Apache Flink 1.6.2.
Nota

Quando utilizzi il servizio gestito per il runtime di Apache Flink versione 1.0.1, devi specificare la versione di Apache Flink nel file pom.xml anziché utilizzare il parametro -Dflink.version durante la compilazione del codice dell'applicazione.

Per un esempio di file pom.xml per un'applicazione del servizio gestito per Apache Flink che utilizza Apache Flink 1.6.2, consulta l'applicazione introduttiva del servizio gestito per Apache Flink 1.6.2.

Per informazioni su come creare e utilizzare il codice applicativo per un'applicazione del servizio gestito per Apache Flink, consulta Creazione di un'applicazione.

Aggiornamento delle applicazioni

Per aggiornare la versione Apache Flink di un'applicazione Amazon Managed Service for Apache Flink, utilizza la funzionalità di aggiornamento della versione Apache Flink sul posto utilizzando,, o. AWS CLI AWS SDK AWS CloudFormation AWS Management Console Per ulteriori informazioni, consulta Usa gli aggiornamenti di versione sul posto per Apache Flink.

Puoi utilizzare questa funzionalità con qualsiasi applicazione esistente che utilizzi con Amazon Managed Service for Apache Flink nel READY nostro stato. RUNNING

Connettori disponibili in Apache Flink 1.6.2 e 1.8.2

Il framework Apache Flink contiene connettori per l'accesso ai dati da una varietà di origini.

Guida introduttiva: Flink 1.13.2

Questa sezione presenta i concetti fondamentali di Managed Service for Apache Flink e. DataStream API Descrive le opzioni disponibili per la creazione e il test delle applicazioni. Fornisce inoltre istruzioni per l'installazione degli strumenti necessari per completare i tutorial di questa guida e creare la tua prima applicazione.

Componenti di un'applicazione Managed Service per Apache Flink

Per elaborare i dati, l'applicazione del servizio gestito per Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime di Apache Flink.

L'applicazione del servizio gestito per Apache Flink include i seguenti componenti:

  • Proprietà di runtime: è possibile utilizzare le proprietà di runtime per configurare l'applicazione senza ricompilare il codice dell'applicazione.

  • Origine: l'applicazione consuma i dati utilizzando un'origine. Un connettore di origine legge i dati da un flusso di dati Kinesis, da un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Aggiungi sorgenti di dati in streaming.

  • Operatori: l'applicazione elabora i dati utilizzando uno o più operatori. Un operatore può trasformare, arricchire o aggregare i dati. Per ulteriori informazioni, consulta Operatori.

  • Sink: l'applicazione produce dati verso origini esterne utilizzando i sink. Un connettore sink scrive i dati su un flusso di dati Kinesis, un flusso Firehose, un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Scrivi dati utilizzando i lavandini.

Dopo aver creato, compilato e compresso il codice dell'applicazione, caricherai il pacchetto di codice in un bucket Amazon Simple Storage Service (Amazon S3). Potrai quindi creare un'applicazione del servizio gestito per Apache Flink. Dovrai inserire la posizione del pacchetto di codice, un flusso di dati Kinesis come origine dati di streaming e in genere una posizione di streaming o di file che riceva i dati elaborati dall'applicazione.

Prerequisiti per il completamento degli esercizi

Per completare le fasi in questa guida, è richiesto quanto segue:

Per iniziare, vai alla pagina Configura un AWS account e crea un utente amministratore.

Passaggio 1: configura un AWS account e crea un utente amministratore

Registrati per un Account AWS

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

Per iscriverti a un Account AWS
  1. Apri la https://portal.aws.amazon.com/billing/registrazione.

  2. Segui le istruzioni online.

    Nel corso della procedura di registrazione riceverai una telefonata, durante la quale sarà necessario inserire un codice di verifica attraverso la tastiera del telefono.

    Quando ti iscrivi a un Account AWS, Utente root dell'account AWSviene creato un. L'utente root dispone dell'accesso a tutte le risorse e tutti i Servizi AWS nell'account. Come best practice di sicurezza, assegna l'accesso amministrativo a un utente e utilizza solo l'utente root per eseguire attività che richiedono l'accesso di un utente root.

AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a https://aws.amazon.com/e scegliendo Il mio account.

Crea un utente con accesso amministrativo

Dopo esserti registrato Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.

Proteggi i tuoi Utente root dell'account AWS
  1. Accedi AWS Management Consolecome proprietario dell'account scegliendo Utente root e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

    Per informazioni sull'accesso utilizzando un utente root, consulta la pagina Signing in as the root user della Guida per l'utente di Accedi ad AWS .

  2. Attiva l'autenticazione a più fattori (MFA) per il tuo utente root.

    Per istruzioni, consulta Abilitare un MFA dispositivo virtuale per l'utente Account AWS root (console) nella Guida per l'IAMutente.

Crea un utente con accesso amministrativo
  1. Abilita IAM Identity Center.

    Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .

  2. In IAM Identity Center, concedi l'accesso amministrativo a un utente.

    Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta Configurare l'accesso utente con i valori predefiniti IAM Identity Center directory nella Guida per l'AWS IAM Identity Center utente.

Accesso come utente amministratore
  • Per accedere con l'utente dell'IAMIdentity Center, utilizza l'accesso URL che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.

    Per informazioni sull'accesso tramite un utente di IAM Identity Center, consulta Accesso al portale di AWS accesso nella Guida per l'Accedi ad AWS utente.

Assegna l'accesso a ulteriori utenti
  1. In IAM Identity Center, crea un set di autorizzazioni che segua la migliore pratica di applicazione delle autorizzazioni con privilegi minimi.

    Segui le istruzioni riportate nella pagina Creazione di un set di autorizzazioni nella Guida per l'utente di AWS IAM Identity Center .

  2. Assegna al gruppo prima gli utenti e poi l'accesso con autenticazione unica (Single Sign-On).

    Per istruzioni, consulta Aggiungere gruppi nella Guida per l'utente di AWS IAM Identity Center .

Concessione dell'accesso programmatico

Gli utenti necessitano di un accesso programmatico se desiderano interagire con AWS l'esterno di. AWS Management Console Il modo per concedere l'accesso programmatico dipende dal tipo di utente che accede. AWS

Per fornire agli utenti l'accesso programmatico, scegli una delle seguenti opzioni.

Quale utente necessita dell'accesso programmatico? Per Come

Identità della forza lavoro

(Utenti gestiti in IAM Identity Center)

Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

IAM Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs Seguendo le istruzioni riportate in Utilizzo delle credenziali temporanee con le AWS risorse nella Guida per l'IAMutente.
IAM

(Non consigliato)

Utilizza credenziali a lungo termine per firmare richieste programmatiche a AWS CLI,, AWS SDKs o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

Approfondimenti

Configura il AWS Command Line Interface (AWS CLI)

Approfondimenti

Fase 2: Configurare AWS Command Line Interface (AWS CLI)

Fase 2: Configurare AWS Command Line Interface (AWS CLI)

In questo passaggio, si scarica e si configura AWS CLI per l'utilizzo con Managed Service for Apache Flink.

Nota

Gli esercizi sulle Nozioni di base di questa guida presuppongono che tu disponga di credenziali di amministratore (adminuser) nell'account per eseguire le operazioni.

Nota

Se è già AWS CLI installato, potrebbe essere necessario eseguire l'aggiornamento per ottenere le funzionalità più recenti. Per ulteriori informazioni, consulta Installazione dell' AWS Command Line Interface nella Guida per l'utente dell'AWS Command Line Interface . Per verificare la versione di AWS CLI, esegui il seguente comando:

aws --version

Gli esercizi di questo tutorial richiedono la seguente AWS CLI versione o successiva:

aws-cli/1.16.63
Per configurare il AWS CLI
  1. Scarica e configura la AWS CLI. Per le istruzioni, consulta i seguenti argomenti nella Guida per l'utente dell'AWS Command Line Interface :

  2. Aggiungere un profilo denominato per l'utente amministratore nel AWS CLI config file. Puoi usare questo profilo quando esegui i comandi della AWS CLI . Per ulteriori informazioni sui profili denominati, consulta Profili denominati in Guida per l'utente dell'AWS Command Line Interface .

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Per un elenco delle AWS regioni disponibili, consulta Regioni ed endpoint in. Riferimenti generali di Amazon Web Services

    Nota

    Il codice e i comandi di esempio in questo tutorial utilizzano la regione Stati Uniti occidentali (Oregon). Per utilizzare una regione diversa, sostituisci la regione nel codice e nei comandi di questo tutorial con quella che desideri utilizzare.

  3. Verifica la configurazione digitando il comando help riportato di seguito al prompt dei comandi:

    aws help

Dopo aver configurato un AWS account AWS CLI, puoi provare l'esercizio successivo, in cui configurerai un'applicazione di esempio e verificherai la end-to-end configurazione.

Approfondimenti

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

In questo esercizio, viene creata un'applicazione del servizio gestito per Apache Flink con flussi di dati come origine e come sink.

Crea due flussi di dati Amazon Kinesis

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, crea due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream). L'applicazione utilizza questi flussi per i flussi di origine e di destinazione dell'applicazione.

Puoi creare questi flussi utilizzando la console Amazon Kinesis o il comando AWS CLI seguente. Per istruzioni sulla console, consulta Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis.

Per creare i flussi di dati (AWS CLI)
  1. Per creare il primo stream (ExampleInputStream), usa il seguente comando Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Per creare il secondo flusso utilizzato dall'applicazione per scrivere l'output, esegui lo stesso comando, modificando il nome del flusso in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Successivamente nel tutorial, esegui lo script stock.py per inviare dati all'applicazione.

    $ python stock.py

Scarica ed esamina il codice Java per lo streaming di Apache Flink

Il codice dell'applicazione Java per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Passa alla directory amazon-kinesis-data-analytics-java-examples/GettingStarted.

Tieni presente quanto segue riguardo al codice dell'applicazione:

  • Un file del modello di oggetti del progetto (pom.xml) contiene le informazioni sulla configurazione e le dipendenze dell'applicazione, incluse le librerie del servizio gestito per Apache Flink.

  • Il file BasicStreamingJob.java contiene il metodo main che definisce la funzionalità dell'applicazione.

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • L'applicazione crea connettori di origine e sink per accedere alle risorse esterne utilizzando un oggetto StreamExecutionEnvironment.

  • L'applicazione crea connettori di origine e sink utilizzando proprietà statiche. Per usare proprietà dell'applicazione dinamiche, utilizza i metodi createSourceFromApplicationProperties e createSinkFromApplicationProperties per creare i connettori. Questi metodi leggono le proprietà dell'applicazione per configurare il connettori.

    Per ulteriori informazioni sulle proprietà di runtime, consulta Usa le proprietà di runtime.

Compilate il codice dell'applicazione

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per informazioni sull'installazione di Apache Maven e del Java Development Kit ()JDK, vedere. Soddisfa i prerequisiti per completare gli esercizi

Per compilare il codice dell'applicazione
  1. Per utilizzare il codice dell'applicazione, lo si compila e lo si impacchetta in un file. JAR È possibile compilare e creare un pacchetto del codice in uno di due modi:

    • Utilizzare lo strumento Maven a riga di comando. Create il JAR file eseguendo il comando seguente nella directory che contiene il pom.xml file:

      mvn package -Dflink.version=1.13.2
    • Utilizza il tuo ambiente di sviluppo. Per informazioni dettagliate, consulta la documentazione relativa all'ambiente di sviluppo.

      Nota

      Il codice di origine fornito si basa sulle librerie di Java 11.

    È possibile caricare il pacchetto come JAR file oppure comprimerlo e caricarlo come ZIP file. Se create l'applicazione utilizzando AWS CLI, specificate il tipo di contenuto del codice (JARoZIP).

  2. Se si verificano errori durante la compilazione, verifica che la variabile di ambiente JAVA_HOME sia impostata correttamente.

Se l'applicazione viene compilata correttamente, viene creato il seguente file:

target/aws-kinesis-analytics-java-apps-1.0.jar

Caricate il codice Java di streaming Apache Flink

In questa sezione, viene creato un bucket Amazon Simple Storage Service (Amazon S3) e caricato il codice dell'applicazione.

Per caricare il codice dell'applicazione
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona Crea bucket.

  3. Inserisci ka-app-code-<username> nel campo Nome bucket. Aggiungi un suffisso al nome del bucket, ad esempio il nome utente, per renderlo globalmente univoco. Scegli Next (Successivo).

  4. Nella fase Configura opzioni, non modificare le impostazioni e scegli Successivo.

  5. Nella fase Imposta autorizzazioni, non modificare le impostazioni e scegli Successivo.

  6. Seleziona Crea bucket.

  7. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  8. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente. Scegli Next (Successivo).

  9. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

È possibile creare ed eseguire un'applicazione del servizio gestito per Apache Flink utilizzando la console o la AWS CLI.

Nota

Quando crei l'applicazione utilizzando la console, le tue risorse AWS Identity and Access Management (IAM) e Amazon CloudWatch Logs vengono create automaticamente. Quando crei l'applicazione utilizzando AWS CLI, crei queste risorse separatamente.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My java test app.

    • Per Runtime, scegli Apache Flink.

    • Lascia il menu a discesa di Apache Flink versione 1.13.

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci aws-kinesis-analytics-java-apps-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  6. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  7. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Arresta l'applicazione

Nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Aggiornamento dell'applicazione

Utilizzando la console, è possibile aggiornare le impostazioni dell'applicazione, come le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome del file dell'applicazioneJAR. Puoi anche ricaricare l'applicazione JAR dal bucket Amazon S3 se devi aggiornare il codice dell'applicazione.

Nella MyApplicationpagina, scegli Configura. Aggiorna le impostazioni dell'applicazione e scegli Aggiorna.

Crea ed esegui l'applicazione (AWS CLI)

In questa sezione, si utilizza AWS CLI per creare ed eseguire l'applicazione Managed Service for Apache Flink. Managed Service for Apache Flink utilizza il kinesisanalyticsv2 AWS CLI comando per creare e interagire con le applicazioni Managed Service for Apache Flink.

Creazione di una policy di autorizzazione
Nota

È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non crei queste IAM risorse, l'applicazione non può accedere ai suoi dati e ai flussi di log.

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione read sul flusso di origine e un'altra che concede le autorizzazioni per operazioni write sul flusso di sink. Quindi allegate la politica a un IAM ruolo (che creerete nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Sostituisci username con il nome utente utilizzato per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-username", "arn:aws:s3:::ka-app-code-username/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Nota

Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK for Java. Managed Service for Apache Flink imposta automaticamente le credenziali richieste da SDK a quelle del IAM ruolo di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione per assumere il ruolo e la policy di autorizzazione determina cosa può fare il servizio assumendo questo ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Ruoli, quindi Crea nuovo ruolo.

  3. In Seleziona tipo di identità attendibile, scegli Servizio AWS . In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis. In Seleziona il tuo caso d'uso, scegli Analisi dei dati Kinesis.

    Scegli Successivo: Autorizzazioni.

  4. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  5. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

  6. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la AKReadSourceStreamWriteSinkStreampolitica e scegli Allega politica.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Crea l'applicazione Managed Service for Apache Flink
  1. Salva il JSON codice seguente in un file denominato. create_request.json Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo che hai creato in precedenza. Sostituite il ARN suffisso del bucket (username) con il suffisso che avete scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con il tuo ID account.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione CreateApplication con la richiesta precedente per creare l'applicazione:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avvio dell'applicazione

In questa sezione, viene utilizzata l'operazione StartApplication per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominato. start_request.json

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Interruzione dell'applicazione

In questa sezione, viene utilizzata l'operazione StopApplication per interrompere l'applicazione.

Per interrompere l'applicazione
  1. Salva il JSON codice seguente in un file denominato. stop_request.json

    { "ApplicationName": "test" }
  2. Esegui l'operazione StopApplication con la seguente richiesta di interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungi un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consultaConfigurare la registrazione delle applicazioni in Managed Service per Apache Flink.

Aggiornamento delle proprietà di ambiente

In questa sezione, viene utilizzata l'operazione UpdateApplication per modificare le proprietà di ambiente per l'applicazione senza ricompilare il codice dell'applicazione. In questo esempio, viene modificata la regione dei flussi di origine e destinazione.

Per aggiornare le proprietà di ambiente per l'applicazione
  1. Salvate il JSON codice seguente in un file denominatoupdate_properties_request.json.

    {"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione UpdateApplication con la richiesta precedente per aggiornare le proprietà di ambiente:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplication AWS CLI azione.

Nota

Per caricare una nuova versione del codice dell'applicazione con lo stesso nome file, è necessario specificare la nuova versione dell'oggetto. Per ulteriori informazioni sull'uso delle versioni degli oggetti Amazon S3, consulta Abilitazione o disattivazione del controllo delle versioni.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto e la nuova versione dell'oggetto. L'applicazione verrà riavviata con il nuovo pacchetto di codice.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<username>) con il suffisso che hai scelto nella sezione. Crea due flussi di dati Amazon Kinesis

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }

Approfondimenti

Fase 4: Pulire le risorse AWS

Fase 4: Pulire le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Getting Started.

Eliminare l'applicazione Managed Service for Apache Flink

  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Managed Service for Apache Flink, scegli. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis

  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse

  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse

  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Approfondimenti

Fase 5: fasi successive

Fase 5: fasi successive

Ora che hai creato ed eseguito un'applicazione di base del servizio gestito per Apache Flink, consulta le seguenti risorse per esplorare soluzioni del servizio gestito per Apache Flink più avanzate.

  • La soluzione di AWS streaming dati per Amazon Kinesis: la soluzione di AWS streaming dati per Amazon Kinesis configura automaticamente AWS i servizi necessari per acquisire, archiviare, elaborare e distribuire dati in streaming con facilità. La soluzione offre diverse opzioni per risolvere i casi d'uso dei dati di streaming. L'opzione Managed Service for Apache Flink fornisce un ETL esempio di end-to-end streaming che dimostra un'applicazione reale che esegue operazioni analitiche su dati simulati dei taxi di New York. La soluzione configura tutte le AWS risorse necessarie come IAM ruoli e politiche, una dashboard e allarmi. CloudWatch CloudWatch

  • AWS Soluzione di streaming di dati per Amazon MSK: La soluzione di AWS streaming dati per Amazon MSK fornisce AWS CloudFormation modelli in cui i dati fluiscono attraverso produttori, storage in streaming, consumatori e destinazioni.

  • Clickstream Lab con Apache Flink e Apache Kafka: un laboratorio end-to-end per casi d'uso clickstream che utilizza lo streaming gestito da Amazon per Apache Kafka per lo storage in streaming e il servizio gestito per Apache Flink per le applicazioni Apache Flink per l'elaborazione di flussi.

  • Workshop Amazon Managed Service per Apache Flink: in questo workshop, crei un'architettura di end-to-end streaming per importare, analizzare e visualizzare i dati di streaming quasi in tempo reale. Hai deciso di migliorare le attività di una compagnia di taxi a New York City. Analizza i dati di telemetria di una flotta di taxi a New York City quasi in tempo reale per ottimizzare le operazioni della flotta.

  • Scopri Flink: Hands On Training: formazione introduttiva ufficiale su Apache Flink che ti consente di iniziare a scrivere applicazioni scalabili di streaming, analisi e basate sugli eventi. ETL

    Nota

    Tieni presente che il servizio gestito per Apache Flink non supporta la versione Apache Flink (1.12) utilizzata in questo corso di formazione. È possibile utilizzare Flink 1.15.2 in Flink Managed Service per Apache Flink.

Guida introduttiva: Flink 1.11.1 - obsoleto

Nota

Le versioni 1.6, 1.8 e 1.11 di Apache Flink non sono supportate dalla community di Apache Flink da oltre tre anni. Abbiamo intenzione di rendere obsolete queste versioni in Amazon Managed Service for Apache Flink il 5 novembre 2024. A partire da questa data, non potrai creare nuove applicazioni per queste versioni di Flink. È possibile continuare a eseguire le applicazioni esistenti in questo momento. Puoi aggiornare le tue applicazioni in modo statico utilizzando la funzionalità di aggiornamento delle versioni in loco in Amazon Managed Service for Apache Flink. Per ulteriori informazioni, consulta. Usa gli aggiornamenti di versione sul posto per Apache Flink

Questo argomento contiene una versione del Tutorial: inizia a usare Managed Service for Apache Flink DataStream API tutorial che utilizza Apache Flink 1.11.1.

Questa sezione presenta i concetti fondamentali di Managed Service for Apache Flink e. DataStream API Descrive le opzioni disponibili per la creazione e il test delle applicazioni. Fornisce inoltre istruzioni per l'installazione degli strumenti necessari per completare i tutorial di questa guida e creare la tua prima applicazione.

Componenti di un'applicazione Managed Service per Apache Flink

Per elaborare i dati, l'applicazione del servizio gestito per Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime di Apache Flink.

Un'applicazione del servizio gestito per Apache Flink include i componenti riportati di seguito:

  • Proprietà di runtime: è possibile utilizzare le proprietà di runtime per configurare l'applicazione senza ricompilare il codice dell'applicazione.

  • Origine: l'applicazione consuma i dati utilizzando un'origine. Un connettore di origine legge i dati da un flusso di dati Kinesis, da un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Aggiungi sorgenti di dati in streaming.

  • Operatori: l'applicazione elabora i dati utilizzando uno o più operatori. Un operatore può trasformare, arricchire o aggregare i dati. Per ulteriori informazioni, consulta Operatori.

  • Sink: l'applicazione produce dati verso origini esterne utilizzando i sink. Un connettore sink scrive i dati su un flusso di dati Kinesis, un flusso Firehose, un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Scrivi dati utilizzando i lavandini.

Dopo aver creato, compilato e compresso il codice dell'applicazione, caricherai il pacchetto di codice in un bucket Amazon Simple Storage Service (Amazon S3). Potrai quindi creare un'applicazione del servizio gestito per Apache Flink. Dovrai inserire la posizione del pacchetto di codice, un flusso di dati Kinesis come origine dati di streaming e in genere una posizione di streaming o di file che riceva i dati elaborati dall'applicazione.

Prerequisiti per il completamento degli esercizi

Per completare le fasi in questa guida, è richiesto quanto segue:

Per iniziare, vai alla pagina Configura un AWS account e crea un utente amministratore.

Passaggio 1: configura un AWS account e crea un utente amministratore

Registrati per un Account AWS

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

Per iscriverti a un Account AWS
  1. Apri la https://portal.aws.amazon.com/billing/registrazione.

  2. Segui le istruzioni online.

    Nel corso della procedura di registrazione riceverai una telefonata, durante la quale sarà necessario inserire un codice di verifica attraverso la tastiera del telefono.

    Quando ti iscrivi a un Account AWS, Utente root dell'account AWSviene creato un. L'utente root dispone dell'accesso a tutte le risorse e tutti i Servizi AWS nell'account. Come best practice di sicurezza, assegna l'accesso amministrativo a un utente e utilizza solo l'utente root per eseguire attività che richiedono l'accesso di un utente root.

AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a https://aws.amazon.com/e scegliendo Il mio account.

Crea un utente con accesso amministrativo

Dopo esserti registrato Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.

Proteggi i tuoi Utente root dell'account AWS
  1. Accedi AWS Management Consolecome proprietario dell'account scegliendo Utente root e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

    Per informazioni sull'accesso utilizzando un utente root, consulta la pagina Signing in as the root user della Guida per l'utente di Accedi ad AWS .

  2. Attiva l'autenticazione a più fattori (MFA) per il tuo utente root.

    Per istruzioni, consulta Abilitare un MFA dispositivo virtuale per l'utente Account AWS root (console) nella Guida per l'IAMutente.

Crea un utente con accesso amministrativo
  1. Abilita IAM Identity Center.

    Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .

  2. In IAM Identity Center, concedi l'accesso amministrativo a un utente.

    Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta Configurare l'accesso utente con i valori predefiniti IAM Identity Center directory nella Guida per l'AWS IAM Identity Center utente.

Accesso come utente amministratore
  • Per accedere con l'utente dell'IAMIdentity Center, utilizza l'accesso URL che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.

    Per informazioni sull'accesso tramite un utente di IAM Identity Center, consulta Accesso al portale di AWS accesso nella Guida per l'Accedi ad AWS utente.

Assegna l'accesso a ulteriori utenti
  1. In IAM Identity Center, crea un set di autorizzazioni che segua la migliore pratica di applicazione delle autorizzazioni con privilegi minimi.

    Segui le istruzioni riportate nella pagina Creazione di un set di autorizzazioni nella Guida per l'utente di AWS IAM Identity Center .

  2. Assegna al gruppo prima gli utenti e poi l'accesso con autenticazione unica (Single Sign-On).

    Per istruzioni, consulta Aggiungere gruppi nella Guida per l'utente di AWS IAM Identity Center .

Concessione dell'accesso programmatico

Gli utenti necessitano di un accesso programmatico se desiderano interagire con AWS l'esterno di. AWS Management Console Il modo per concedere l'accesso programmatico dipende dal tipo di utente che accede. AWS

Per fornire agli utenti l'accesso programmatico, scegli una delle seguenti opzioni.

Quale utente necessita dell'accesso programmatico? Per Come

Identità della forza lavoro

(Utenti gestiti in IAM Identity Center)

Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

IAM Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs Seguendo le istruzioni riportate in Utilizzo delle credenziali temporanee con le AWS risorse nella Guida per l'IAMutente.
IAM

(Non consigliato)

Utilizza credenziali a lungo termine per firmare richieste programmatiche a AWS CLI,, AWS SDKs o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

Approfondimenti

Configura il AWS Command Line Interface (AWS CLI)

Fase 2: configurazione di AWS Command Line Interface (AWS CLI)

In questo passaggio, si scarica e si configura AWS CLI per l'utilizzo con Managed Service for Apache Flink.

Nota

Gli esercizi sulle Nozioni di base di questa guida presuppongono che tu disponga di credenziali di amministratore (adminuser) nell'account per eseguire le operazioni.

Nota

Se è già AWS CLI installato, potrebbe essere necessario eseguire l'aggiornamento per ottenere le funzionalità più recenti. Per ulteriori informazioni, consulta Installazione dell' AWS Command Line Interface nella Guida per l'utente dell'AWS Command Line Interface . Per verificare la versione di AWS CLI, esegui il seguente comando:

aws --version

Gli esercizi di questo tutorial richiedono la seguente AWS CLI versione o successiva:

aws-cli/1.16.63
Per configurare il AWS CLI
  1. Scarica e configura la AWS CLI. Per le istruzioni, consulta i seguenti argomenti nella Guida per l'utente dell'AWS Command Line Interface :

  2. Aggiungere un profilo denominato per l'utente amministratore nel AWS CLI config file. Puoi usare questo profilo quando esegui i comandi della AWS CLI . Per ulteriori informazioni sui profili denominati, consulta Profili denominati in Guida per l'utente dell'AWS Command Line Interface .

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Per un elenco delle AWS regioni disponibili, consulta Regioni ed endpoint in. Riferimenti generali di Amazon Web Services

    Nota

    Il codice e i comandi di esempio in questo tutorial utilizzano la regione Stati Uniti occidentali (Oregon). Per utilizzare una regione diversa, sostituisci la regione nel codice e nei comandi di questo tutorial con quella che desideri utilizzare.

  3. Verifica la configurazione digitando il comando help riportato di seguito al prompt dei comandi:

    aws help

Dopo aver configurato un AWS account AWS CLI, puoi provare l'esercizio successivo, in cui configurerai un'applicazione di esempio e verificherai la end-to-end configurazione.

Approfondimenti

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

In questo esercizio, viene creata un'applicazione del servizio gestito per Apache Flink con flussi di dati come origine e come sink.

Crea due flussi di dati Amazon Kinesis

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, crea due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream). L'applicazione utilizza questi flussi per i flussi di origine e di destinazione dell'applicazione.

Puoi creare questi flussi utilizzando la console Amazon Kinesis o il comando AWS CLI seguente. Per istruzioni sulla console, consulta Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis.

Per creare i flussi di dati (AWS CLI)
  1. Per creare il primo stream (ExampleInputStream), usa il seguente comando Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Per creare il secondo flusso utilizzato dall'applicazione per scrivere l'output, esegui lo stesso comando, modificando il nome del flusso in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Successivamente nel tutorial, esegui lo script stock.py per inviare dati all'applicazione.

    $ python stock.py

Scarica ed esamina il codice Java per lo streaming di Apache Flink

Il codice dell'applicazione Java per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Passa alla directory amazon-kinesis-data-analytics-java-examples/GettingStarted.

Tieni presente quanto segue riguardo al codice dell'applicazione:

  • Un file del modello di oggetti del progetto (pom.xml) contiene le informazioni sulla configurazione e le dipendenze dell'applicazione, incluse le librerie del servizio gestito per Apache Flink.

  • Il file BasicStreamingJob.java contiene il metodo main che definisce la funzionalità dell'applicazione.

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • L'applicazione crea connettori di origine e sink per accedere alle risorse esterne utilizzando un oggetto StreamExecutionEnvironment.

  • L'applicazione crea connettori di origine e sink utilizzando proprietà statiche. Per usare proprietà dell'applicazione dinamiche, utilizza i metodi createSourceFromApplicationProperties e createSinkFromApplicationProperties per creare i connettori. Questi metodi leggono le proprietà dell'applicazione per configurare il connettori.

    Per ulteriori informazioni sulle proprietà di runtime, consulta Usa le proprietà di runtime.

Compilate il codice dell'applicazione

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per informazioni sull'installazione di Apache Maven e del Java Development Kit ()JDK, vedere. Soddisfa i prerequisiti per completare gli esercizi

Per compilare il codice dell'applicazione
  1. Per utilizzare il codice dell'applicazione, lo si compila e lo si impacchetta in un file. JAR È possibile compilare e creare un pacchetto del codice in uno di due modi:

    • Utilizzare lo strumento Maven a riga di comando. Create il JAR file eseguendo il comando seguente nella directory che contiene il pom.xml file:

      mvn package -Dflink.version=1.11.3
    • Utilizza il tuo ambiente di sviluppo. Per informazioni dettagliate, consulta la documentazione relativa all'ambiente di sviluppo.

      Nota

      Il codice di origine fornito si basa sulle librerie di Java 11. Assicurati che la versione Java del tuo progetto sia la 11.

    È possibile caricare il pacchetto come JAR file oppure comprimerlo e caricarlo come ZIP file. Se create l'applicazione utilizzando AWS CLI, specificate il tipo di contenuto del codice (JARoZIP).

  2. Se si verificano errori durante la compilazione, verifica che la variabile di ambiente JAVA_HOME sia impostata correttamente.

Se l'applicazione viene compilata correttamente, viene creato il seguente file:

target/aws-kinesis-analytics-java-apps-1.0.jar

Caricate il codice Java di streaming Apache Flink

In questa sezione, viene creato un bucket Amazon Simple Storage Service (Amazon S3) e caricato il codice dell'applicazione.

Per caricare il codice dell'applicazione
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona Crea bucket.

  3. Inserisci ka-app-code-<username> nel campo Nome bucket. Aggiungi un suffisso al nome del bucket, ad esempio il nome utente, per renderlo globalmente univoco. Scegli Next (Successivo).

  4. Nella fase Configura opzioni, non modificare le impostazioni e scegli Successivo.

  5. Nella fase Imposta autorizzazioni, non modificare le impostazioni e scegli Successivo.

  6. Seleziona Crea bucket.

  7. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  8. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente. Scegli Next (Successivo).

  9. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

È possibile creare ed eseguire un'applicazione del servizio gestito per Apache Flink utilizzando la console o la AWS CLI.

Nota

Quando crei l'applicazione utilizzando la console, le tue risorse AWS Identity and Access Management (IAM) e Amazon CloudWatch Logs vengono create automaticamente. Quando crei l'applicazione utilizzando AWS CLI, crei queste risorse separatamente.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My java test app.

    • Per Runtime, scegli Apache Flink.

    • Lascia il menu a discesa di Apache Flink 1.11 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci aws-kinesis-analytics-java-apps-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, per ID gruppo, inserisci ProducerConfigProperties.

  5. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  6. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  7. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  8. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Arresta l'applicazione

Nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Aggiornamento dell'applicazione

Utilizzando la console, è possibile aggiornare le impostazioni dell'applicazione, come le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome del file dell'applicazioneJAR. Puoi anche ricaricare l'applicazione JAR dal bucket Amazon S3 se devi aggiornare il codice dell'applicazione.

Nella MyApplicationpagina, scegli Configura. Aggiorna le impostazioni dell'applicazione e scegli Aggiorna.

Crea ed esegui l'applicazione (AWS CLI)

In questa sezione, si utilizza per creare ed AWS CLI eseguire l'applicazione Managed Service for Apache Flink. Un servizio gestito per Apache Flink utilizza il kinesisanalyticsv2 AWS CLI comando per creare e interagire con il servizio gestito per le applicazioni Apache Flink.

Creazione di una policy di autorizzazione
Nota

È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non crei queste IAM risorse, l'applicazione non potrà accedere ai suoi dati e ai flussi di log.

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione read sul flusso di origine e un'altra che concede le autorizzazioni per operazioni write sul flusso di sink. Quindi allegate la politica a un IAM ruolo (che creerete nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Sostituisci username con il nome utente utilizzato per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-username", "arn:aws:s3:::ka-app-code-username/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Nota

Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK for Java. Managed Service for Apache Flink imposta automaticamente le credenziali richieste da SDK a quelle del IAM ruolo di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione per assumere il ruolo e la policy di autorizzazione determina cosa può fare il servizio assumendo questo ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Ruoli, quindi Crea nuovo ruolo.

  3. In Seleziona tipo di identità attendibile, scegli Servizio AWS . In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis. In Seleziona il tuo caso d'uso, scegli Analisi dei dati Kinesis.

    Scegli Successivo: Autorizzazioni.

  4. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  5. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

  6. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la AKReadSourceStreamWriteSinkStreampolitica e scegli Allega politica.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Crea l'applicazione Managed Service for Apache Flink
  1. Salva il JSON codice seguente in un file denominato. create_request.json Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo che hai creato in precedenza. Sostituite il ARN suffisso del bucket (username) con il suffisso che avete scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con il tuo ID account.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_11", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione CreateApplication con la richiesta precedente per creare l'applicazione:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avviate l'applicazione

In questa sezione, viene utilizzata l'operazione StartApplication per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Arresta l'applicazione

In questa sezione, viene utilizzata l'operazione StopApplication per interrompere l'applicazione.

Per interrompere l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostop_request.json.

    { "ApplicationName": "test" }
  2. Esegui l'operazione StopApplication con la seguente richiesta di interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungere un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consultaConfigurare la registrazione delle applicazioni in Managed Service per Apache Flink.

Aggiornare le proprietà dell'ambiente

In questa sezione, viene utilizzata l'operazione UpdateApplication per modificare le proprietà di ambiente per l'applicazione senza ricompilare il codice dell'applicazione. In questo esempio, viene modificata la regione dei flussi di origine e destinazione.

Per aggiornare le proprietà di ambiente per l'applicazione
  1. Salvate il JSON codice seguente in un file denominatoupdate_properties_request.json.

    {"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione UpdateApplication con la richiesta precedente per aggiornare le proprietà di ambiente:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplication AWS CLI azione.

Nota

Per caricare una nuova versione del codice dell'applicazione con lo stesso nome file, è necessario specificare la nuova versione dell'oggetto. Per ulteriori informazioni sull'uso delle versioni degli oggetti Amazon S3, consulta Abilitazione o disattivazione del controllo delle versioni.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto e la nuova versione dell'oggetto. L'applicazione verrà riavviata con il nuovo pacchetto di codice.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<username>) con il suffisso che hai scelto nella sezione. Crea due flussi di dati Amazon Kinesis

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }

Approfondimenti

Fase 4: Pulire le risorse AWS

Fase 4: Pulire le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Getting Started.

Eliminare l'applicazione Managed Service for Apache Flink

  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Managed Service for Apache Flink, scegli. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis

  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue risorse IAM

  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse

  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Approfondimenti

Fase 5: fasi successive

Fase 5: fasi successive

Ora che hai creato ed eseguito un'applicazione di base del servizio gestito per Apache Flink, consulta le seguenti risorse per esplorare soluzioni del servizio gestito per Apache Flink più avanzate.

  • La soluzione di AWS streaming dati per Amazon Kinesis: la soluzione di AWS streaming dati per Amazon Kinesis configura automaticamente AWS i servizi necessari per acquisire, archiviare, elaborare e distribuire dati in streaming con facilità. La soluzione offre diverse opzioni per risolvere i casi d'uso dei dati di streaming. L'opzione Managed Service for Apache Flink fornisce un ETL esempio di end-to-end streaming che dimostra un'applicazione reale che esegue operazioni analitiche su dati simulati dei taxi di New York. La soluzione configura tutte le AWS risorse necessarie come IAM ruoli e politiche, una dashboard e allarmi. CloudWatch CloudWatch

  • AWS Soluzione di streaming di dati per Amazon MSK: La soluzione di AWS streaming dati per Amazon MSK fornisce AWS CloudFormation modelli in cui i dati fluiscono attraverso produttori, storage in streaming, consumatori e destinazioni.

  • Clickstream Lab con Apache Flink e Apache Kafka: un laboratorio end-to-end per casi d'uso clickstream che utilizza lo streaming gestito da Amazon per Apache Kafka per lo storage in streaming e il servizio gestito per Apache Flink per le applicazioni Apache Flink per l'elaborazione di flussi.

  • Workshop Amazon Managed Service per Apache Flink: in questo workshop, crei un'architettura di end-to-end streaming per importare, analizzare e visualizzare i dati di streaming quasi in tempo reale. Hai deciso di migliorare le attività di una compagnia di taxi a New York City. Analizza i dati di telemetria di una flotta di taxi a New York City quasi in tempo reale per ottimizzare le operazioni della flotta.

  • Scopri Flink: Hands On Training: formazione introduttiva ufficiale su Apache Flink che ti consente di iniziare a scrivere applicazioni scalabili di streaming, analisi e basate sugli eventi. ETL

    Nota

    Tieni presente che il servizio gestito per Apache Flink non supporta la versione Apache Flink (1.12) utilizzata in questo corso di formazione. È possibile utilizzare Flink 1.15.2 in Flink Managed Service per Apache Flink.

  • Esempi di codice Apache Flink: un GitHub archivio di un'ampia varietà di esempi di applicazioni Apache Flink.

Guida introduttiva: Flink 1.8.2 - obsoleto

Nota

Le versioni 1.6, 1.8 e 1.11 di Apache Flink non sono supportate dalla community di Apache Flink da oltre tre anni. Abbiamo intenzione di rendere obsolete queste versioni in Amazon Managed Service for Apache Flink il 5 novembre 2024. A partire da questa data, non potrai creare nuove applicazioni per queste versioni di Flink. È possibile continuare a eseguire le applicazioni esistenti in questo momento. Puoi aggiornare le tue applicazioni in modo statico utilizzando la funzionalità di aggiornamento delle versioni in loco in Amazon Managed Service for Apache Flink. Per ulteriori informazioni, consulta. Usa gli aggiornamenti di versione sul posto per Apache Flink

Questo argomento contiene una versione del Tutorial: inizia a usare Managed Service for Apache Flink DataStream API tutorial che utilizza Apache Flink 1.8.2.

Componenti dell'applicazione Managed Service for Apache Flink

Per elaborare i dati, l'applicazione del servizio gestito per Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime di Apache Flink.

Un'applicazione del servizio gestito per Apache Flink include i componenti riportati di seguito:

  • Proprietà di runtime: è possibile utilizzare le proprietà di runtime per configurare l'applicazione senza ricompilare il codice dell'applicazione.

  • Origine: l'applicazione consuma i dati utilizzando un'origine. Un connettore di origine legge i dati da un flusso di dati Kinesis, da un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Aggiungi sorgenti di dati in streaming.

  • Operatori: l'applicazione elabora i dati utilizzando uno o più operatori. Un operatore può trasformare, arricchire o aggregare i dati. Per ulteriori informazioni, consulta Operatori.

  • Sink: l'applicazione produce dati verso origini esterne utilizzando i sink. Un connettore sink scrive i dati su un flusso di dati Kinesis, un flusso Firehose, un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Scrivi dati utilizzando i lavandini.

Dopo aver creato, compilato e compresso il codice dell'applicazione, caricherai il pacchetto di codice in un bucket Amazon Simple Storage Service (Amazon S3). Potrai quindi creare un'applicazione del servizio gestito per Apache Flink. Dovrai inserire la posizione del pacchetto di codice, un flusso di dati Kinesis come origine dati di streaming e in genere una posizione di streaming o di file che riceva i dati elaborati dall'applicazione.

Prerequisiti per il completamento degli esercizi

Per completare le fasi in questa guida, è richiesto quanto segue:

Per iniziare, vai alla pagina Passaggio 1: configura un AWS account e crea un utente amministratore.

Passaggio 1: configura un AWS account e crea un utente amministratore

Registrati per un Account AWS

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

Per iscriverti a un Account AWS
  1. Apri la https://portal.aws.amazon.com/billing/registrazione.

  2. Segui le istruzioni online.

    Nel corso della procedura di registrazione riceverai una telefonata, durante la quale sarà necessario inserire un codice di verifica attraverso la tastiera del telefono.

    Quando ti iscrivi a un Account AWS, Utente root dell'account AWSviene creato un. L'utente root dispone dell'accesso a tutte le risorse e tutti i Servizi AWS nell'account. Come best practice di sicurezza, assegna l'accesso amministrativo a un utente e utilizza solo l'utente root per eseguire attività che richiedono l'accesso di un utente root.

AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a https://aws.amazon.com/e scegliendo Il mio account.

Crea un utente con accesso amministrativo

Dopo esserti registrato Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.

Proteggi i tuoi Utente root dell'account AWS
  1. Accedi AWS Management Consolecome proprietario dell'account scegliendo Utente root e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

    Per informazioni sull'accesso utilizzando un utente root, consulta la pagina Signing in as the root user della Guida per l'utente di Accedi ad AWS .

  2. Attiva l'autenticazione a più fattori (MFA) per il tuo utente root.

    Per istruzioni, consulta Abilitare un MFA dispositivo virtuale per l'utente Account AWS root (console) nella Guida per l'IAMutente.

Crea un utente con accesso amministrativo
  1. Abilita IAM Identity Center.

    Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .

  2. In IAM Identity Center, concedi l'accesso amministrativo a un utente.

    Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta Configurare l'accesso utente con i valori predefiniti IAM Identity Center directory nella Guida per l'AWS IAM Identity Center utente.

Accesso come utente amministratore
  • Per accedere con l'utente dell'IAMIdentity Center, utilizza l'accesso URL che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.

    Per informazioni sull'accesso tramite un utente di IAM Identity Center, consulta Accesso al portale di AWS accesso nella Guida per l'Accedi ad AWS utente.

Assegna l'accesso a ulteriori utenti
  1. In IAM Identity Center, crea un set di autorizzazioni che segua la migliore pratica di applicazione delle autorizzazioni con privilegi minimi.

    Segui le istruzioni riportate nella pagina Creazione di un set di autorizzazioni nella Guida per l'utente di AWS IAM Identity Center .

  2. Assegna al gruppo prima gli utenti e poi l'accesso con autenticazione unica (Single Sign-On).

    Per istruzioni, consulta Aggiungere gruppi nella Guida per l'utente di AWS IAM Identity Center .

Concessione dell'accesso programmatico

Gli utenti necessitano di un accesso programmatico se desiderano interagire con AWS l'esterno di. AWS Management Console Il modo per concedere l'accesso programmatico dipende dal tipo di utente che accede. AWS

Per fornire agli utenti l'accesso programmatico, scegli una delle seguenti opzioni.

Quale utente necessita dell'accesso programmatico? Per Come

Identità della forza lavoro

(Utenti gestiti in IAM Identity Center)

Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

IAM Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs Seguendo le istruzioni riportate in Utilizzo delle credenziali temporanee con le AWS risorse nella Guida per l'IAMutente.
IAM

(Non consigliato)

Utilizza credenziali a lungo termine per firmare richieste programmatiche a AWS CLI,, AWS SDKs o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

Fase 2: Configurare AWS Command Line Interface (AWS CLI)

In questo passaggio, si scarica e si configura AWS CLI per l'utilizzo con Managed Service for Apache Flink.

Nota

Gli esercizi sulle Nozioni di base di questa guida presuppongono che tu disponga di credenziali di amministratore (adminuser) nell'account per eseguire le operazioni.

Nota

Se è già AWS CLI installato, potrebbe essere necessario eseguire l'aggiornamento per ottenere le funzionalità più recenti. Per ulteriori informazioni, consulta Installazione dell' AWS Command Line Interface nella Guida per l'utente dell'AWS Command Line Interface . Per verificare la versione di AWS CLI, esegui il seguente comando:

aws --version

Gli esercizi di questo tutorial richiedono la seguente AWS CLI versione o successiva:

aws-cli/1.16.63
Per configurare il AWS CLI
  1. Scarica e configura la AWS CLI. Per le istruzioni, consulta i seguenti argomenti nella Guida per l'utente dell'AWS Command Line Interface :

  2. Aggiungere un profilo denominato per l'utente amministratore nel AWS CLI config file. Puoi usare questo profilo quando esegui i comandi della AWS CLI . Per ulteriori informazioni sui profili denominati, consulta Profili denominati in Guida per l'utente dell'AWS Command Line Interface .

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Per un elenco di regioni disponibili, consulta Regioni ed endpoint nella Riferimenti generali di Amazon Web Services.

    Nota

    Il codice e i comandi di esempio in questo tutorial utilizzano la regione Stati Uniti occidentali (Oregon). Per usare una AWS regione diversa, cambia la regione nel codice e nei comandi di questo tutorial con la regione che desideri utilizzare.

  3. Verifica la configurazione digitando il comando help riportato di seguito al prompt dei comandi:

    aws help

Dopo aver configurato un AWS account AWS CLI, potete provare l'esercizio successivo, in cui configurate un'applicazione di esempio e testate la end-to-end configurazione.

Approfondimenti

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

In questo esercizio, viene creata un'applicazione del servizio gestito per Apache Flink con flussi di dati come origine e come sink.

Crea due flussi di dati Amazon Kinesis

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, crea due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream). L'applicazione utilizza questi flussi per i flussi di origine e di destinazione dell'applicazione.

Puoi creare questi flussi utilizzando la console Amazon Kinesis o il comando AWS CLI seguente. Per istruzioni sulla console, consulta Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis.

Per creare i flussi di dati (AWS CLI)
  1. Per creare il primo stream (ExampleInputStream), usa il seguente comando Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Per creare il secondo flusso utilizzato dall'applicazione per scrivere l'output, esegui lo stesso comando, modificando il nome del flusso in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Successivamente nel tutorial, esegui lo script stock.py per inviare dati all'applicazione.

    $ python stock.py

Scarica ed esamina il codice Java per lo streaming di Apache Flink

Il codice dell'applicazione Java per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Passa alla directory amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8.

Tieni presente quanto segue riguardo al codice dell'applicazione:

  • Un file del modello di oggetti del progetto (pom.xml) contiene le informazioni sulla configurazione e le dipendenze dell'applicazione, incluse le librerie del servizio gestito per Apache Flink.

  • Il file BasicStreamingJob.java contiene il metodo main che definisce la funzionalità dell'applicazione.

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • L'applicazione crea connettori di origine e sink per accedere alle risorse esterne utilizzando un oggetto StreamExecutionEnvironment.

  • L'applicazione crea connettori di origine e sink utilizzando proprietà statiche. Per usare proprietà dell'applicazione dinamiche, utilizza i metodi createSourceFromApplicationProperties e createSinkFromApplicationProperties per creare i connettori. Questi metodi leggono le proprietà dell'applicazione per configurare il connettori.

    Per ulteriori informazioni sulle proprietà di runtime, consulta Usa le proprietà di runtime.

Compilate il codice dell'applicazione

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per informazioni sull'installazione di Apache Maven e del Java Development Kit ()JDK, vedere. Prerequisiti per il completamento degli esercizi

Nota

Per utilizzare il connettore Kinesis con versioni di Apache Flink precedenti alla 1.11, devi scaricare, creare e installare Apache Maven. Per ulteriori informazioni, consulta Utilizzo del connettore Apache Flink Kinesis Streams con versioni precedenti di Apache Flink.

Per compilare il codice dell'applicazione
  1. Per utilizzare il codice dell'applicazione, lo si compila e lo si impacchetta in un file. JAR È possibile compilare e creare un pacchetto del codice in uno di due modi:

    • Utilizzare lo strumento Maven a riga di comando. Create il JAR file eseguendo il comando seguente nella directory che contiene il pom.xml file:

      mvn package -Dflink.version=1.8.2
    • Utilizza il tuo ambiente di sviluppo. Per informazioni dettagliate, consulta la documentazione relativa all'ambiente di sviluppo.

      Nota

      Il codice di origine fornito si basa sulle librerie di Java 1.8. Assicurati che la versione Java del tuo progetto sia la 1.8.

    È possibile caricare il pacchetto come JAR file oppure comprimerlo e caricarlo come ZIP file. Se create l'applicazione utilizzando AWS CLI, specificate il tipo di contenuto del codice (JARoZIP).

  2. Se si verificano errori durante la compilazione, verifica che la variabile di ambiente JAVA_HOME sia impostata correttamente.

Se l'applicazione viene compilata correttamente, viene creato il seguente file:

target/aws-kinesis-analytics-java-apps-1.0.jar

Caricate il codice Java di streaming Apache Flink

In questa sezione, viene creato un bucket Amazon Simple Storage Service (Amazon S3) e caricato il codice dell'applicazione.

Per caricare il codice dell'applicazione
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona Crea bucket.

  3. Inserisci ka-app-code-<username> nel campo Nome bucket. Aggiungi un suffisso al nome del bucket, ad esempio il nome utente, per renderlo globalmente univoco. Scegli Next (Successivo).

  4. Nella fase Configura opzioni, non modificare le impostazioni e scegli Successivo.

  5. Nella fase Imposta autorizzazioni, non modificare le impostazioni e scegli Successivo.

  6. Seleziona Crea bucket.

  7. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  8. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente. Scegli Next (Successivo).

  9. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

È possibile creare ed eseguire un'applicazione del servizio gestito per Apache Flink utilizzando la console o la AWS CLI.

Nota

Quando crei l'applicazione utilizzando la console, le tue risorse AWS Identity and Access Management (IAM) e Amazon CloudWatch Logs vengono create automaticamente. Quando crei l'applicazione utilizzando AWS CLI, crei queste risorse separatamente.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My java test app.

    • Per Runtime, scegli Apache Flink.

    • Lascia il menu a discesa di Apache Flink 1.8 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci aws-kinesis-analytics-java-apps-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  6. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  7. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Esecuzione dell'applicazione.
  1. Nella MyApplicationpagina, scegli Esegui. Conferma l'operazione.

  2. Quando l'applicazione è in esecuzione, aggiorna la pagina. La console mostra il Grafico dell'applicazione.

Arresta l'applicazione

Nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Aggiornamento dell'applicazione

Utilizzando la console, è possibile aggiornare le impostazioni dell'applicazione, come le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome del file dell'applicazioneJAR. Puoi anche ricaricare l'applicazione JAR dal bucket Amazon S3 se devi aggiornare il codice dell'applicazione.

Nella MyApplicationpagina, scegli Configura. Aggiorna le impostazioni dell'applicazione e scegli Aggiorna.

Crea ed esegui l'applicazione (AWS CLI)

In questa sezione, si utilizza AWS CLI per creare ed eseguire l'applicazione Managed Service for Apache Flink. Managed Service for Apache Flink utilizza il kinesisanalyticsv2 AWS CLI comando per creare e interagire con le applicazioni Managed Service for Apache Flink.

Creazione di una policy di autorizzazione
Nota

È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non crei queste IAM risorse, l'applicazione non può accedere ai suoi dati e ai flussi di log.

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione read sul flusso di origine e un'altra che concede le autorizzazioni per operazioni write sul flusso di sink. Quindi allegate la politica a un IAM ruolo (che creerete nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Sostituisci username con il nome utente utilizzato per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-username", "arn:aws:s3:::ka-app-code-username/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Nota

Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK for Java. Managed Service for Apache Flink imposta automaticamente le credenziali richieste da SDK a quelle del IAM ruolo di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione per assumere il ruolo e la policy di autorizzazione determina cosa può fare il servizio assumendo questo ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Ruoli, quindi Crea nuovo ruolo.

  3. In Seleziona tipo di identità attendibile, scegli Servizio AWS . In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis. In Seleziona il tuo caso d'uso, scegli Analisi dei dati Kinesis.

    Scegli Successivo: Autorizzazioni.

  4. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  5. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

  6. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la AKReadSourceStreamWriteSinkStreampolitica e scegli Allega politica.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Crea l'applicazione Managed Service for Apache Flink
  1. Salva il JSON codice seguente in un file denominato. create_request.json Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo creato in precedenza. Sostituite il ARN suffisso del bucket (username) con il suffisso che avete scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con il tuo ID account.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_8", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione CreateApplication con la richiesta precedente per creare l'applicazione:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avviate l'applicazione

In questa sezione, viene utilizzata l'operazione StartApplication per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Arresta l'applicazione

In questa sezione, viene utilizzata l'operazione StopApplication per interrompere l'applicazione.

Per interrompere l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostop_request.json.

    { "ApplicationName": "test" }
  2. Esegui l'operazione StopApplication con la seguente richiesta di interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungere un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consultaConfigurare la registrazione delle applicazioni in Managed Service per Apache Flink.

Aggiornare le proprietà dell'ambiente

In questa sezione, viene utilizzata l'operazione UpdateApplication per modificare le proprietà di ambiente per l'applicazione senza ricompilare il codice dell'applicazione. In questo esempio, viene modificata la regione dei flussi di origine e destinazione.

Per aggiornare le proprietà di ambiente per l'applicazione
  1. Salvate il JSON codice seguente in un file denominatoupdate_properties_request.json.

    {"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione UpdateApplication con la richiesta precedente per aggiornare le proprietà di ambiente:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplication AWS CLI azione.

Nota

Per caricare una nuova versione del codice dell'applicazione con lo stesso nome file, è necessario specificare la nuova versione dell'oggetto. Per ulteriori informazioni sull'uso delle versioni degli oggetti Amazon S3, consulta Abilitazione o disattivazione del controllo delle versioni.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto e la nuova versione dell'oggetto. L'applicazione verrà riavviata con il nuovo pacchetto di codice.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<username>) con il suffisso che hai scelto nella sezione. Crea due flussi di dati Amazon Kinesis

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }

Approfondimenti

Fase 4: Pulire le risorse AWS

Fase 4: Pulire le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Getting Started.

Eliminare l'applicazione Managed Service for Apache Flink

  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Managed Service for Apache Flink, scegli. MyApplication

  3. Scegli Configura.

  4. Nella sezione Snapshot, scegli Disabilita, quindi scegli Aggiorna.

  5. Nella pagina dell'applicazione, scegli Elimina e conferma l'eliminazione.

Eliminare i flussi di dati Kinesis

  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse

  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse

  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Quindi scegli Elimina gruppo di log e conferma l'eliminazione.

Guida introduttiva: Flink 1.6.2 - obsoleto

Nota

Le versioni 1.6, 1.8 e 1.11 di Apache Flink non sono supportate dalla community di Apache Flink da oltre tre anni. Abbiamo intenzione di rendere obsolete queste versioni in Amazon Managed Service for Apache Flink il 5 novembre 2024. A partire da questa data, non potrai creare nuove applicazioni per queste versioni di Flink. È possibile continuare a eseguire le applicazioni esistenti in questo momento. Puoi aggiornare le tue applicazioni in modo statico utilizzando la funzionalità di aggiornamento delle versioni in loco in Amazon Managed Service for Apache Flink. Per ulteriori informazioni, consulta. Usa gli aggiornamenti di versione sul posto per Apache Flink

Questo argomento contiene una versione del Tutorial: inizia a usare Managed Service for Apache Flink DataStream API tutorial che utilizza Apache Flink 1.6.2.

Componenti di un'applicazione Managed Service per Apache Flink

Per elaborare i dati, l'applicazione del servizio gestito per Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime di Apache Flink.

Un servizio gestito per Apache Flink include i seguenti componenti:

  • Proprietà di runtime: è possibile utilizzare le proprietà di runtime per configurare l'applicazione senza ricompilare il codice dell'applicazione.

  • Origine: l'applicazione consuma i dati utilizzando un'origine. Un connettore di origine legge i dati da un flusso di dati Kinesis, da un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Aggiungi sorgenti di dati in streaming.

  • Operatori: l'applicazione elabora i dati utilizzando uno o più operatori. Un operatore può trasformare, arricchire o aggregare i dati. Per ulteriori informazioni, consulta Operatori.

  • Sink: l'applicazione produce dati verso origini esterne utilizzando i sink. Un connettore sink scrive i dati su un flusso di dati Kinesis, un flusso Firehose, un bucket Amazon S3, ecc. Per ulteriori informazioni, consulta Scrivi dati utilizzando i lavandini.

Dopo aver creato, compilato e compresso l'applicazione, caricherai il pacchetto di codice in un bucket Amazon Simple Storage Service (Amazon S3). Potrai quindi creare un'applicazione del servizio gestito per Apache Flink. Dovrai inserire la posizione del pacchetto di codice, un flusso di dati Kinesis come origine dati di streaming e in genere una posizione di streaming o di file che riceva i dati elaborati dall'applicazione.

Prerequisiti per il completamento degli esercizi

Per completare le fasi in questa guida, è richiesto quanto segue:

  • Java Development Kit (JDK) versione 8. Imposta la variabile di JAVA_HOME ambiente in modo che punti alla posizione di JDK installazione.

  • Ti consigliamo di utilizzare un ambiente di sviluppo (ad esempio Eclipse Java Neon o IntelliJ IDEA) per sviluppare e compilare l'applicazione.

  • Client Git. Installa il client Git se non lo hai già fatto.

  • Apache Maven Compiler Plugin. Maven deve trovarsi nel percorso di lavoro. Per testare l'installazione Apache Maven, immetti quanto segue:

    $ mvn -version

Per iniziare, vai alla pagina Passaggio 1: configura un AWS account e crea un utente amministratore.

Passaggio 1: configura un AWS account e crea un utente amministratore

Registrati per un Account AWS

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

Per iscriverti a un Account AWS
  1. Apri la https://portal.aws.amazon.com/billing/registrazione.

  2. Segui le istruzioni online.

    Nel corso della procedura di registrazione riceverai una telefonata, durante la quale sarà necessario inserire un codice di verifica attraverso la tastiera del telefono.

    Quando ti iscrivi a un Account AWS, Utente root dell'account AWSviene creato un. L'utente root dispone dell'accesso a tutte le risorse e tutti i Servizi AWS nell'account. Come best practice di sicurezza, assegna l'accesso amministrativo a un utente e utilizza solo l'utente root per eseguire attività che richiedono l'accesso di un utente root.

AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a https://aws.amazon.com/e scegliendo Il mio account.

Crea un utente con accesso amministrativo

Dopo esserti registrato Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.

Proteggi i tuoi Utente root dell'account AWS
  1. Accedi AWS Management Consolecome proprietario dell'account scegliendo Utente root e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

    Per informazioni sull'accesso utilizzando un utente root, consulta la pagina Signing in as the root user della Guida per l'utente di Accedi ad AWS .

  2. Attiva l'autenticazione a più fattori (MFA) per il tuo utente root.

    Per istruzioni, consulta Abilitare un MFA dispositivo virtuale per l'utente Account AWS root (console) nella Guida per l'IAMutente.

Crea un utente con accesso amministrativo
  1. Abilita IAM Identity Center.

    Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .

  2. In IAM Identity Center, concedi l'accesso amministrativo a un utente.

    Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta Configurare l'accesso utente con i valori predefiniti IAM Identity Center directory nella Guida per l'AWS IAM Identity Center utente.

Accesso come utente amministratore
  • Per accedere con l'utente dell'IAMIdentity Center, utilizza l'accesso URL che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.

    Per informazioni sull'accesso tramite un utente di IAM Identity Center, consulta Accesso al portale di AWS accesso nella Guida per l'Accedi ad AWS utente.

Assegna l'accesso a ulteriori utenti
  1. In IAM Identity Center, crea un set di autorizzazioni che segua la migliore pratica di applicazione delle autorizzazioni con privilegi minimi.

    Segui le istruzioni riportate nella pagina Creazione di un set di autorizzazioni nella Guida per l'utente di AWS IAM Identity Center .

  2. Assegna al gruppo prima gli utenti e poi l'accesso con autenticazione unica (Single Sign-On).

    Per istruzioni, consulta Aggiungere gruppi nella Guida per l'utente di AWS IAM Identity Center .

Concessione dell'accesso programmatico

Gli utenti necessitano di un accesso programmatico se desiderano interagire con AWS l'esterno di. AWS Management Console Il modo per concedere l'accesso programmatico dipende dal tipo di utente che accede. AWS

Per fornire agli utenti l'accesso programmatico, scegli una delle seguenti opzioni.

Quale utente necessita dell'accesso programmatico? Per Come

Identità della forza lavoro

(Utenti gestiti in IAM Identity Center)

Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

IAM Utilizza credenziali temporanee per firmare le richieste programmatiche a AWS CLI, AWS SDKs, o. AWS APIs Seguendo le istruzioni riportate in Utilizzo delle credenziali temporanee con le AWS risorse nella Guida per l'IAMutente.
IAM

(Non consigliato)

Utilizza credenziali a lungo termine per firmare richieste programmatiche a AWS CLI,, AWS SDKs o. AWS APIs

Segui le istruzioni per l'interfaccia che desideri utilizzare.

Fase 2: Configurare AWS Command Line Interface (AWS CLI)

In questo passaggio, si scarica e si configura AWS CLI per l'utilizzo con un servizio gestito per Apache Flink.

Nota

Gli esercizi sulle Nozioni di base di questa guida presuppongono che tu disponga di credenziali di amministratore (adminuser) nell'account per eseguire le operazioni.

Nota

Se è già AWS CLI installato, potrebbe essere necessario eseguire l'aggiornamento per ottenere le funzionalità più recenti. Per ulteriori informazioni, consulta Installazione dell' AWS Command Line Interface nella Guida per l'utente dell'AWS Command Line Interface . Per verificare la versione di AWS CLI, esegui il seguente comando:

aws --version

Gli esercizi di questo tutorial richiedono la seguente AWS CLI versione o successiva:

aws-cli/1.16.63
Per configurare il AWS CLI
  1. Scarica e configura la AWS CLI. Per le istruzioni, consulta i seguenti argomenti nella Guida per l'utente dell'AWS Command Line Interface :

  2. Aggiungere un profilo denominato per l'utente amministratore nel AWS CLI config file. Puoi usare questo profilo quando esegui i comandi della AWS CLI . Per ulteriori informazioni sui profili denominati, consulta Profili denominati in Guida per l'utente dell'AWS Command Line Interface .

    [profile adminuser] aws_access_key_id = adminuser access key ID aws_secret_access_key = adminuser secret access key region = aws-region

    Per un elenco delle AWS regioni disponibili, consulta Regioni ed endpoint in. Riferimenti generali di Amazon Web Services

    Nota

    Il codice e i comandi di esempio in questo tutorial utilizzano la regione Stati Uniti occidentali (Oregon). Per utilizzare una regione diversa, sostituisci la regione nel codice e nei comandi di questo tutorial con quella che desideri utilizzare.

  3. Verifica la configurazione digitando il comando help riportato di seguito al prompt dei comandi:

    aws help

Dopo aver configurato un AWS account AWS CLI, puoi provare l'esercizio successivo, in cui configurerai un'applicazione di esempio e verificherai la end-to-end configurazione.

Approfondimenti

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink

In questo esercizio, viene creata un'applicazione del servizio gestito per Apache Flink con flussi di dati come origine e come sink.

Crea due flussi di dati Amazon Kinesis

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, crea due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream). L'applicazione utilizza questi flussi per i flussi di origine e di destinazione dell'applicazione.

Puoi creare questi flussi utilizzando la console Amazon Kinesis o il comando AWS CLI seguente. Per istruzioni sulla console, consulta Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis.

Per creare i flussi di dati (AWS CLI)
  1. Per creare il primo stream (ExampleInputStream), usa il seguente comando Amazon Kinesis create-stream AWS CLI .

    $ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
  2. Per creare il secondo flusso utilizzato dall'applicazione per scrivere l'output, esegui lo stesso comando, modificando il nome del flusso in ExampleOutputStream.

    $ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Successivamente nel tutorial, esegui lo script stock.py per inviare dati all'applicazione.

    $ python stock.py

Scarica ed esamina il codice Java per lo streaming di Apache Flink

Il codice dell'applicazione Java per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Passa alla directory amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6.

Tieni presente quanto segue riguardo al codice dell'applicazione:

  • Un file del modello di oggetti del progetto (pom.xml) contiene le informazioni sulla configurazione e le dipendenze dell'applicazione, incluse le librerie del servizio gestito per Apache Flink.

  • Il file BasicStreamingJob.java contiene il metodo main che definisce la funzionalità dell'applicazione.

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • L'applicazione crea connettori di origine e sink per accedere alle risorse esterne utilizzando un oggetto StreamExecutionEnvironment.

  • L'applicazione crea connettori di origine e sink utilizzando proprietà statiche. Per usare proprietà dell'applicazione dinamiche, utilizza i metodi createSourceFromApplicationProperties e createSinkFromApplicationProperties per creare i connettori. Questi metodi leggono le proprietà dell'applicazione per configurare il connettori.

    Per ulteriori informazioni sulle proprietà di runtime, consulta Usa le proprietà di runtime.

Compilate il codice dell'applicazione

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per informazioni sull'installazione di Apache Maven e del Java Development Kit ()JDK, vedere. Prerequisiti per il completamento degli esercizi

Nota

Per utilizzare il connettore Kinesis con versioni di Apache Flink precedenti alla 1.11, è necessario scaricare il codice di origine per il connettore e compilarlo come descritto nella documentazione di Apache Flink.

Per compilare il codice dell'applicazione
  1. Per utilizzare il codice dell'applicazione, lo si compila e lo si impacchetta in un file. JAR È possibile compilare e creare un pacchetto del codice in uno di due modi:

    • Utilizzare lo strumento Maven a riga di comando. Create il JAR file eseguendo il comando seguente nella directory che contiene il pom.xml file:

      mvn package
      Nota

      Il parametro -DFLink.version non è richiesto per il servizio gestito per il runtime di Apache Flink versione 1.0.1; è richiesto solo per la versione 1.1.0 e successive. Per ulteriori informazioni, consulta Specificate la versione Apache Flink dell'applicazione.

    • Utilizza il tuo ambiente di sviluppo. Per informazioni dettagliate, consulta la documentazione relativa all'ambiente di sviluppo.

    È possibile caricare il pacchetto come JAR file oppure comprimerlo e caricarlo come ZIP file. Se create l'applicazione utilizzando AWS CLI, specificate il tipo di contenuto del codice (JARoZIP).

  2. Se si verificano errori durante la compilazione, verifica che la variabile di ambiente JAVA_HOME sia impostata correttamente.

Se l'applicazione viene compilata correttamente, viene creato il seguente file:

target/aws-kinesis-analytics-java-apps-1.0.jar

Caricate il codice Java di streaming Apache Flink

In questa sezione, viene creato un bucket Amazon Simple Storage Service (Amazon S3) e caricato il codice dell'applicazione.

Per caricare il codice dell'applicazione
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona Crea bucket.

  3. Inserisci ka-app-code-<username> nel campo Nome bucket. Aggiungi un suffisso al nome del bucket, ad esempio il nome utente, per renderlo globalmente univoco. Scegli Next (Successivo).

  4. Nella fase Configura opzioni, non modificare le impostazioni e scegli Successivo.

  5. Nella fase Imposta autorizzazioni, non modificare le impostazioni e scegli Successivo.

  6. Seleziona Crea bucket.

  7. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  8. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente. Scegli Next (Successivo).

  9. Nella fase Imposta autorizzazioni, non modificare le impostazioni. Scegli Next (Successivo).

  10. Nella fase Imposta proprietà, non modificare le impostazioni. Scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

È possibile creare ed eseguire un'applicazione del servizio gestito per Apache Flink utilizzando la console o la AWS CLI.

Nota

Quando crei l'applicazione utilizzando la console, le tue risorse AWS Identity and Access Management (IAM) e Amazon CloudWatch Logs vengono create automaticamente. Quando crei l'applicazione utilizzando AWS CLI, crei queste risorse separatamente.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My java test app.

    • Per Runtime, scegli Apache Flink.

      Nota

      Il servizio gestito per Apache Flink utilizza Apache Flink versione 1.8.2 o 1.6.2.

    • Cambia il menu a discesa della versione in quello di Apache Flink 1.6.

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/java-getting-started-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci java-getting-started-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    ProducerConfigProperties flink.inputstream.initpos LATEST
    ProducerConfigProperties aws.region us-west-2
    ProducerConfigProperties AggregationEnabled false
  5. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  6. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  7. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Esecuzione dell'applicazione.
  1. Nella MyApplicationpagina, scegli Esegui. Conferma l'operazione.

  2. Quando l'applicazione è in esecuzione, aggiorna la pagina. La console mostra il Grafico dell'applicazione.

Arresta l'applicazione

Nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Aggiornamento dell'applicazione

Utilizzando la console, è possibile aggiornare le impostazioni dell'applicazione, come le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome del file dell'applicazioneJAR. Puoi anche ricaricare l'applicazione JAR dal bucket Amazon S3 se devi aggiornare il codice dell'applicazione.

Nella MyApplicationpagina, scegli Configura. Aggiorna le impostazioni dell'applicazione e scegli Aggiorna.

Crea ed esegui l'applicazione (AWS CLI)

In questa sezione, si utilizza AWS CLI per creare ed eseguire l'applicazione Managed Service for Apache Flink. Managed Service for Apache Flink utilizza il kinesisanalyticsv2 AWS CLI comando per creare e interagire con le applicazioni Managed Service for Apache Flink.

Creazione di una policy di autorizzazione

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione read sul flusso di origine e un'altra che concede le autorizzazioni per operazioni write sul flusso di sink. Quindi alleghi la politica a un IAM ruolo (che creerai nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Sostituisci username con il nome utente utilizzato per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-username", "arn:aws:s3:::ka-app-code-username/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Nota

Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK for Java. Managed Service for Apache Flink imposta automaticamente le credenziali richieste da SDK a quelle del IAM ruolo di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione per assumere il ruolo e la policy di autorizzazione determina cosa può fare il servizio assumendo questo ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Ruoli, quindi Crea nuovo ruolo.

  3. In Seleziona tipo di identità attendibile, scegli Servizio AWS . In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis. In Seleziona il tuo caso d'uso, scegli Analisi dei dati Kinesis.

    Scegli Successivo: Autorizzazioni.

  4. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  5. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

  6. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la AKReadSourceStreamWriteSinkStreampolitica e scegli Allega politica.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Crea l'applicazione Managed Service for Apache Flink
  1. Salva il JSON codice seguente in un file denominato. create_request.json Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo creato in precedenza. Sostituite il ARN suffisso del bucket (username) con il suffisso che avete scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con il tuo ID account.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_6", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "java-getting-started-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione CreateApplication con la richiesta precedente per creare l'applicazione:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avviate l'applicazione

In questa sezione, viene utilizzata l'operazione StartApplication per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Arresta l'applicazione

In questa sezione, viene utilizzata l'operazione StopApplication per interrompere l'applicazione.

Per interrompere l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostop_request.json.

    { "ApplicationName": "test" }
  2. Esegui l'operazione StopApplication con la seguente richiesta di interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungere un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consultaConfigurare la registrazione delle applicazioni in Managed Service per Apache Flink.

Aggiornare le proprietà dell'ambiente

In questa sezione, viene utilizzata l'operazione UpdateApplication per modificare le proprietà di ambiente per l'applicazione senza ricompilare il codice dell'applicazione. In questo esempio, viene modificata la regione dei flussi di origine e destinazione.

Per aggiornare le proprietà di ambiente per l'applicazione
  1. Salvate il JSON codice seguente in un file denominatoupdate_properties_request.json.

    {"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
  2. Esegui l'operazione UpdateApplication con la richiesta precedente per aggiornare le proprietà di ambiente:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplication AWS CLI azione.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto. L'applicazione verrà riavviata con il nuovo pacchetto di codice.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<username>) con il suffisso che hai scelto nella sezione. Crea due flussi di dati Amazon Kinesis

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }

Fase 4: Pulire le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Getting Started.

Eliminare l'applicazione Managed Service for Apache Flink

  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Managed Service for Apache Flink, scegli. MyApplication

  3. Scegli Configura.

  4. Nella sezione Snapshot, scegli Disabilita, quindi scegli Aggiorna.

  5. Nella pagina dell'applicazione, scegli Elimina e conferma l'eliminazione.

Eliminare i flussi di dati Kinesis

  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse

  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse

  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Quindi scegli Elimina gruppo di log e conferma l'eliminazione.

Esempi di versioni precedenti (precedenti) di Managed Service for Apache Flink

Questa sezione fornisce esempi di creazione e utilizzo di applicazioni nel servizio gestito per Apache Flink. Includono codice di esempio e step-by-step istruzioni per aiutarti a creare un servizio gestito per le applicazioni Apache Flink e a testare i risultati.

Prima di esplorare questi esempi, ti consigliamo di esaminare quanto segue:

Nota

Gli esempi presuppongono che tu stia utilizzando la regione Stati Uniti occidentali (Oregon) (us-west-2). Se utilizzi una regione diversa, aggiorna il codice dell'applicazione, i comandi e i IAM ruoli in modo appropriato.

DataStream APIesempi

Gli esempi seguenti mostrano come creare applicazioni utilizzando Apache DataStream API Flink.

Esempio: Tumbling window

In questo esercizio, viene creata un'applicazione del servizio gestito per Apache Flink che aggrega i dati utilizzando una finestra a cascata. L'aggregazione è abilitata in Flink per impostazione predefinita. Per disabilitarla, esegui le seguenti operazioni:

sink.producer.aggregation-enabled' = 'false'
Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Crea risorse dipendenti

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream)

  • Un bucket Amazon S3 per archiviare il codice dell'applicazione (ka-app-code-<username>)

Puoi creare i flussi Kinesis e un bucket S3 utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

  • Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis. Assegna un nome al flusso di dati ExampleInputStream e ExampleOutputStream.

  • Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service. Assegna al bucket Amazon S3 un nome globalmente univoco aggiungendo il tuo nome di accesso, ad esempio ka-app-code-<username>.

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Java per questo esempio è disponibile da GitHub. Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/TumblingWindow.

Il codice dell'applicazione si trova nei file TumblingWindowStreamingJob.java. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • Aggiungi l'istruzione d'importazione seguente:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  • L'applicazione utilizza l'operatore timeWindow per trovare il conteggio dei valori per ogni simbolo azionario in una finestra a cascata di 5 secondi. Il codice seguente crea l'operatore e invia i dati aggregati a un nuovo sink del flusso di dati Kinesis:

    input.flatMap(new Tokenizer()) // Tokenizer for generating words .keyBy(0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward .sum(1) // Sum the number of words per partition .map(value -> value.f0 + "," + value.f1.toString() + "\n") .addSink(createSinkFromStaticConfig());
Compilate il codice dell'applicazione

Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Installa Java e Maven se non lo hai già fatto. Per ulteriori informazioni, consulta Completa i prerequisiti richiesti nel tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

  2. Compila l'applicazione con il seguente comando:

    mvn package -Dflink.version=1.15.3
    Nota

    Il codice di origine fornito si basa sulle librerie di Java 11.

La compilazione dell'applicazione crea il JAR file dell'applicazione ()target/aws-kinesis-analytics-java-apps-1.0.jar.

Caricate il codice Java di streaming Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

  1. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  2. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente.

  3. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

      Nota

      Il servizio gestito per Apache Flink utilizza Apache Flink versione 1.15.2.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*", "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci aws-kinesis-analytics-java-apps-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  5. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  6. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione. Non si tratta dello stesso flusso di log utilizzato dall'applicazione per inviare i risultati.

Esecuzione dell'applicazione.
  1. Nella MyApplicationpagina, scegli Esegui. Lascia selezionata l'opzione Esegui senza snapshot e conferma l'operazione.

  2. Quando l'applicazione è in esecuzione, aggiorna la pagina. La console mostra il Grafico dell'applicazione.

Puoi controllare le metriche del servizio gestito per Apache Flink sulla CloudWatch console per verificare che l'applicazione funzioni.

Pulizia delle risorse AWS

Questa sezione include le procedure per ripulire le AWS risorse create nel tutorial di Tumbling Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: finestra scorrevole

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Crea risorse dipendenti

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream).

  • Un bucket Amazon S3 per archiviare il codice dell'applicazione (ka-app-code-<username>)

Puoi creare i flussi Kinesis e un bucket S3 utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

  • Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis. Assegna un nome ai flussi di dati ExampleInputStream e ExampleOutputStream.

  • Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service. Assegna al bucket Amazon S3 un nome globalmente univoco aggiungendo il tuo nome di accesso, ad esempio ka-app-code-<username>.

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Java per questo esempio è disponibile da GitHub. Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/SlidingWindow.

Il codice dell'applicazione si trova nei file SlidingWindowStreamingJobWithParallelism.java. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • L'applicazione utilizza l'operatore timeWindow per trovare il valore minimo per ogni simbolo azionario in una finestra di 10 secondi che scorre di 5 secondi. Il codice seguente crea l'operatore e invia i dati aggregati a un nuovo sink del flusso di dati Kinesis:

  • Aggiungi l'istruzione d'importazione seguente:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
  • L'applicazione utilizza l'operatore timeWindow per trovare il conteggio dei valori per ogni simbolo azionario in una finestra a cascata di 5 secondi. Il codice seguente crea l'operatore e invia i dati aggregati a un nuovo sink del flusso di dati Kinesis:

    input.flatMap(new Tokenizer()) // Tokenizer for generating words .keyBy(0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward .sum(1) // Sum the number of words per partition .map(value -> value.f0 + "," + value.f1.toString() + "\n") .addSink(createSinkFromStaticConfig());
Compilate il codice dell'applicazione

Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Installa Java e Maven se non lo hai già fatto. Per ulteriori informazioni, consulta Completa i prerequisiti richiesti nel tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

  2. Compila l'applicazione con il seguente comando:

    mvn package -Dflink.version=1.15.3
    Nota

    Il codice di origine fornito si basa sulle librerie di Java 11.

La compilazione dell'applicazione crea il JAR file dell'applicazione ()target/aws-kinesis-analytics-java-apps-1.0.jar.

Caricate il codice Java di streaming Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

  1. Nella console Amazon S3, scegli il - ka-app-code<username>bucket, quindi scegli Upload.

  2. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente.

  3. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*", "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci aws-kinesis-analytics-java-apps-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  5. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  6. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione. Non si tratta dello stesso flusso di log utilizzato dall'applicazione per inviare i risultati.

Configura il parallelismo dell'applicazione

Questo esempio di applicazione utilizza l'esecuzione parallela di attività. Il seguente codice dell'applicazione imposta il parallelismo dell'operatore min:

.setParallelism(3) // Set parallelism for the min operator

Il parallelismo dell'applicazione non può essere maggiore del parallelismo fornito, che ha un valore predefinito di 1. Per aumentare il parallelismo dell'applicazione, utilizzate la seguente azione: AWS CLI

aws kinesisanalyticsv2 update-application --application-name MyApplication --current-application-version-id <VersionId> --application-configuration-update "{\"FlinkApplicationConfigurationUpdate\": { \"ParallelismConfigurationUpdate\": {\"ParallelismUpdate\": 5, \"ConfigurationTypeUpdate\": \"CUSTOM\" }}}"

È possibile recuperare l'ID della versione corrente dell'applicazione utilizzando le DescribeApplicationazioni o. ListApplications

Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Puoi controllare le metriche del servizio gestito per Apache Flink sulla CloudWatch console per verificare che l'applicazione funzioni.

Pulisci le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: scrittura su un bucket Amazon S3

In questo esercizio, viene creato un servizio gestito per Apache Flink con un flusso di dati Kinesis come origine e un bucket Amazon S3 come sink. Utilizzando il sink, puoi verificare l'output dell'applicazione nella console Amazon S3.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Crea risorse dipendenti

Prima di creare un servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Un flusso di dati Kinesis (ExampleInputStream).

  • Un bucket Amazon S3 per archiviare il codice e l'output dell'applicazione (ka-app-code-<username>)

Nota

Il servizio gestito per Apache Flink non può scrivere dati su Amazon S3 con la crittografia lato server abilitata sul servizio gestito per Apache Flink.

Puoi creare il flusso Kinesis e il bucket Amazon S3 utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

  • Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis. Assegna un nome al flusso di dati ExampleInputStream.

  • Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service. Assegna al bucket Amazon S3 un nome univoco globale aggiungendo il tuo nome di accesso, ad esempio ka-app-code-<username>. Crea due cartelle (code e data) nel bucket Amazon S3.

L'applicazione crea le seguenti CloudWatch risorse se non esistono già:

  • Un gruppo di log chiamato /AWS/KinesisAnalytics-java/MyApplication.

  • Un flusso di log denominato kinesis-analytics-log-stream.

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Java per questo esempio è disponibile da GitHub. Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/S3Sink.

Il codice dell'applicazione si trova nei file S3StreamingSinkJob.java. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • È necessario aggiungere l'istruzione d'importazione seguente:

    import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
  • L'applicazione utilizza un sink Apache Flink S3 per scrivere su Amazon S3.

    Il sink legge i messaggi in una finestra a cascata, li codifica in oggetti bucket S3 e invia gli oggetti codificati al sink S3. Il codice seguente codifica gli oggetti per l'invio ad Amazon S3:

    input.map(value -> { // Parse the JSON JsonNode jsonNode = jsonParser.readValue(value, JsonNode.class); return new Tuple2<>(jsonNode.get("ticker").toString(), 1); }).returns(Types.TUPLE(Types.STRING, Types.INT)) .keyBy(v -> v.f0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.minutes(1))) .sum(1) // Count the appearances by ticker per partition .map(value -> value.f0 + " count: " + value.f1.toString() + "\n") .addSink(createS3SinkFromStaticConfig());
Nota

L'applicazione utilizza un oggetto Flink StreamingFileSink per scrivere su Amazon S3. Per ulteriori informazioni suStreamingFileSink, consultate la documentazione StreamingFileSinkdi Apache Flink.

Modificare il codice dell'applicazione

In questa sezione, viene modificato il codice dell'applicazione per scrivere l'output nel bucket Amazon S3.

Aggiorna la riga seguente con il nome utente per specificare la posizione di output dell'applicazione:

private static final String s3SinkPath = "s3a://ka-app-code-<username>/data";
Compila il codice dell'applicazione

Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Installa Java e Maven se non lo hai già fatto. Per ulteriori informazioni, consulta Completa i prerequisiti richiesti nel tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

  2. Compila l'applicazione con il seguente comando:

    mvn package -Dflink.version=1.15.3

La compilazione dell'applicazione crea il JAR file dell'applicazione ()target/aws-kinesis-analytics-java-apps-1.0.jar.

Nota

Il codice di origine fornito si basa sulle librerie di Java 11.

Caricate il codice Java di streaming Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

  1. Nella console Amazon S3, scegli il - ka-app-code<username>bucket, vai alla cartella del codice e scegli Carica.

  2. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente.

  3. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

    Nota

    Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

    • Lascia la versione Apache Flink 1.15.2 (versione consigliata).

  6. Per le autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  7. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere al flusso di dati Kinesis.

  1. Apri la IAM console all'indirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account. Sostituisci <username> con il tuo nome utente.

    { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:%LOG_STREAM_PLACEHOLDER%" ] } , { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci code/aws-kinesis-analytics-java-apps-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  5. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  6. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione. Non si tratta dello stesso flusso di log utilizzato dall'applicazione per inviare i risultati.

Esecuzione dell'applicazione.
  1. Nella MyApplicationpagina, scegli Esegui. Lascia selezionata l'opzione Esegui senza snapshot e conferma l'operazione.

  2. Quando l'applicazione è in esecuzione, aggiorna la pagina. La console mostra il Grafico dell'applicazione.

Verifica l'output dell'applicazione

Nella console Amazon S3, apri la cartella dati nel bucket S3.

Dopo alcuni minuti, verranno visualizzati gli oggetti contenenti dati aggregati provenienti dall'applicazione.

Nota

L'aggregazione è abilitata in Flink per impostazione predefinita. Per disabilitarla, esegui le seguenti operazioni:

sink.producer.aggregation-enabled' = 'false'
Opzionale: personalizza la sorgente e il sink

In questa sezione viene effettuata la personalizzazione delle impostazioni relative agli oggetti origine e sink.

Nota

Dopo aver modificato le sezioni di codice descritte nelle sezioni seguenti, effettua le seguenti operazioni per ricaricare il codice dell'applicazione:

  • Ripeti i passaggi indicati nella sezione Compila il codice dell'applicazione per compilare il codice dell'applicazione aggiornato.

  • Ripeti i passaggi indicati nella sezione Caricate il codice Java di streaming Apache Flink per caricare il codice dell'applicazione aggiornato.

  • Nella pagina dell'applicazione nella console, scegli Configura, quindi scegli Aggiorna per ricaricare il codice dell'applicazione aggiornato nell'applicazione.

Configura il partizionamento dei dati

In questa sezione, vengono configurati i nomi delle cartelle che il file sink di streaming crea nel bucket S3. Per farlo, aggiungerai un assegnatore di bucket al file sink di streaming.

Per personalizzare i nomi delle cartelle creati nel bucket S3, procedi come segue:

  1. Aggiungi le seguenti istruzioni d'importazione all'inizio del file S3StreamingSinkJob.java:

    import org.apache.flink.streaming.api.functions.sink.filesystem.rollingpolicies.DefaultRollingPolicy; import org.apache.flink.streaming.api.functions.sink.filesystem.bucketassigners.DateTimeBucketAssigner;
  2. Aggiorna il metodo createS3SinkFromStaticConfig() nel codice in modo che sia simile a quanto segue:

    private static StreamingFileSink<String> createS3SinkFromStaticConfig() { final StreamingFileSink<String> sink = StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8")) .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH")) .withRollingPolicy(DefaultRollingPolicy.create().build()) .build(); return sink; }

L'esempio di codice precedente utilizza il DateTimeBucketAssigner con un formato di data personalizzato per creare cartelle nel bucket S3. Il DateTimeBucketAssigner utilizza l'ora corrente del sistema per creare i nomi dei bucket. Se desideri creare un assegnatore di bucket personalizzato per personalizzare ulteriormente i nomi delle cartelle create, puoi creare una classe che implementi. BucketAssigner Implementa la logica personalizzata utilizzando il metodo getBucketId.

Un'implementazione personalizzata del BucketAssigner può utilizzare il parametro Context per ottenere ulteriori informazioni su un record al fine di determinarne la cartella di destinazione.

Configura la frequenza di lettura

In questa sezione, viene configurata la frequenza delle letture sul flusso di origine.

Per impostazione predefinita, il consumatore del flusso di dati Kinesis legge dal flusso di origine cinque volte al secondo. Questa frequenza causerà problemi se c'è più di un client che legge dal flusso o se l'applicazione deve ritentare la lettura di un record. È possibile evitare questi problemi impostando la frequenza di lettura del consumatore.

Per stabilire la frequenza di lettura del consumatore Kinesis, viene impostato l'intervallo SHARD_GETRECORDS_INTERVAL_MILLIS.

Il seguente esempio di codice imposta l'intervallo SHARD_GETRECORDS_INTERVAL_MILLIS su un secondo:

kinesisConsumerConfig.setProperty(ConsumerConfigConstants.SHARD_GETRECORDS_INTERVAL_MILLIS, "1000");
Configura il buffering di scrittura

In questa sezione, vengono configurate la frequenza di scrittura e altre impostazioni del sink.

Per impostazione predefinita, l'applicazione scrive nel bucket di destinazione ogni minuto. È possibile modificare questo intervallo e altre impostazioni configurando l'oggetto DefaultRollingPolicy.

Nota

Il file sink di streaming Apache Flink scrive nel suo bucket di output ogni volta che l'applicazione crea un checkpoint. Per impostazione predefinita, l'applicazione crea un checkpoint ogni minuto. Per aumentare l'intervallo di scrittura del sink S3, è necessario aumentare anche l'intervallo di checkpoint.

Per configurare l'oggetto DefaultRollingPolicy, procedi come segue:

  1. Aumenta l'impostazione CheckpointInterval dell'applicazione. Il seguente input per l' UpdateApplicationazione imposta l'intervallo del checkpoint su 10 minuti:

    { "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "ConfigurationTypeUpdate" : "CUSTOM", "CheckpointIntervalUpdate": 600000 } } }, "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 5 }

    Per utilizzare il codice precedente, specifica la versione dell'applicazione corrente. È possibile recuperare la versione dell'applicazione utilizzando l'azione. ListApplications

  2. Aggiungi la seguente istruzione d'importazione all'inizio del file S3StreamingSinkJob.java:

    import java.util.concurrent.TimeUnit;
  3. Aggiorna il metodo createS3SinkFromStaticConfig nel file S3StreamingSinkJob.java in modo che abbia il seguente aspetto:

    private static StreamingFileSink<String> createS3SinkFromStaticConfig() { final StreamingFileSink<String> sink = StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8")) .withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH")) .withRollingPolicy( DefaultRollingPolicy.create() .withRolloverInterval(TimeUnit.MINUTES.toMillis(8)) .withInactivityInterval(TimeUnit.MINUTES.toMillis(5)) .withMaxPartSize(1024 * 1024 * 1024) .build()) .build(); return sink; }

    L'esempio di codice precedente imposta la frequenza di scrittura nel bucket Amazon S3 su 8 minuti.

Per ulteriori informazioni sulla configurazione del file sink di streaming Apache Flink, consulta Formati a righe di codice nella documentazione di Apache Flink.

Pulisci le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse che hai creato nel tutorial di Amazon S3.

Elimina l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e conferma l'eliminazione.

Eliminare il flusso di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

Elimina oggetti e bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Quindi scegli Elimina gruppo di log e conferma l'eliminazione.

Tutorial: Utilizzo di un'applicazione Managed Service for Apache Flink per replicare i dati da un argomento in un MSK cluster a un altro in un VPC

Il seguente tutorial dimostra come creare un Amazon VPC con un MSK cluster Amazon e due argomenti e come creare un'applicazione Managed Service for Apache Flink che legge da un MSK argomento Amazon e scrive su un altro.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Crea un Amazon VPC con un MSK cluster Amazon

Per creare un campione VPC e un MSK cluster Amazon a cui accedere da un'applicazione Managed Service for Apache Flink, segui il tutorial Getting Started Using Amazon MSK.

Quando completi il tutorial, tieni presente quanto segue:

  • Nella Fase 3: creazione di un argomento, ripeti il comando kafka-topics.sh --create per creare un argomento di destinazione denominato AWSKafkaTutorialTopicDestination:

    bin/kafka-topics.sh --create --zookeeper ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestination
  • Registra l'elenco dei server di bootstrap per il cluster. È possibile ottenere l'elenco dei server di bootstrap con il seguente comando (replace). ClusterArn con il nome ARN del tuo MSK cluster):

    aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn ClusterArn {... "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094" }
  • Quando segui i passaggi dei tutorial, assicurati di utilizzare la AWS regione selezionata nel codice, nei comandi e nelle voci della console.

Crea il codice dell'applicazione

In questa sezione, scaricherete e compilerete il JAR file dell'applicazione. Consigliamo l'uso di Java 11.

Il codice dell'applicazione Java per questo esempio è disponibile da GitHub. Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Il codice dell'applicazione si trova nel file amazon-kinesis-data-analytics-java-examples/KafkaConnectors/KafkaGettingStartedJob.java. È possibile esaminare il codice per acquisire familiarità con la struttura del codice dell'applicazione del servizio gestito per Apache Flink.

  4. Usa lo strumento Maven da riga di comando o il tuo ambiente di sviluppo preferito per creare il file. JAR Per compilare il JAR file utilizzando lo strumento Maven da riga di comando, inserisci quanto segue:

    mvn package -Dflink.version=1.15.3

    Se la compilazione ha esito positivo, viene creato il file seguente:

    target/KafkaGettingStartedJob-1.0.jar
    Nota

    Il codice di origine fornito si basa sulle librerie di Java 11. Se utilizzi un ambiente di sviluppo,

Carica il codice Java di streaming Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nel tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Nota

Se il bucket Amazon S3 è stato eliminato dal tutorial Nozioni di base, segui nuovamente il passaggio Carica il JAR file di codice dell'applicazione.

  1. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  2. Nella fase Seleziona file, scegli Aggiungi file. Individua il file KafkaGettingStartedJob-1.0.jar creato nella fase precedente.

  3. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink. https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Runtime, scegli Apache Flink versione 1.15.2.

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci KafkaGettingStartedJob-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

    Nota

    Quando specifichi le risorse dell'applicazione utilizzando la console (come CloudWatch Logs o AmazonVPC), la console modifica il ruolo di esecuzione dell'applicazione per concedere l'autorizzazione all'accesso a tali risorse.

  4. In Proprietà, scegli Aggiungi gruppo. Inserisci le proprietà seguenti:

    ID gruppo Chiave Valore
    KafkaSource topic AWS KafkaTutorialTopic
    KafkaSource bootstrap.servers The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.password changeit
    Nota

    Il file ssl.truststore.password per il certificato predefinito è "changeit"; non è necessario modificare questo valore se si utilizza il certificato predefinito.

    Scegli nuovamente Aggiungi gruppo. Inserisci le proprietà seguenti:

    ID gruppo Chiave Valore
    KafkaSink topic AWS KafkaTutorialTopicDestination
    KafkaSink bootstrap.servers The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.password changeit
    KafkaSink transaction.timeout.ms 1000

    Il codice dell'applicazione legge le proprietà dell'applicazione sopra riportate per configurare l'origine e il sink utilizzati per interagire con il tuo MSK cluster VPC e Amazon. Per ulteriori informazioni sull'utilizzo delle proprietà, consulta Usa le proprietà di runtime.

  5. In Snapshot, scegli Disabilita. In questo modo sarà più semplice aggiornare l'applicazione senza caricare dati non validi sullo stato dell'applicazione.

  6. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  7. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  8. Nella sezione Virtual Private Cloud (VPC), scegliete VPC da associare alla vostra applicazione. Scegliete le sottoreti e il gruppo di sicurezza associati al vostro VPC che desiderate che l'applicazione utilizzi per accedere VPC alle risorse.

  9. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione.

Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo la dashboard di Apache Flink e scegliendo il processo Flink desiderato.

Eseguire il test dell'applicazione

In questa sezione, viene effettuata la scrittura di record sull'argomento di origine. L'applicazione legge i record dall'argomento di origine e li scrive nell'argomento di destinazione. Verifica che l'applicazione funzioni scrivendo record sull'argomento di origine e leggendo record dall'argomento di destinazione.

Per scrivere e leggere i record degli argomenti, segui i passaggi del Passaggio 6: Produzione e consumo di dati nel MSK tutorial Getting Started Using Amazon.

Per leggere dall'argomento di destinazione, usa il nome dell'argomento di destinazione anziché l'argomento di origine nella tua seconda connessione al cluster:

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning

Se non viene visualizzato alcun record nell'argomento di destinazione, consulta la sezione Impossibile accedere alle risorse in un VPC dell'argomento Risolvi i problemi relativi al servizio gestito per Apache Flink.

Esempio: utilizzare un EFO consumatore con un flusso di dati Kinesis

In questo esercizio, creerai un'applicazione Managed Service for Apache Flink che legge da un flusso di dati Kinesis utilizzando un consumer Enhanced Fan-Out (). EFO Se un utente utilizza KinesisEFO, il servizio Kinesis Data Streams gli fornisce la propria larghezza di banda dedicata, anziché chiedere al consumatore di condividere la larghezza di banda fissa dello stream con gli altri utenti che leggono dallo stream.

Per ulteriori informazioni sull'utilizzo EFO con il consumatore Kinesis, vedere FLIP-128: Enhanced Fan Out for Kinesis Consumers.

L'applicazione creata in questo esempio utilizza AWS Kinesis connector (flink-connector-kinesis) 1.15.3.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Crea risorse dipendenti

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream)

  • Un bucket Amazon S3 per archiviare il codice dell'applicazione (ka-app-code-<username>)

Puoi creare i flussi Kinesis e un bucket S3 utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

  • Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis. Assegna un nome al flusso di dati ExampleInputStream e ExampleOutputStream.

  • Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service. Assegna al bucket Amazon S3 un nome globalmente univoco aggiungendo il tuo nome di accesso, ad esempio ka-app-code-<username>.

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Java per questo esempio è disponibile da GitHub. Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/EfoConsumer.

Il codice dell'applicazione si trova nei file EfoApplication.java. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • È possibile abilitare il EFO consumatore impostando i seguenti parametri sul consumatore Kinesis:

    • RECORD_ PUBLISHER _TYPE: Imposta questo parametro in modo EFOche l'applicazione utilizzi un EFO consumatore per accedere ai dati di Kinesis Data Stream.

    • EFO_ CONSUMER _NAME: Imposta questo parametro su un valore di stringa che sia unico tra i consumatori di questo flusso. Il riutilizzo di un nome consumatore nello stesso flusso di dati Kinesis causerà l'interruzione del precedente consumatore che utilizzava quel nome.

  • Il seguente esempio di codice mostra come assegnare valori alle proprietà di configurazione del consumatore per utilizzare un EFO consumatore per leggere dal flusso di origine:

    consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO"); consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
Compila il codice dell'applicazione

Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Installa Java e Maven se non lo hai già fatto. Per ulteriori informazioni, consulta Completa i prerequisiti richiesti nel tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

  2. Compila l'applicazione con il seguente comando:

    mvn package -Dflink.version=1.15.3
    Nota

    Il codice di origine fornito si basa sulle librerie di Java 11.

La compilazione dell'applicazione crea il JAR file dell'applicazione ()target/aws-kinesis-analytics-java-apps-1.0.jar.

Caricate il codice Java di streaming Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

  1. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  2. Nella fase Seleziona file, scegli Aggiungi file. Individua il file aws-kinesis-analytics-java-apps-1.0.jar creato nella fase precedente.

  3. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

      Nota

      Il servizio gestito per Apache Flink utilizza Apache Flink versione 1.15.2.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    Nota

    Queste autorizzazioni garantiscono all'applicazione la possibilità di accedere al EFO consumatore.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*", "arn:aws:s3:::ka-app-code-<username>/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "AllStreams", "Effect": "Allow", "Action": [ "kinesis:ListShards", "kinesis:ListStreamConsumers", "kinesis:DescribeStreamSummary" ], "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/*" }, { "Sid": "Stream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:RegisterStreamConsumer", "kinesis:DeregisterStreamConsumer" ], "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" }, { "Sid": "Consumer", "Effect": "Allow", "Action": [ "kinesis:DescribeStreamConsumer", "kinesis:SubscribeToShard" ], "Resource": [ "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream/consumer/my-efo-flink-app", "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream/consumer/my-efo-flink-app:*" ] } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci aws-kinesis-analytics-java-apps-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, scegli Crea gruppo.

  5. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    ConsumerConfigProperties flink.stream.recordpublisher EFO
    ConsumerConfigProperties flink.stream.efo.consumername basic-efo-flink-app
    ConsumerConfigProperties INPUT_STREAM ExampleInputStream
    ConsumerConfigProperties flink.inputstream.initpos LATEST
    ConsumerConfigProperties AWS_REGION us-west-2
  6. In Proprietà, scegli Crea gruppo.

  7. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    ProducerConfigProperties OUTPUT_STREAM ExampleOutputStream
    ProducerConfigProperties AWS_REGION us-west-2
    ProducerConfigProperties AggregationEnabled false
  8. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  9. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  10. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione. Non si tratta dello stesso flusso di log utilizzato dall'applicazione per inviare i risultati.

Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Puoi controllare le metriche del servizio gestito per Apache Flink sulla CloudWatch console per verificare che l'applicazione funzioni.

Puoi anche controllare nella console Kinesis Data Streams, nella scheda fan-out Enhanced del flusso di dati, il nome del tuo consumatore (). basic-efo-flink-app

Pulisci le risorse AWS

Questa sezione include le procedure per pulire AWS le risorse create nel tutorial di efo Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Eliminazione del bucket e degli oggetti Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Quindi scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: scrittura su Firehose

In questo esercizio, creerai un'applicazione Managed Service for Apache Flink con un flusso di dati Kinesis come origine e un flusso Firehose come sink. Utilizzando il sink, puoi verificare l'output dell'applicazione in un bucket Amazon S3.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Crea risorse dipendenti

Prima di creare un servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Un flusso di dati Kinesis (ExampleInputStream)

  • Un flusso Firehose su cui l'applicazione scrive l'output ()ExampleDeliveryStream.

  • Un bucket Amazon S3 per archiviare il codice dell'applicazione (ka-app-code-<username>)

Puoi creare lo stream Kinesis, i bucket Amazon S3 e lo stream Firehose utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice Java per lo streaming di Apache Flink

Il codice dell'applicazione Java per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  2. Passa alla directory amazon-kinesis-data-analytics-java-examples/FirehoseSink.

Il codice dell'applicazione si trova nei file FirehoseSinkStreamingJob.java. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
  • L'applicazione utilizza un sink Firehose per scrivere dati su un flusso Firehose. Il seguente frammento crea il sink Firehose:

    private static KinesisFirehoseSink<String> createFirehoseSinkFromStaticConfig() { Properties sinkProperties = new Properties(); sinkProperties.setProperty(AWS_REGION, region); return KinesisFirehoseSink.<String>builder() .setFirehoseClientProperties(sinkProperties) .setSerializationSchema(new SimpleStringSchema()) .setDeliveryStreamName(outputDeliveryStreamName) .build(); }
Compila il codice dell'applicazione

Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito:

  1. Installa Java e Maven se non lo hai già fatto. Per ulteriori informazioni, consulta Completa i prerequisiti richiesti nel tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

  2. Per utilizzare il connettore Kinesis per la seguente applicazione, è necessario scaricare, creare e installare Apache Maven. Per ulteriori informazioni, consulta Utilizzo del connettore Apache Flink Kinesis Streams con versioni precedenti di Apache Flink.

  3. Compila l'applicazione con il seguente comando:

    mvn package -Dflink.version=1.15.3
    Nota

    Il codice di origine fornito si basa sulle librerie di Java 11.

La compilazione dell'applicazione crea il JAR file dell'applicazione ()target/aws-kinesis-analytics-java-apps-1.0.jar.

Caricate il codice Java di streaming Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

Per caricare il codice dell'applicazione
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nella console, scegli il ka-app-code -<username>bucket, quindi scegli Carica.

  3. Nella fase Seleziona file, scegli Aggiungi file. Individua il file java-getting-started-1.0.jar creato nella fase precedente.

  4. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

È possibile creare ed eseguire un'applicazione del servizio gestito per Apache Flink utilizzando la console o la AWS CLI.

Nota

Quando crei l'applicazione utilizzando la console, le tue risorse AWS Identity and Access Management (IAM) e Amazon CloudWatch Logs vengono create automaticamente. Quando crei l'applicazione utilizzando AWS CLI, crei queste risorse separatamente.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My java test app.

    • Per Runtime, scegli Apache Flink.

      Nota

      Il servizio gestito per Apache Flink utilizza Apache Flink versione 1.15.2.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei l'applicazione utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome dell'applicazione e la regione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Modifica la IAM politica

Modifica la IAM policy per aggiungere le autorizzazioni per accedere al flusso di dati Kinesis e allo stream Firehose.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci tutte le istanze dell'account IDs di esempio (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/java-getting-started-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteDeliveryStream", "Effect": "Allow", "Action": "firehose:*", "Resource": "arn:aws:firehose:us-west-2:012345678901:deliverystream/ExampleDeliveryStream" } ] }
Configura l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci java-getting-started-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  5. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  6. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Arresta l'applicazione

Nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Aggiornamento dell'applicazione

Utilizzando la console, è possibile aggiornare le impostazioni dell'applicazione, come le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome del file dell'applicazioneJAR.

Nella MyApplicationpagina, scegli Configura. Aggiorna le impostazioni dell'applicazione e scegli Aggiorna.

Nota

Per aggiornare il codice dell'applicazione sulla console, devi modificare il nome dell'oggettoJAR, utilizzare un bucket S3 diverso o utilizzare il AWS CLI come descritto nella Aggiornamento del codice dell'applicazione sezione. Se il nome del file o il bucket non cambiano, il codice dell'applicazione non viene ricaricato quando scegli Aggiorna nella pagina Configura.

Crea ed esegui l'applicazione ()AWS CLI

In questa sezione, si utilizza AWS CLI per creare ed eseguire l'applicazione Managed Service for Apache Flink.

Creazione di una policy di autorizzazione

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione read sul flusso di origine e un'altra che concede le autorizzazioni per operazioni write sul flusso di sink. Quindi alleghi la politica a un IAM ruolo (che creerai nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Replace (Sostituisci) username con il nome utente che utilizzerai per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-username", "arn:aws:s3:::ka-app-code-username/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteDeliveryStream", "Effect": "Allow", "Action": "firehose:*", "Resource": "arn:aws:firehose:us-west-2:012345678901:deliverystream/ExampleDeliveryStream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Nota

Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK for Java. Managed Service for Apache Flink imposta automaticamente le credenziali richieste da SDK a quelle del IAM ruolo di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione ad assumere questo ruolo. La policy di autorizzazione determina cosa può fare il servizio gestito per Apache Flink dopo aver assunto il ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Ruoli, quindi Crea nuovo ruolo.

  3. In Seleziona tipo di identità attendibile, scegli Servizio AWS . In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis. In Seleziona il tuo caso d'uso, scegli Analisi dei dati Kinesis.

    Scegli Successivo: Autorizzazioni.

  4. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  5. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

  6. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la AKReadSourceStreamWriteSinkStreampolitica e scegli Allega politica.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Crea l'applicazione Managed Service for Apache Flink
  1. Salva il JSON codice seguente in un file denominato. create_request.json Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo creato in precedenza. Sostituisci il ARN suffisso del bucket con il suffisso che hai scelto nella Crea risorse dipendenti sezione (.) ka-app-code-<username> Sostituisci l'ID dell'account di esempio (012345678901) nel ruolo di esecuzione del servizio con l'ID dell'account.

    { "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "java-getting-started-1.0.jar" } }, "CodeContentType": "ZIPFILE" } } } }
  2. Esegui l'operazione CreateApplication con la richiesta precedente per creare l'applicazione:

    aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avviare l'applicazione

In questa sezione, viene utilizzata l'operazione StartApplication per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostart_request.json.

    { "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Arresta l'applicazione

In questa sezione, viene utilizzata l'operazione StopApplication per interrompere l'applicazione.

Per interrompere l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostop_request.json.

    { "ApplicationName": "test" }
  2. Esegui l'operazione StopApplication con la seguente richiesta di interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungere un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consultaConfigurare la registrazione delle applicazioni in Managed Service per Apache Flink.

Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplication AWS CLI azione.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<usernameAggiorna il suffisso del nome del bucket () con il Crea risorse dipendenti suffisso che hai scelto nella sezione.

{ "ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Pulizia delle risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Getting Started.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink su /flink https://console.aws.amazon.com

  2. Nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Scegli Configura.

  4. Nella sezione Snapshot, scegli Disabilita, quindi scegli Aggiorna.

  5. Nella pagina dell'applicazione, scegli Elimina e conferma l'eliminazione.

Eliminare il flusso di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

Eliminare lo stream Firehose
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Firehose, scegliete. ExampleDeliveryStream

  3. Nella ExampleDeliveryStreampagina, scegliete Delete Firehose stream e confermate l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

  4. Se hai creato un bucket Amazon S3 per la destinazione del tuo stream Firehose, elimina anche quel bucket.

Elimina le tue risorse IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Se hai creato una nuova policy per il tuo stream Firehose, elimina anche quella policy.

  7. Nella barra di navigazione, scegli Ruoli.

  8. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  9. Quindi scegli Elimina ruolo e conferma l'eliminazione.

  10. Se hai creato un nuovo ruolo per il tuo stream Firehose, elimina anche quel ruolo.

Elimina le tue risorse CloudWatch
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: lettura da uno stream Kinesis in un altro account

Questo esempio dimostra come creare un'applicazione del servizio gestito per Apache Flink che legge i dati da un flusso Kinesis in un account diverso. In questo esempio, vengono utilizzati un account per il flusso Kinesis di origine e un secondo account per l'applicazione del servizio gestito per Apache Flink e il sink del flusso Kinesis.

Prerequisiti
  • In questo tutorial, viene modificato l'esempio delle Nozioni di base per leggere i dati da un flusso Kinesis in un altro account. Completa il tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API prima di procedere.

  • Sono necessari due AWS account per completare questo tutorial: uno per il flusso di origine e uno per l'applicazione e il sink stream. Usa l' AWS account che hai usato per il tutorial Getting Started per l'applicazione e il sink stream. Utilizza un account AWS diverso per il flusso di origine.

Installazione

Accederai ai tuoi due AWS account utilizzando profili denominati. Modifica AWS le credenziali e i file di configurazione per includere due profili che contengono la regione e le informazioni di connessione per i due account.

Il seguente file di credenziali di esempio contiene due profili denominati, ka-source-stream-account-profile e ka-sink-stream-account-profile. Per l'account del flusso di sink, utilizza l'account che hai usato per il tutorial Nozioni di base.

[ka-source-stream-account-profile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [ka-sink-stream-account-profile] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

Il seguente file di configurazione di esempio contiene gli stessi profili denominati con le informazioni sulla regione e sul formato di output.

[profile ka-source-stream-account-profile] region=us-west-2 output=json [profile ka-sink-stream-account-profile] region=us-west-2 output=json
Nota

Questo tutorial non utilizza il profilo ka-sink-stream-account-profile. È incluso come esempio di come accedere a due AWS account diversi utilizzando i profili.

Per ulteriori informazioni sull'utilizzo di profili denominati con AWS CLI, consulta Named Profiles nella AWS Command Line Interfacedocumentazione.

Crea un flusso Kinesis sorgente

In questa sezione, viene creato il flusso Kinesis nell'account di origine.

Inserisci il comando seguente per creare il flusso Kinesis che l'applicazione utilizzerà come input. Tieni presente che il parametro --profile specifica il profilo dell'account da utilizzare.

$ aws kinesis create-stream \ --stream-name SourceAccountExampleInputStream \ --shard-count 1 \ --profile ka-source-stream-account-profile
Crea e aggiorna IAM ruoli e politiche

Per consentire l'accesso agli oggetti tra AWS account, crei un IAM ruolo e una policy nell'account di origine. Quindi, modifichi la IAM politica nell'account sink. Per informazioni sulla creazione di IAM ruoli e politiche, consulta i seguenti argomenti nella Guida per l'AWS Identity and Access Management utente:

Ruoli e politiche degli account Sink
  1. Modifica la policy kinesis-analytics-service-MyApplication-us-west-2 dal tutorial Nozioni di base. Questa policy consente di assumere il ruolo nell'account di origine per leggere il flusso di origine.

    Nota

    Quando si utilizza la console per creare l'applicazione, la console crea una policy denominata kinesis-analytics-service-<application name>-<application region> e un ruolo denominato kinesisanalytics-<application name>-<application region>.

    Aggiungi alla policy la sezione evidenziata di seguito. Sostituisci l'ID dell'account di esempio (SOURCE01234567) con l'ID dell'account che utilizzerai per lo stream sorgente.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AssumeRoleInSourceAccount", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role" }, { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] } ] }
  2. Apri il kinesis-analytics-MyApplication-us-west-2 ruolo e prendi nota del relativo Amazon Resource Name (ARN). Lo utilizzerai nella sezione successiva. Il ruolo ARN è simile al seguente.

    arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2
Ruoli e politiche dell'account di origine
  1. Crea una policy nell'account di origine denominato KA-Source-Stream-Policy. Utilizza quanto segue JSON per la politica. Sostituisci il numero di account di esempio con il numero dell'account di origine.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadInputStream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-west-2:SOURCE123456784:stream/SourceAccountExampleInputStream" } ] }
  2. Crea un ruolo nell'account di origine denominato MF-Source-Stream-Role. Esegui le seguenti operazioni per creare il ruolo utilizzando il caso d'uso Flink gestito:

    1. Nella console IAM di gestione, scegli Crea ruolo.

    2. Nella pagina Crea ruolo, scegli Servizio AWS . Nell'elenco dei servizi, scegli Kinesis.

    3. Nella sezione Seleziona il tuo caso d'uso, scegli Servizio gestito per Apache Flink.

    4. Scegli Successivo: autorizzazioni.

    5. Aggiungi la policy di autorizzazione KA-Source-Stream-Policy che hai creato nel passaggio precedente effettuando le seguenti operazioni: Scegli Successivo: Tag.

    6. Seleziona Successivo: Rivedi.

    7. Denomina il ruolo KA-Source-Stream-Role. L'applicazione utilizzerà questo ruolo per accedere al flusso di origine.

  3. Aggiungi l'account kinesis-analytics-MyApplication-us-west-2 ARN from the sink alla relazione di fiducia del KA-Source-Stream-Role ruolo nell'account di origine:

    1. Apri il file KA-Source-Stream-Role nella IAM console.

    2. Scegli la scheda Relazioni di attendibilità.

    3. Seleziona Modifica relazione di attendibilità.

    4. Utilizza il codice seguente per la relazione di attendibilità. Sostituisci l'ID dell'account di esempio (SINK012345678) con l'ID del tuo account sink.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::SINK012345678:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }
Aggiornare lo script Python

In questa sezione, viene aggiornato lo script Python che genera dati di esempio ai fini dell'utilizzo del profilo dell'account di origine.

Aggiorna lo script stock.py con le seguenti modifiche evidenziate.

import json import boto3 import random import datetime import os os.environ['AWS_PROFILE'] ='ka-source-stream-account-profile' os.environ['AWS_DEFAULT_REGION'] = 'us-west-2' kinesis = boto3.client('kinesis') def getReferrer(): data = {} now = datetime.datetime.now() str_now = now.isoformat() data['event_time'] = str_now data['ticker'] = random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']) price = random.random() * 100 data['price'] = round(price, 2) return data while True: data = json.dumps(getReferrer()) print(data) kinesis.put_record( StreamName="SourceAccountExampleInputStream", Data=data, PartitionKey="partitionkey")
Aggiornate l'applicazione Java

In questa sezione, viene aggiornato il codice dell'applicazione Java in modo che assuma il ruolo dell'account di origine durante la lettura dal flusso di origine.

Apporta le modifiche seguenti al file BasicStreamingJob.java. Sostituisci il numero di account sorgente di esempio (SOURCE01234567) con il numero di conto di origine.

package com.amazonaws.services.managed-flink; import com.amazonaws.services.managed-flink.runtime.KinesisAnalyticsRuntime; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisProducer; import org.apache.flink.streaming.connectors.kinesis.config.ConsumerConfigConstants; import org.apache.flink.streaming.connectors.kinesis.config.AWSConfigConstants; import java.io.IOException; import java.util.Map; import java.util.Properties; /** * A basic Managed Service for Apache Flink for Java application with Kinesis data streams * as source and sink. */ public class BasicStreamingJob { private static final String region = "us-west-2"; private static final String inputStreamName = "SourceAccountExampleInputStream"; private static final String outputStreamName = ExampleOutputStream; private static final String roleArn = "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role"; private static final String roleSessionName = "ksassumedrolesession"; private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) { Properties inputProperties = new Properties(); inputProperties.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER, "ASSUME_ROLE"); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_ARN, roleArn); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME, roleSessionName); inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region); inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST"); return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties)); } private static KinesisStreamsSink<String> createSinkFromStaticConfig() { Properties outputProperties = new Properties(); outputProperties.setProperty(AWSConfigConstants.AWS_REGION, region); return KinesisStreamsSink.<String>builder() .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema()) .setStreamName(outputProperties.getProperty("OUTPUT_STREAM", "ExampleOutputStream")) .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode())) .build(); } public static void main(String[] args) throws Exception { // set up the streaming execution environment final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> input = createSourceFromStaticConfig(env); input.addSink(createSinkFromStaticConfig()); env.execute("Flink Streaming Java API Skeleton"); } }
Crea, carica ed esegui l'applicazione

Effettua le seguenti operazioni per aggiornare ed eseguire l'applicazione:

  1. Crea nuovamente l'applicazione eseguendo il seguente comando nella directory con il file pom.xml.

    mvn package -Dflink.version=1.15.3
  2. Elimina il JAR file precedente dal bucket Amazon Simple Storage Service (Amazon S3), quindi carica il aws-kinesis-analytics-java-apps-1.0.jar nuovo file nel bucket S3.

  3. Nella pagina dell'applicazione nella console Managed Service for Apache Flink, scegli Configura, Aggiorna per ricaricare il file dell'applicazione. JAR

  4. Esegui lo script stock.py per inviare i dati al flusso di origine.

    python stock.py

L'applicazione ora legge i dati dal flusso Kinesis nell'altro account.

Per verificare che l'applicazione funzioni, puoi controllare il parametro PutRecords.Bytes del flusso ExampleOutputStream. Se c'è attività nel flusso di output, l'applicazione funziona correttamente.

Tutorial: utilizzo di un truststore personalizzato con Amazon MSK

Fonte di dati attuale APIs

Se utilizzi l'attuale fonte di datiAPIs, la tua applicazione può sfruttare l'utilità Amazon MSK Config Providers descritta qui. Ciò consente alla KafkaSource funzione di accedere al keystore e al truststore in modo reciproco TLS in Amazon S3.

... // define names of config providers: builder.setProperty("config.providers", "secretsmanager,s3import"); // provide implementation classes for each provider: builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider"); builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider"); String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString(); String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString(); String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString(); String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString(); String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString(); String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString(); String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString(); // region, etc.. builder.setProperty("config.providers.s3import.param.region", region); // properties builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}"); builder.setProperty("ssl.keystore.type", "PKCS12"); builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}"); builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); ...

Maggiori informazioni e una procedura dettagliata sono disponibili qui.

Eredità SourceFunction APIs

Se si utilizza la versione precedente SourceFunction APIs, l'applicazione utilizzerà schemi di serializzazione e deserializzazione personalizzati che sostituiscono il open metodo per caricare il truststore personalizzato. Ciò rende il truststore disponibile per l'applicazione dopo il riavvio dell'applicazione o la sostituzione dei thread.

Il truststore personalizzato viene recuperato e archiviato utilizzando il seguente codice:

public static void initializeKafkaTruststore() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL inputUrl = classLoader.getResource("kafka.client.truststore.jks"); File dest = new File("/tmp/kafka.client.truststore.jks"); try { FileUtils.copyURLToFile(inputUrl, dest); } catch (Exception ex) { throw new FlinkRuntimeException("Failed to initialize Kakfa truststore", ex); } }
Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Il seguente tutorial illustra come connettersi in modo sicuro (crittografia in transito) a un cluster Kafka che utilizza certificati server emessi da un'autorità di certificazione (CA) personalizzata, privata o addirittura ospitata autonomamente.

Per connettere in modo sicuro qualsiasi client Kafka TLS a un cluster Kafka, il client Kafka (come l'applicazione Flink di esempio) deve fidarsi della catena di fiducia completa presentata dai certificati del server del cluster Kafka (dalla CA emittente fino alla CA di livello root). Come esempio per un truststore personalizzato, utilizzeremo un MSK cluster Amazon con l'autenticazione reciproca TLS (MTLS) abilitata. Ciò implica che i nodi del MSK cluster utilizzano certificati server emessi da una AWS Certificate Manager Private Certificate Authority (CA ACM privata) che è privata per l'account e la regione dell'utente e pertanto non considerata attendibile dal truststore predefinito della Java Virtual Machine (JVM) che esegue l'applicazione Flink.

Nota
  • Un keystore viene utilizzato per archiviare chiavi private e certificati di identità che un'applicazione deve presentare al server o al client per la verifica.

  • Un truststore viene utilizzato per archiviare i certificati delle Autorità Certificate (CA) che verificano il certificato presentato dal server in una SSL connessione.

È possibile utilizzare la tecnica illustrata in questo tutorial anche per le interazioni tra un'applicazione del servizio gestito per Apache Flink e altre origini Apache Kafka, tra cui:

Crea un VPC con un MSK cluster Amazon

Per creare un campione VPC e un MSK cluster Amazon a cui accedere da un'applicazione Managed Service for Apache Flink, segui il tutorial Getting Started Using Amazon MSK.

Quando completi il tutorial, esegui anche le operazioni seguenti:

  • Nella Fase 3: creazione di un argomento, ripeti il comando kafka-topics.sh --create per creare un argomento di destinazione denominato AWS KafkaTutorialTopicDestination:

    bin/kafka-topics.sh --create --bootstrap-server ZooKeeperConnectionString --replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestination
    Nota

    Se il comando kafka-topics.sh restituisce una ZooKeeperClientTimeoutException, verifica che il gruppo di sicurezza del cluster Kafka disponga di una regola in entrata per consentire tutto il traffico proveniente dall'indirizzo IP privato dell'istanza client.

  • Registra l'elenco dei server di bootstrap per il cluster. È possibile ottenere l'elenco dei server di bootstrap con il seguente comando (replace). ClusterArn con il nome ARN del tuo MSK cluster):

    aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn ClusterArn {... "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094" }
  • Quando segui i passaggi di questo tutorial e i tutorial prerequisiti, assicurati di utilizzare la AWS regione selezionata nel codice, nei comandi e nelle voci della console.

Crea un truststore personalizzato e applicalo al tuo cluster

In questa sezione, crei un'autorità di certificazione (CA) personalizzata, la usi per generare un truststore personalizzato e la applichi al tuo MSK cluster.

Per creare e applicare un truststore personalizzato, segui il tutorial Autenticazione client nella Guida per gli sviluppatori di Streaming gestito da Amazon per Apache Kafka.

Crea il codice dell'applicazione

In questa sezione, si scarica e si compila il JAR file dell'applicazione.

Il codice dell'applicazione Java per questo esempio è disponibile da GitHub. Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Il codice dell'applicazione si trova in amazon-kinesis-data-analytics-java-examples/CustomKeystore. È possibile esaminare il codice per acquisire familiarità con la struttura del codice del servizio gestito per Apache Flink.

  4. Usa lo strumento Maven a riga di comando o il tuo ambiente di sviluppo preferito per creare il JAR file. Per compilare il JAR file utilizzando lo strumento Maven a riga di comando, inserisci quanto segue:

    mvn package -Dflink.version=1.15.3

    Se la compilazione ha esito positivo, viene creato il file seguente:

    target/flink-app-1.0-SNAPSHOT.jar
    Nota

    Il codice di origine fornito si basa sulle librerie di Java 11.

Carica il codice Java di streaming Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nel tutorial Tutorial: inizia a usare Managed Service for Apache Flink DataStream API.

Nota

Se il bucket Amazon S3 è stato eliminato dal tutorial Nozioni di base, segui nuovamente il passaggio Carica il JAR file di codice dell'applicazione.

  1. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  2. Nella fase Seleziona file, scegli Aggiungi file. Individua il file flink-app-1.0-SNAPSHOT.jar creato nella fase precedente.

  3. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Runtime, scegli Apache Flink versione 1.15.2.

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci flink-app-1.0-SNAPSHOT.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

    Nota

    Quando specifichi le risorse dell'applicazione utilizzando la console (ad esempio log o aVPC), la console modifica il ruolo di esecuzione dell'applicazione per concedere l'autorizzazione all'accesso a tali risorse.

  4. In Proprietà, scegli Aggiungi gruppo. Inserisci le proprietà seguenti:

    ID gruppo Chiave Valore
    KafkaSource topic AWS KafkaTutorialTopic
    KafkaSource bootstrap.servers The bootstrap server list you saved previously
    KafkaSource security.protocol SSL
    KafkaSource ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSource ssl.truststore.password changeit
    Nota

    Il file ssl.truststore.password per il certificato predefinito è "changeit"; non è necessario modificare questo valore se si utilizza il certificato predefinito.

    Scegli nuovamente Aggiungi gruppo. Inserisci le proprietà seguenti:

    ID gruppo Chiave Valore
    KafkaSink topic AWS KafkaTutorialTopicDestination
    KafkaSink bootstrap.servers The bootstrap server list you saved previously
    KafkaSink security.protocol SSL
    KafkaSink ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts
    KafkaSink ssl.truststore.password changeit
    KafkaSink transaction.timeout.ms 1000

    Il codice dell'applicazione legge le proprietà dell'applicazione sopra riportate per configurare l'origine e il sink utilizzati per interagire con il tuo MSK cluster VPC e Amazon. Per ulteriori informazioni sull'utilizzo delle proprietà, consulta Usa le proprietà di runtime.

  5. In Snapshot, scegli Disabilita. In questo modo sarà più semplice aggiornare l'applicazione senza caricare dati non validi sullo stato dell'applicazione.

  6. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  7. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  8. Nella sezione Virtual Private Cloud (VPC), scegliete VPC da associare alla vostra applicazione. Scegliete le sottoreti e il gruppo di sicurezza associati al vostro VPC che desiderate che l'applicazione utilizzi per accedere VPC alle risorse.

  9. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione.

Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo la dashboard di Apache Flink e scegliendo il processo Flink desiderato.

Eseguire il test dell'applicazione

In questa sezione, viene effettuata la scrittura di record sull'argomento di origine. L'applicazione legge i record dall'argomento di origine e li scrive nell'argomento di destinazione. Verifica che l'applicazione funzioni scrivendo record sull'argomento di origine e leggendo record dall'argomento di destinazione.

Per scrivere e leggere i record degli argomenti, segui i passaggi del Passaggio 6: Produzione e consumo di dati nel MSK tutorial Getting Started Using Amazon.

Per leggere dall'argomento di destinazione, usa il nome dell'argomento di destinazione anziché l'argomento di origine nella tua seconda connessione al cluster:

bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerString --consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning

Se non viene visualizzato alcun record nell'argomento di destinazione, consulta la sezione Impossibile accedere alle risorse in un VPC dell'argomento Risolvi i problemi relativi al servizio gestito per Apache Flink.

Esempi di Python

I seguenti esempi mostrano come creare applicazioni usando Python con la tabella Apache Flink. API

Esempio: creazione di una finestra girevole in Python

In questo esercizio, viene creata un'applicazione Python del servizio gestito per Apache Flink che aggrega dati utilizzando una finestra a cascata.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Tutorial: Inizia a usare Python in Managed Service for Apache Flink.

Crea risorse dipendenti

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream)

  • Un bucket Amazon S3 per archiviare il codice dell'applicazione (ka-app-code-<username>)

Puoi creare i flussi Kinesis e un bucket S3 utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

  • Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis. Assegna un nome ai flussi di dati ExampleInputStream e ExampleOutputStream.

  • Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service. Assegna al bucket Amazon S3 un nome globalmente univoco aggiungendo il tuo nome di accesso, ad esempio ka-app-code-<username>.

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

Nota

Lo script Python in questa sezione utilizza la AWS CLI. È necessario configurare AWS CLI per utilizzare le credenziali dell'account e la regione predefinita. Per configurare la tua AWS CLI, inserisci quanto segue:

aws configure
  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Python per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/python/TumblingWindow.

Il codice dell'applicazione si trova nei file tumbling-windows.py. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • L'applicazione utilizza un'origine della tabella Kinesis per leggere dal flusso di origine. Il seguente snippet richiama la funzione create_table per creare l'origine della tabella Kinesis:

    table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )

    La create_table funzione utilizza un SQL comando per creare una tabella supportata dalla sorgente di streaming:

    def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos)
  • L'applicazione utilizza l'operatore Tumble per aggregare i record all'interno di una finestra a cascata specificata e per restituire i record aggregati come oggetto tabella:

    tumbling_window_table = ( input_table.window( Tumble.over("10.seconds").on("event_time").alias("ten_second_window") ) .group_by("ticker, ten_second_window") .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time")
  • L'applicazione utilizza il connettore Kinesis Flink, dal flink-sql-connector-kinesis-1.15.2.jar.

Comprimi e carica il codice Python in streaming di Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

  1. Utilizza l'applicazione di compressione che preferisci per comprimere i file tumbling-windows.py e flink-sql-connector-kinesis-1.15.2.jar. Assegna un nome all'archivio myapp.zip.

  2. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  3. Nella fase Seleziona file, scegli Aggiungi file. Individua il file myapp.zip creato nella fase precedente.

  4. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

      Nota

      Il servizio gestito per Apache Flink utilizza Apache Flink versione 1.15.2.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci myapp.zip

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, scegli Aggiungi gruppo.

  5. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Seleziona Salva.

  6. In Proprietà, scegli di nuovo Aggiungi gruppo.

  7. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. In Proprietà, scegli nuovamente Aggiungi gruppo. In Nome del gruppo, inserisci kinesis.analytics.flink.run.options. Questo speciale gruppo di proprietà indica all'applicazione dove trovare le relative risorse di codice. Per ulteriori informazioni, consulta Specificate i vostri file di codice.

  9. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    kinesis.analytics.flink.run.options python tumbling-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis-1.15.2.jar
  10. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  11. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  12. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione. Non si tratta dello stesso flusso di log utilizzato dall'applicazione per inviare i risultati.

Modifica la politica IAM

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*", "arn:aws:s3:::ka-app-code-<username>/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Puoi controllare le metriche del servizio gestito per Apache Flink sulla CloudWatch console per verificare che l'applicazione funzioni.

Pulisci le risorse AWS

Questa sezione include le procedure per ripulire AWS le risorse create nel tutorial di Tumbling Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink su /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: creazione di una finestra scorrevole in Python

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio Tutorial: Inizia a usare Python in Managed Service for Apache Flink.

Crea risorse dipendenti

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Due flussi di dati Kinesis (ExampleInputStream e ExampleOutputStream)

  • Un bucket Amazon S3 per archiviare il codice dell'applicazione (ka-app-code-<username>)

Puoi creare i flussi Kinesis e un bucket S3 utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

  • Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis. Assegna un nome ai flussi di dati ExampleInputStream e ExampleOutputStream.

  • Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service. Assegna al bucket Amazon S3 un nome globalmente univoco aggiungendo il tuo nome di accesso, ad esempio ka-app-code-<username>.

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

Nota

Lo script Python in questa sezione utilizza la AWS CLI. È necessario configurare AWS CLI per utilizzare le credenziali dell'account e la regione predefinita. Per configurare la tua AWS CLI, inserisci quanto segue:

aws configure
  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Python per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/python/SlidingWindow.

Il codice dell'applicazione si trova nei file sliding-windows.py. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • L'applicazione utilizza un'origine della tabella Kinesis per leggere dal flusso di origine. Il seguente snippet richiama la funzione create_input_table per creare l'origine della tabella Kinesis:

    table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )

    La create_input_table funzione utilizza un SQL comando per creare una tabella supportata dalla sorgente di streaming:

    def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos) }
  • L'applicazione utilizza l'operatore Slide per aggregare i record all'interno di una finestra scorrevole specificata e per restituire i record aggregati come oggetto tabella:

    sliding_window_table = ( input_table .window( Slide.over("10.seconds") .every("5.seconds") .on("event_time") .alias("ten_second_window") ) .group_by("ticker, ten_second_window") .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time") )
  • L'applicazione utilizza il connettore Kinesis Flink, dal file -1.15.2.jar. flink-sql-connector-kinesis

Comprimi e carica il codice Python in streaming di Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

Questa sezione descrive come creare il pacchetto di un'applicazione Python.

  1. Utilizza l'applicazione di compressione che preferisci per comprimere i file sliding-windows.py e flink-sql-connector-kinesis-1.15.2.jar. Assegna un nome all'archivio myapp.zip.

  2. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  3. Nella fase Seleziona file, scegli Aggiungi file. Individua il file myapp.zip creato nella fase precedente.

  4. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

      Nota

      Il servizio gestito per Apache Flink utilizza Apache Flink versione 1.15.2.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci myapp.zip

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, scegli Aggiungi gruppo.

  5. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Seleziona Salva.

  6. In Proprietà, scegli nuovamente Aggiungi gruppo.

  7. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    producer.config.0 output.stream.name ExampleOutputStream
    producer.config.0 aws.region us-west-2
    producer.config.0 shard.count 1
  8. In Proprietà, scegli nuovamente Aggiungi gruppo. In Nome del gruppo, inserisci kinesis.analytics.flink.run.options. Questo speciale gruppo di proprietà indica all'applicazione dove trovare le relative risorse di codice. Per ulteriori informazioni, consulta Specificate i vostri file di codice.

  9. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    kinesis.analytics.flink.run.options python sliding-windows.py
    kinesis.analytics.flink.run.options jarfile flink-sql-connector-kinesis_1.15.2.jar
  10. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  11. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  12. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione. Non si tratta dello stesso flusso di log utilizzato dall'applicazione per inviare i risultati.

Modifica la politica IAM

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*", "arn:aws:s3:::ka-app-code-<username>/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Puoi controllare le metriche del servizio gestito per Apache Flink sulla CloudWatch console per verificare che l'applicazione funzioni.

Pulisci le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink su /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: invio di dati di streaming ad Amazon S3 in Python

In questo esercizio, viene creata un'applicazione Python del servizio gestito per Apache Flink che trasmette i dati a un sink Amazon Simple Storage Service.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Tutorial: Inizia a usare Python in Managed Service for Apache Flink.

Crea risorse dipendenti

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti:

  • Un flusso di dati Kinesis (ExampleInputStream)

  • Un bucket Amazon S3 per archiviare il codice e l'output dell'applicazione (ka-app-code-<username>)

Nota

Il servizio gestito per Apache Flink non può scrivere dati su Amazon S3 con la crittografia lato server abilitata sul servizio gestito per Apache Flink.

Puoi creare il flusso Kinesis e il bucket Amazon S3 utilizzando la console. Per istruzioni sulla creazione di queste risorse, consulta i seguenti argomenti:

  • Creazione e aggiornamento dei flussi di dati nella Guida per gli sviluppatori del flusso di dati Amazon Kinesis. Assegna un nome al flusso di dati ExampleInputStream.

  • Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service. Assegna al bucket Amazon S3 un nome globalmente univoco aggiungendo il tuo nome di accesso, ad esempio ka-app-code-<username>.

Scrivi record di esempio nel flusso di input

In questa sezione, viene utilizzato uno script Python per scrivere record di esempio nel flusso per l'applicazione da elaborare.

Nota

Questa sezione richiede AWS SDK for Python (Boto).

Nota

Lo script Python in questa sezione utilizza la AWS CLI. È necessario configurare AWS CLI per utilizzare le credenziali dell'account e la regione predefinita. Per configurare la tua AWS CLI, inserisci quanto segue:

aws configure
  1. Crea un file denominato stock.py con i seguenti contenuti:

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  2. Esegui lo script stock.py:

    $ python stock.py

    Mantieni lo script in esecuzione mentre completi il resto del tutorial.

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Python per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/python/S3Sink.

Il codice dell'applicazione si trova nei file streaming-file-sink.py. Tieni presente quanto segue riguardo al codice dell'applicazione:

  • L'applicazione utilizza un'origine della tabella Kinesis per leggere dal flusso di origine. Il seguente snippet richiama la funzione create_source_table per creare l'origine della tabella Kinesis:

    table_env.execute_sql( create_source_table(input_table_name, input_stream, input_region, stream_initpos) )

    La create_source_table funzione utilizza un SQL comando per creare una tabella supportata dalla sorgente di streaming

    import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
  • L'applicazione utilizza il connettore filesystem per inviare i record a un bucket Amazon S3:

    def create_sink_table(table_name, bucket_name): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time VARCHAR(64) ) PARTITIONED BY (ticker) WITH ( 'connector'='filesystem', 'path'='s3a://{1}/', 'format'='json', 'sink.partition-commit.policy.kind'='success-file', 'sink.partition-commit.delay' = '1 min' ) """.format(table_name, bucket_name)
  • L'applicazione utilizza il connettore Kinesis Flink, dal file -1.15.2.jar. flink-sql-connector-kinesis

Comprimi e carica il codice Python in streaming di Apache Flink

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione Crea risorse dipendenti.

  1. Usa la tua applicazione di compressione preferita per comprimere i file e -1.15.2.jar. streaming-file-sink.py flink-sql-connector-kinesis Assegna un nome all'archivio myapp.zip.

  2. Nella console Amazon S3, scegli il - ka-app-code<username>bucket e scegli Upload.

  3. Nella fase Seleziona file, scegli Aggiungi file. Individua il file myapp.zip creato nella fase precedente.

  4. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione Managed Service for Apache Flink

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, inserisci MyApplication.

    • Per Runtime, scegli Apache Flink.

      Nota

      Il servizio gestito per Apache Flink utilizza Apache Flink versione 1.15.2.

    • Lascia il menu a discesa di Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci myapp.zip

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, scegli Aggiungi gruppo.

  5. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    consumer.config.0 input.stream.name ExampleInputStream
    consumer.config.0 aws.region us-west-2
    consumer.config.0 scan.stream.initpos LATEST

    Seleziona Salva.

  6. In Proprietà, scegli nuovamente Aggiungi gruppo. In Nome del gruppo, inserisci kinesis.analytics.flink.run.options. Questo speciale gruppo di proprietà indica all'applicazione dove trovare le relative risorse di codice. Per ulteriori informazioni, consulta Specificate i vostri file di codice.

  7. Immetti i valori e le proprietà dell'applicazione seguenti:

    ID gruppo Chiave Valore
    kinesis.analytics.flink.run.options python streaming-file-sink.py
    kinesis.analytics.flink.run.options jarfile S3Sink/lib/flink-sql-connector-kinesis-1.15.2.jar
  8. In Proprietà, scegli nuovamente Aggiungi gruppo. In Nome del gruppo, inserisci sink.config.0. Questo speciale gruppo di proprietà indica all'applicazione dove trovare le relative risorse di codice. Per ulteriori informazioni, consulta Specificate i vostri file di codice.

  9. Immettete le seguenti proprietà e valori dell'applicazione: (sostituisci bucket-name con il nome effettivo del tuo bucket Amazon S3.)

    ID gruppo Chiave Valore
    sink.config.0 output.bucket.name bucket-name
  10. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  11. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  12. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Questo flusso di log viene utilizzato per monitorare l'applicazione. Non si tratta dello stesso flusso di log utilizzato dall'applicazione per inviare i risultati.

Modifica la politica IAM

Modifica la IAM policy per aggiungere le autorizzazioni per accedere ai flussi di dati Kinesis.

  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*", "arn:aws:s3:::ka-app-code-<username>/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteObjects", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] } ] }
Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Puoi controllare le metriche del servizio gestito per Apache Flink sulla CloudWatch console per verificare che l'applicazione funzioni.

Pulisci le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink su /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e conferma l'eliminazione.

Eliminare il flusso di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

Elimina oggetti e bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempi di Scala

Negli esempi seguenti viene illustrato come creare applicazioni utilizzando Scala con Apache Flink.

Esempio: creazione di una finestra ribaltabile in Scala

Nota

A partire dalla versione 1.15, Flink non supporta più Scala. Le applicazioni possono ora utilizzare Java API da qualsiasi versione di Scala. Flink utilizza ancora Scala internamente in alcuni componenti chiave, ma non espone Scala nel classloader del codice utente. Per questo motivo, gli utenti devono aggiungere le dipendenze di Scala nei propri archivi jar.

Per ulteriori informazioni sulle modifiche a Scala in Flink 1.15, consulta Scala non più disponibile nella versione 1.15.

In questo esercizio, creerete una semplice applicazione di streaming che utilizza Scala 3.2.0 e Java di Flink. DataStream API L'applicazione legge i dati dal flusso Kinesis, li aggrega utilizzando finestre scorrevoli e scrive i risultati per generare il flusso Kinesis.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Nozioni di base (Scala).

Scaricate ed esaminate il codice dell'applicazione

Il codice dell'applicazione Python per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/scala/TumblingWindow.

Tieni presente quanto segue riguardo al codice dell'applicazione:

  • Un file build.sbt contiene le informazioni sulla configurazione e le dipendenze dell'applicazione, incluse le librerie del servizio gestito per Apache Flink.

  • Il file BasicStreamingJob.scala contiene il metodo principale che definisce la funzionalità dell'applicazione.

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }

    L'applicazione utilizza anche un sink Kinesis per scrivere nel flusso dei risultati. Il seguente snippet crea il sink Kinesis:

    private def createSink: KinesisStreamsSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val outputProperties = applicationProperties.get("ProducerConfigProperties") KinesisStreamsSink.builder[String] .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema) .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName)) .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode)) .build }
  • L'applicazione utilizza l'operatore finestra per trovare il conteggio dei valori per ogni simbolo azionario in una finestra a cascata di 5 secondi. Il codice seguente crea l'operatore e invia i dati aggregati a un nuovo sink del flusso di dati Kinesis:

    environment.addSource(createSource) .map { value => val jsonNode = jsonParser.readValue(value, classOf[JsonNode]) new Tuple2[String, Int](jsonNode.get("ticker").toString, 1) } .returns(Types.TUPLE(Types.STRING, Types.INT)) .keyBy(v => v.f0) // Logically partition the stream for each ticker .window(TumblingProcessingTimeWindows.of(Time.seconds(10))) .sum(1) // Sum the number of tickers per partition .map { value => value.f0 + "," + value.f1.toString + "\n" } .sinkTo(createSink)
  • L'applicazione crea connettori source e sink per accedere a risorse esterne utilizzando un StreamExecutionEnvironment oggetto.

  • L'applicazione crea connettori di origine e sink utilizzando proprietà dinamiche. Questi metodi leggono le proprietà dell'applicazione di runtime per configurare il connettori. Per ulteriori informazioni sulle proprietà di runtime, consulta Proprietà di runtime.

Compilazione e caricamento del codice dell'applicazione

In questa sezione, il codice dell'applicazione viene compilato e caricato in un bucket Amazon S3.

Compilazione del codice dell'applicazione

Usa lo strumento di SBTcompilazione per creare il codice Scala per l'applicazione. Per l'installazioneSBT, vedi Installare sbt con cs setup. È inoltre necessario installare il Java Development Kit (JDK). Consulta Prerequisiti per il completamento degli esercizi.

  1. Per utilizzare il codice dell'applicazione, lo si compila e lo si impacchetta in un JAR file. Puoi compilare e impacchettare il tuo codice con: SBT

    sbt assembly
  2. Se l'applicazione viene compilata correttamente, viene creato il seguente file:

    target/scala-3.2.0/tumbling-window-scala-1.0.jar
Caricamento del codice Scala di streaming di Apache Flink

In questa sezione, viene creato un bucket Amazon S3 e caricato il codice dell'applicazione.

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona Crea bucket.

  3. Immetti ka-app-code-<username> nel campo Nome bucket. Aggiungi un suffisso al nome del bucket, ad esempio il nome utente, per renderlo globalmente univoco. Scegli Next (Successivo).

  4. Nella fase Configura opzioni, non modificare le impostazioni e scegli Successivo.

  5. Nella fase Imposta autorizzazioni, non modificare le impostazioni e scegli Successivo.

  6. Seleziona Crea bucket.

  7. Scegli il bucket ka-app-code-<username>, quindi scegli Carica.

  8. Nella fase Seleziona file, scegli Aggiungi file. Individua il file tumbling-window-scala-1.0.jar creato nella fase precedente.

  9. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My Scala test app.

    • Per Runtime, scegli Apache Flink.

    • Lascia la versione Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione

Per configurare l'applicazione, utilizza la procedura seguente.

Per configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci tumbling-window-scala-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, scegli Aggiungi gruppo.

  5. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Seleziona Salva.

  6. In Proprietà, scegli di nuovo Aggiungi gruppo.

  7. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  9. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  10. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Modifica la politica IAM

Modifica la IAM policy per aggiungere le autorizzazioni per accedere al bucket Amazon S3.

Per modificare la IAM policy per aggiungere le autorizzazioni del bucket S3
  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/tumbling-window-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Interrompi l'applicazione

Per interrompere l'applicazione, nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Crea ed esegui l'applicazione (CLI)

In questa sezione, si utilizza AWS Command Line Interface per creare ed eseguire l'applicazione Managed Service for Apache Flink. Utilizzate il AWS CLI comando kinesisanalyticsv2 per creare e interagire con le applicazioni Managed Service for Apache Flink.

Creazione di una policy di autorizzazione
Nota

È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non create queste IAM risorse, l'applicazione non potrà accedere ai dati e ai flussi di log.

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione di lettura sul flusso di origine e un'altra che concede le autorizzazioni per operazioni di scrittura sul flusso di sink. Quindi allegate la politica a un IAM ruolo (che creerete nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Sostituisci username con il nome utente utilizzato per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account. Il ruolo di esecuzione del servizio MF-stream-rw-role deve essere adattato al ruolo specifico del cliente.

{ "ApplicationName": "tumbling_window", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione per assumere il ruolo e la policy di autorizzazione determina cosa può fare il servizio assumendo questo ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, scegli Ruoli e quindi Crea ruolo.

  3. In Seleziona tipo di entità attendibile, scegli Servizio AWS .

  4. In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis.

  5. In Seleziona il tuo caso d'uso, scegli Servizio gestito per Apache Flink.

  6. Scegli Successivo: autorizzazioni.

  7. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  8. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di trust e di autorizzazione per il ruolo

  9. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la policy AKReadSourceStreamWriteSinkStream e seleziona Collega policy.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Creazione dell'applicazione

Salva il JSON codice seguente in un file denominatocreate_request.json. Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo creato in precedenza. Sostituisci il ARN suffisso del bucket (nome utente) con il suffisso che hai scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con l'ID account. ServiceExecutionRoleDovrebbe includere il ruolo IAM utente creato nella sezione precedente.

"ApplicationName": "tumbling_window", "ApplicationDescription": "Scala getting started application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

Esegui il CreateApplicationcon la seguente richiesta per creare l'applicazione:

aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avviare l'applicazione

In questa sezione, si utilizza l'StartApplicationazione per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostart_request.json.

    { "ApplicationName": "tumbling_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Arresta l'applicazione

In questa sezione, si utilizza l'StopApplicationazione per arrestare l'applicazione.

Per interrompere l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostop_request.json.

    { "ApplicationName": "tumbling_window" }
  2. Esegui l'operazione StopApplication con la richiesta precedente per interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungere un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consulta Configurazione della registrazione delle applicazioni.

Aggiornare le proprietà dell'ambiente

In questa sezione, si utilizza l'UpdateApplicationazione per modificare le proprietà dell'ambiente dell'applicazione senza ricompilare il codice dell'applicazione. In questo esempio, viene modificata la Regione dei flussi di origine e destinazione.

Per aggiornare le proprietà di ambiente per l'applicazione
  1. Salvate il JSON codice seguente in un file denominato. update_properties_request.json

    {"ApplicationName": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
  2. Esegui l'operazione UpdateApplication con la richiesta precedente per aggiornare le proprietà di ambiente:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplicationCLIazione.

Nota

Per caricare una nuova versione del codice dell'applicazione con lo stesso nome file, è necessario specificare la nuova versione dell'oggetto. Per ulteriori informazioni sull'uso delle versioni degli oggetti Amazon S3, consulta Abilitazione o disattivazione del controllo delle versioni.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto e la nuova versione dell'oggetto. L'applicazione verrà riavviata con il nuovo pacchetto di codice.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<username>) con il suffisso che hai scelto nella sezione Crea risorse dipendenti.

{ "ApplicationName": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "tumbling-window-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Pulisci le risorse AWS

Questa sezione include le procedure per ripulire AWS le risorse create nel tutorial di Tumbling Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink su /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: creazione di una finestra scorrevole in Scala

Nota

A partire dalla versione 1.15, Flink non supporta più Scala. Le applicazioni possono ora utilizzare Java API da qualsiasi versione di Scala. Flink utilizza ancora Scala internamente in alcuni componenti chiave, ma non espone Scala nel classloader del codice utente. Per questo motivo, gli utenti devono aggiungere le dipendenze di Scala nei propri archivi jar.

Per ulteriori informazioni sulle modifiche a Scala in Flink 1.15, consulta Scala non più disponibile nella versione 1.15.

In questo esercizio, creerete una semplice applicazione di streaming che utilizza Scala 3.2.0 e Java di Flink. DataStream API L'applicazione legge i dati dal flusso Kinesis, li aggrega utilizzando finestre scorrevoli e scrive i risultati per generare il flusso Kinesis.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Nozioni di base (Scala).

Scaricate ed esaminate il codice dell'applicazione

Il codice dell'applicazione Python per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/scala/SlidingWindow.

Tieni presente quanto segue riguardo al codice dell'applicazione:

  • Un file build.sbt contiene le informazioni sulla configurazione e le dipendenze dell'applicazione, incluse le librerie del servizio gestito per Apache Flink.

  • Il file BasicStreamingJob.scala contiene il metodo principale che definisce la funzionalità dell'applicazione.

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }

    L'applicazione utilizza anche un sink Kinesis per scrivere nel flusso dei risultati. Il seguente snippet crea il sink Kinesis:

    private def createSink: KinesisStreamsSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val outputProperties = applicationProperties.get("ProducerConfigProperties") KinesisStreamsSink.builder[String] .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema) .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName)) .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode)) .build }
  • L'applicazione utilizza l'operatore finestra per trovare il conteggio dei valori per ogni simbolo azionario in una finestra a cascata di 10 secondi che scorre di 5 secondi. Il codice seguente crea l'operatore e invia i dati aggregati a un nuovo sink del flusso di dati Kinesis:

    environment.addSource(createSource) .map { value => val jsonNode = jsonParser.readValue(value, classOf[JsonNode]) new Tuple2[String, Double](jsonNode.get("ticker").toString, jsonNode.get("price").asDouble) } .returns(Types.TUPLE(Types.STRING, Types.DOUBLE)) .keyBy(v => v.f0) // Logically partition the stream for each word .window(SlidingProcessingTimeWindows.of(Time.seconds(10), Time.seconds(5))) .min(1) // Calculate minimum price per ticker over the window .map { value => value.f0 + String.format(",%.2f", value.f1) + "\n" } .sinkTo(createSink)
  • L'applicazione crea connettori source e sink per accedere a risorse esterne utilizzando un StreamExecutionEnvironment oggetto.

  • L'applicazione crea connettori di origine e sink utilizzando proprietà dinamiche. Questi metodi leggono le proprietà dell'applicazione di runtime per configurare il connettori. Per ulteriori informazioni sulle proprietà di runtime, consulta Proprietà di runtime.

Compilazione e caricamento del codice dell'applicazione

In questa sezione, il codice dell'applicazione viene compilato e caricato in un bucket Amazon S3.

Compilazione del codice dell'applicazione

Usa lo strumento di SBTcompilazione per creare il codice Scala per l'applicazione. Per l'installazioneSBT, vedi Installare sbt con cs setup. È inoltre necessario installare il Java Development Kit (JDK). Consulta Prerequisiti per il completamento degli esercizi.

  1. Per utilizzare il codice dell'applicazione, lo si compila e lo si impacchetta in un JAR file. Puoi compilare e impacchettare il tuo codice con: SBT

    sbt assembly
  2. Se l'applicazione viene compilata correttamente, viene creato il seguente file:

    target/scala-3.2.0/sliding-window-scala-1.0.jar
Caricamento del codice Scala di streaming di Apache Flink

In questa sezione, viene creato un bucket Amazon S3 e caricato il codice dell'applicazione.

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona Crea bucket.

  3. Immetti ka-app-code-<username> nel campo Nome bucket. Aggiungi un suffisso al nome del bucket, ad esempio il nome utente, per renderlo globalmente univoco. Scegli Next (Successivo).

  4. Nella fase Configura opzioni, non modificare le impostazioni e scegli Successivo.

  5. Nella fase Imposta autorizzazioni, non modificare le impostazioni e scegli Successivo.

  6. Seleziona Crea bucket.

  7. Scegli il bucket ka-app-code-<username>, quindi scegli Carica.

  8. Nella fase Seleziona file, scegli Aggiungi file. Individua il file sliding-window-scala-1.0.jar creato nella fase precedente.

  9. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My Scala test app.

    • Per Runtime, scegli Apache Flink.

    • Lascia la versione Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione

Per configurare l'applicazione, utilizza la procedura seguente.

Per configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci sliding-window-scala-1.0.jar.

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, scegli Aggiungi gruppo.

  5. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Seleziona Salva.

  6. In Proprietà, scegli di nuovo Aggiungi gruppo.

  7. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    ProducerConfigProperties output.stream.name ExampleOutputStream
    ProducerConfigProperties aws.region us-west-2
  8. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  9. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  10. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Modifica la politica IAM

Modifica la IAM policy per aggiungere le autorizzazioni per accedere al bucket Amazon S3.

Per modificare la IAM policy per aggiungere le autorizzazioni del bucket S3
  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/sliding-window-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }
Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Interrompi l'applicazione

Per interrompere l'applicazione, nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Crea ed esegui l'applicazione (CLI)

In questa sezione, si utilizza AWS Command Line Interface per creare ed eseguire l'applicazione Managed Service for Apache Flink. Utilizzate il AWS CLI comando kinesisanalyticsv2 per creare e interagire con le applicazioni Managed Service for Apache Flink.

Creazione di una policy di autorizzazione
Nota

È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non create queste IAM risorse, l'applicazione non potrà accedere ai dati e ai flussi di log.

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione di lettura sul flusso di origine e un'altra che concede le autorizzazioni per operazioni di scrittura sul flusso di sink. Quindi allegate la politica a un IAM ruolo (che creerete nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Sostituisci username con il nome utente utilizzato per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account.

{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione per assumere il ruolo e la policy di autorizzazione determina cosa può fare il servizio assumendo questo ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, scegli Ruoli e quindi Crea ruolo.

  3. In Seleziona tipo di entità attendibile, scegli Servizio AWS .

  4. In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis.

  5. In Seleziona il tuo caso d'uso, scegli Servizio gestito per Apache Flink.

  6. Scegli Successivo: autorizzazioni.

  7. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  8. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di trust e di autorizzazione per il ruolo

  9. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la policy AKReadSourceStreamWriteSinkStream e seleziona Collega policy.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Creazione dell'applicazione

Salva il JSON codice seguente in un file denominatocreate_request.json. Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo creato in precedenza. Sostituisci il ARN suffisso del bucket (nome utente) con il suffisso che hai scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con l'ID account.

{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding_window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

Esegui il CreateApplicationcon la seguente richiesta per creare l'applicazione:

aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avviare l'applicazione

In questa sezione, si utilizza l'StartApplicationazione per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostart_request.json.

    { "ApplicationName": "sliding_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Arresta l'applicazione

In questa sezione, si utilizza l'StopApplicationazione per arrestare l'applicazione.

Per interrompere l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostop_request.json.

    { "ApplicationName": "sliding_window" }
  2. Esegui l'operazione StopApplication con la richiesta precedente per interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungere un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consulta Configurazione della registrazione delle applicazioni.

Aggiornare le proprietà dell'ambiente

In questa sezione, si utilizza l'UpdateApplicationazione per modificare le proprietà dell'ambiente dell'applicazione senza ricompilare il codice dell'applicazione. In questo esempio, viene modificata la Regione dei flussi di origine e destinazione.

Per aggiornare le proprietà di ambiente per l'applicazione
  1. Salvate il JSON codice seguente in un file denominato. update_properties_request.json

    {"ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
  2. Esegui l'operazione UpdateApplication con la richiesta precedente per aggiornare le proprietà di ambiente:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplicationCLIazione.

Nota

Per caricare una nuova versione del codice dell'applicazione con lo stesso nome file, è necessario specificare la nuova versione dell'oggetto. Per ulteriori informazioni sull'uso delle versioni degli oggetti Amazon S3, consulta Abilitazione o disattivazione del controllo delle versioni.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto e la nuova versione dell'oggetto. L'applicazione verrà riavviata con il nuovo pacchetto di codice.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<username>) con il suffisso che hai scelto nella sezione Crea risorse dipendenti.

{ "ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Pulisci le risorse AWS

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink su /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Scegli Elimina gruppo di log e conferma l'eliminazione.

Esempio: invio di dati in streaming ad Amazon S3 in Scala

Nota

A partire dalla versione 1.15, Flink non supporta più Scala. Le applicazioni possono ora utilizzare Java API da qualsiasi versione di Scala. Flink utilizza ancora Scala internamente in alcuni componenti chiave, ma non espone Scala nel classloader del codice utente. Per questo motivo, gli utenti devono aggiungere le dipendenze di Scala nei propri archivi jar.

Per ulteriori informazioni sulle modifiche a Scala in Flink 1.15, consulta Scala non più disponibile nella versione 1.15.

In questo esercizio, creerete una semplice applicazione di streaming che utilizza Scala 3.2.0 e Java di Flink. DataStream API L'applicazione legge i dati dal flusso Kinesis, li aggrega utilizzando finestre scorrevoli e scrive i risultati su S3.

Nota

Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio Nozioni di base (Scala). Devi solo creare una cartella aggiuntiva data/ nel ka-app-code bucket Amazon S3 -. <username>

Scarica ed esamina il codice dell'applicazione

Il codice dell'applicazione Python per questo esempio è disponibile da. GitHub Per scaricare il codice dell'applicazione, esegui le operazioni descritte di seguito.

  1. Installa il client Git se non lo hai già fatto. Per ulteriori informazioni, consulta Installazione di Git.

  2. Clona il repository remoto con il comando seguente:

    git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
  3. Passa alla directory amazon-kinesis-data-analytics-java-examples/scala/S3Sink.

Tieni presente quanto segue riguardo al codice dell'applicazione:

  • Un file build.sbt contiene le informazioni sulla configurazione e le dipendenze dell'applicazione, incluse le librerie del servizio gestito per Apache Flink.

  • Il file BasicStreamingJob.scala contiene il metodo principale che definisce la funzionalità dell'applicazione.

  • L'applicazione utilizza un'origine Kinesis per leggere dal flusso di origine. Il seguente snippet crea l'origine Kinesis:

    private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }

    L'applicazione utilizza anche un StreamingFileSink per scrivere su un bucket Amazon S3: `

    def createSink: StreamingFileSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val s3SinkPath = applicationProperties.get("ProducerConfigProperties").getProperty("s3.sink.path") StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder[String]("UTF-8")) .build() }
  • L'applicazione crea connettori source e sink per accedere a risorse esterne utilizzando un StreamExecutionEnvironment oggetto.

  • L'applicazione crea connettori di origine e sink utilizzando proprietà dinamiche. Questi metodi leggono le proprietà dell'applicazione di runtime per configurare il connettori. Per ulteriori informazioni sulle proprietà di runtime, consulta Proprietà di runtime.

Compilazione e caricamento del codice dell'applicazione

In questa sezione, il codice dell'applicazione viene compilato e caricato in un bucket Amazon S3.

Compilazione del codice dell'applicazione

Usa lo strumento di SBTcompilazione per creare il codice Scala per l'applicazione. Per l'installazioneSBT, vedi Installare sbt con cs setup. È inoltre necessario installare il Java Development Kit (JDK). Consulta Prerequisiti per il completamento degli esercizi.

  1. Per utilizzare il codice dell'applicazione, lo si compila e lo si impacchetta in un JAR file. Puoi compilare e impacchettare il tuo codice con: SBT

    sbt assembly
  2. Se l'applicazione viene compilata correttamente, viene creato il seguente file:

    target/scala-3.2.0/s3-sink-scala-1.0.jar
Caricamento del codice Scala di streaming di Apache Flink

In questa sezione, viene creato un bucket Amazon S3 e caricato il codice dell'applicazione.

  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona Crea bucket.

  3. Immetti ka-app-code-<username> nel campo Nome bucket. Aggiungi un suffisso al nome del bucket, ad esempio il nome utente, per renderlo globalmente univoco. Scegli Next (Successivo).

  4. Nella fase Configura opzioni, non modificare le impostazioni e scegli Successivo.

  5. Nella fase Imposta autorizzazioni, non modificare le impostazioni e scegli Successivo.

  6. Seleziona Crea bucket.

  7. Scegli il bucket ka-app-code-<username>, quindi scegli Carica.

  8. Nella fase Seleziona file, scegli Aggiungi file. Individua il file s3-sink-scala-1.0.jar creato nella fase precedente.

  9. Non è necessario modificare alcuna delle impostazioni dell'oggetto, quindi scegli Carica.

Il codice dell'applicazione è ora archiviato in un bucket Amazon S3 accessibile dall'applicazione.

Crea ed esegui l'applicazione (console)

Segui questi passaggi per creare, configurare, aggiornare ed eseguire l'applicazione utilizzando la console.

Creazione dell'applicazione
  1. Apri la console Managed Service for Apache Flink all'indirizzo /flink https://console.aws.amazon.com

  2. Nella dashboard del servizio gestito per Apache Flink, scegli Crea un'applicazione di analisi.

  3. Nella pagina Servizio gestito per Apache Flink: crea applicazione, fornisci i dettagli dell'applicazione nel modo seguente:

    • Per Nome applicazione, immetti MyApplication.

    • Per Descrizione, inserisci My java test app.

    • Per Runtime, scegli Apache Flink.

    • Lascia la versione Apache Flink 1.15.2 (versione consigliata).

  4. Per le autorizzazioni di accesso, scegli Crea/aggiorna ruolo. IAM kinesis-analytics-MyApplication-us-west-2

  5. Scegli Crea applicazione.

Nota

Quando crei un servizio gestito per l'applicazione Apache Flink utilizzando la console, hai la possibilità di creare un IAM ruolo e una policy per la tua applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste IAM risorse vengono denominate utilizzando il nome e la regione dell'applicazione come segue:

  • Policy: kinesis-analytics-service-MyApplication-us-west-2

  • Ruolo: kinesisanalytics-MyApplication-us-west-2

Configurare l'applicazione

Per configurare l'applicazione, utilizza la procedura seguente.

Per configurare l'applicazione
  1. Nella MyApplicationpagina, scegli Configura.

  2. Nella pagina Configura applicazione, fornisci la Posizione del codice:

    • Per Bucket Amazon S3, inserisci ka-app-code-<username>.

    • Per Percorso dell'oggetto Amazon S3, inserisci s3-sink-scala-1.0.jar

  3. In Accesso alle risorse dell'applicazione, per Autorizzazioni di accesso, scegli Crea/aggiorna IAM ruolo kinesis-analytics-MyApplication-us-west-2.

  4. In Proprietà, scegli Aggiungi gruppo.

  5. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    ConsumerConfigProperties input.stream.name ExampleInputStream
    ConsumerConfigProperties aws.region us-west-2
    ConsumerConfigProperties flink.stream.initpos LATEST

    Seleziona Salva.

  6. In Proprietà, scegli Aggiungi gruppo.

  7. Immetti i seguenti dati:

    ID gruppo Chiave Valore
    ProducerConfigProperties s3.sink.path s3a://ka-app-code-<user-name>/data
  8. In Monitoraggio, accertati che il Monitoraggio del livello dei parametri sia impostato su Applicazione.

  9. Per la CloudWatch registrazione, seleziona la casella di controllo Abilita.

  10. Scegli Aggiorna.

Nota

Quando scegli di abilitare la CloudWatch registrazione di Amazon, Managed Service for Apache Flink crea un gruppo di log e un flusso di log per te. I nomi di tali risorse sono i seguenti:

  • Gruppo di log: /aws/kinesis-analytics/MyApplication

  • Flusso di log: kinesis-analytics-log-stream

Modifica la politica IAM

Modifica la IAM policy per aggiungere le autorizzazioni per accedere al bucket Amazon S3.

Per modificare la IAM policy per aggiungere le autorizzazioni del bucket S3
  1. Apri la console all'IAMindirizzo. https://console.aws.amazon.com/iam/

  2. Seleziona Policy. Scegli la policy kinesis-analytics-service-MyApplication-us-west-2 creata dalla console nella sezione precedente.

  3. Nella pagina Riepilogo, scegli Modifica policy. Scegli la JSONscheda.

  4. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci l'account di esempio IDs (012345678901) con l'ID del tuo account.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" } ] }
Esecuzione dell'applicazione.

Il grafico del processo Flink può essere visualizzato eseguendo l'applicazione, aprendo il pannello di controllo di Apache Flink e scegliendo il processo Flink desiderato.

Interrompi l'applicazione

Per interrompere l'applicazione, nella MyApplicationpagina, scegli Stop. Conferma l'operazione.

Crea ed esegui l'applicazione (CLI)

In questa sezione, si utilizza AWS Command Line Interface per creare ed eseguire l'applicazione Managed Service for Apache Flink. Utilizzate il AWS CLI comando kinesisanalyticsv2 per creare e interagire con le applicazioni Managed Service for Apache Flink.

Creazione di una policy di autorizzazione
Nota

È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non create queste IAM risorse, l'applicazione non potrà accedere ai dati e ai flussi di log.

Innanzitutto, crea una policy di autorizzazione con due istruzioni: una che concede le autorizzazioni per l'operazione di lettura sul flusso di origine e un'altra che concede le autorizzazioni per operazioni di scrittura sul flusso di sink. Quindi allegate la politica a un IAM ruolo (che creerete nella sezione successiva). Pertanto, quando il servizio gestito per Apache Flink assume il ruolo, il servizio disporrà delle autorizzazioni necessarie per leggere dal flusso di origine e scrivere nel flusso di sink.

Utilizza il codice seguente per creare la policy di autorizzazione AKReadSourceStreamWriteSinkStream. Sostituisci username con il nome utente utilizzato per creare il bucket Amazon S3 per archiviare il codice dell'applicazione. Sostituisci l'ID dell'account in Amazon Resource Names (ARNs) (012345678901) con l'ID del tuo account.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/getting-started-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il Tutorial: Crea e allega la tua prima politica gestita dal cliente nella Guida per l'IAMutente.

Creare un ruolo IAM.

In questa sezione, crei un IAM ruolo che l'applicazione Managed Service for Apache Flink può assumere per leggere un flusso di origine e scrivere nel flusso sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni vengono concesse tramite un ruolo. IAM A ogni IAM ruolo sono allegate due politiche. La policy di attendibilità concede al servizio gestito per Apache Flink l'autorizzazione per assumere il ruolo e la policy di autorizzazione determina cosa può fare il servizio assumendo questo ruolo.

Collega la policy di autorizzazione creata nella sezione precedente a questo ruolo.

Per creare un ruolo IAM
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, scegli Ruoli e quindi Crea ruolo.

  3. In Seleziona tipo di entità attendibile, scegli Servizio AWS .

  4. In Scegli il servizio che utilizzerà questo ruolo, scegli Kinesis.

  5. In Seleziona il tuo caso d'uso, scegli Servizio gestito per Apache Flink.

  6. Scegli Successivo: autorizzazioni.

  7. Nella pagina Allega policy di autorizzazione, seleziona Successivo: esamina. Collega le policy di autorizzazione dopo aver creato il ruolo.

  8. Nella pagina Crea ruolo, immetti MF-stream-rw-role per Nome ruolo. Scegliere Crea ruolo.

    Ora hai creato un nuovo IAM ruolo chiamatoMF-stream-rw-role. Successivamente, aggiorna le policy di trust e di autorizzazione per il ruolo

  9. Collega la policy di autorizzazione al ruolo.

    Nota

    Per questo esercizio, il servizio gestito per Apache Flink assume questo ruolo per la lettura di dati da un flusso di dati Kinesis (origine) e la scrittura dell'output in un altro flusso di dati Kinesis. Pertanto, devi collegare la policy creata nella fase precedente, Creazione di una policy di autorizzazione.

    1. Nella pagina Riepilogo, scegli la scheda Autorizzazioni.

    2. Scegliere Collega policy.

    3. Nella casella di ricerca, immetti AKReadSourceStreamWriteSinkStream (la policy creata nella sezione precedente).

    4. Scegli la policy AKReadSourceStreamWriteSinkStream e seleziona Collega policy.

È stato creato il ruolo di esecuzione del servizio che l'applicazione utilizzerà per accedere alle risorse. Prendi nota ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta Creazione di un IAM ruolo (console) nella Guida per l'IAMutente.

Creazione dell'applicazione

Salva il JSON codice seguente in un file denominatocreate_request.json. Sostituisci il ruolo di esempio ARN con quello ARN per il ruolo creato in precedenza. Sostituisci il ARN suffisso del bucket (nome utente) con il suffisso che hai scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con l'ID account.

{ "ApplicationName": "s3_sink", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "s3-sink-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

Esegui il CreateApplicationcon la seguente richiesta per creare l'applicazione:

aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

L'applicazione è ora creata. Avvia l'applicazione nella fase successiva.

Avviare l'applicazione

In questa sezione, si utilizza l'StartApplicationazione per avviare l'applicazione.

Per avviare l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostart_request.json.

    {{ "ApplicationName": "s3_sink", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. Esegui l'operazione StartApplication con la richiesta precedente per avviare l'applicazione:

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

L'applicazione è ora in esecuzione. Puoi controllare i parametri del servizio gestito per Apache Flink sulla CloudWatch console Amazon per verificare che l'applicazione funzioni.

Arresta l'applicazione

In questa sezione, si utilizza l'StopApplicationazione per arrestare l'applicazione.

Per interrompere l'applicazione
  1. Salvate il JSON codice seguente in un file denominatostop_request.json.

    { "ApplicationName": "s3_sink" }
  2. Esegui l'operazione StopApplication con la richiesta precedente per interrompere l'applicazione:

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

L'applicazione è ora interrotta.

Aggiungere un'opzione CloudWatch di registrazione

Puoi usare il AWS CLI per aggiungere un flusso di CloudWatch log Amazon alla tua applicazione. Per informazioni sull'utilizzo di CloudWatch Logs con la tua applicazione, consulta Configurazione della registrazione delle applicazioni.

Aggiornare le proprietà dell'ambiente

In questa sezione, si utilizza l'UpdateApplicationazione per modificare le proprietà dell'ambiente dell'applicazione senza ricompilare il codice dell'applicazione. In questo esempio, viene modificata la Regione dei flussi di origine e destinazione.

Per aggiornare le proprietà di ambiente per l'applicazione
  1. Salvate il JSON codice seguente in un file denominato. update_properties_request.json

    {"ApplicationName": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } } }
  2. Esegui l'operazione UpdateApplication con la richiesta precedente per aggiornare le proprietà di ambiente:

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Aggiornamento del codice dell'applicazione

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'UpdateApplicationCLIazione.

Nota

Per caricare una nuova versione del codice dell'applicazione con lo stesso nome file, è necessario specificare la nuova versione dell'oggetto. Per ulteriori informazioni sull'uso delle versioni degli oggetti Amazon S3, consulta Abilitazione o disattivazione del controllo delle versioni.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiamaUpdateApplication, specificando lo stesso bucket Amazon S3 e lo stesso nome dell'oggetto e la nuova versione dell'oggetto. L'applicazione verrà riavviata con il nuovo pacchetto di codice.

Il seguente esempio di richiesta per l'operazione UpdateApplication ricarica il codice dell'applicazione e riavvia l'applicazione. Aggiorna l'CurrentApplicationVersionId alla versione corrente dell'applicazione. Puoi controllare la versione corrente dell'applicazione utilizzando le operazioni ListApplications o DescribeApplication. Aggiorna il suffisso del nome del bucket (<username>) con il suffisso che hai scelto nella sezione Crea risorse dipendenti.

{ "ApplicationName": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username", "FileKeyUpdate": "s3-sink-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Pulisci le risorse AWS

Questa sezione include le procedure per ripulire AWS le risorse create nel tutorial di Tumbling Window.

Eliminare l'applicazione Managed Service for Apache Flink
  1. Apri la console Managed Service for Apache Flink su /flink https://console.aws.amazon.com

  2. nel pannello Managed Service for Apache Flink, scegliete. MyApplication

  3. Nella pagina dell'applicazione, scegli Elimina e quindi conferma l'eliminazione.

Eliminare i flussi di dati Kinesis
  1. Apri la console Kinesis in /kinesis. https://console.aws.amazon.com

  2. Nel pannello Kinesis Data Streams, scegli. ExampleInputStream

  3. Nella ExampleInputStreampagina, scegli Elimina Kinesis Stream e conferma l'eliminazione.

  4. Nella pagina Kinesis Streams, scegli, scegli Azioni ExampleOutputStream, scegli Elimina, quindi conferma l'eliminazione.

Elimina l'oggetto e il bucket Amazon S3
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Scegli il ka-app-code -<username> secchio.

  3. Per confermare l'eliminazione, scegli Elimina, quindi inserisci il nome del bucket.

Elimina le tue IAM risorse
  1. Apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nella barra di navigazione, scegli Policy.

  3. Nel controllo filtro, inserisci kinesis.

  4. Scegli la politica kinesis-analytics-service- MyApplication -us-west-2.

  5. Seleziona Operazioni di policy e quindi Elimina.

  6. Nella barra di navigazione, scegli Ruoli.

  7. Scegli il ruolo kinesis-analytics- MyApplication -us-west-2.

  8. Quindi scegli Elimina ruolo e conferma l'eliminazione.

CloudWatch Elimina le tue risorse
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nella barra di navigazione, scegli Log.

  3. Scegli il gruppo/aws/kinesis-analytics/MyApplicationlog.

  4. Quindi scegli Elimina gruppo di log e conferma l'eliminazione.