

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

# Versioni Apache Flink supportate e obsolete
<a name="release-version-list"></a>

Questo argomento contiene informazioni sulle versioni supportate di Apache Flink in Managed Service for Apache Flink. Questo argomento elenca anche le funzionalità di Apache Flink supportate in ogni versione.

**Nota**  
Se utilizzi una versione obsoleta di Apache Flink, ti consigliamo di aggiornare l'applicazione alla versione Flink più recente supportata utilizzando la funzionalità di Managed Service for Apache Flink. [Usa gli aggiornamenti di versione sul posto per Apache Flink](how-in-place-version-upgrades.md)


| Versione Apache Flink | Stato - Amazon Managed Service per Apache Flink | Stato: comunità Apache Flink | Link | Nota | 
| --- | --- | --- | --- | --- | 
| 2.2.0 | Supportata | Supportata | [Servizio gestito Amazon per Apache Flink 2.2](flink-2-2.md) | Questa è una versione principale con modifiche sostanziali. Vedi [Interruzione delle modifiche e delle deprecazioni](flink-2-2.md#flink-2-2-breaking-changes) prima di procedere. | 
| 1.20.0 | Supportata | Supportata | [Servizio gestito Amazon per Apache Flink 1.20](flink-1-20.md) |  | 
| 1.19.1 | Supportata | Supportata | [Servizio gestito Amazon per Apache Flink 1.19](flink-1-19.md) |  | 
| 1.18.1 | Supportata | Non supportato. | [Servizio gestito Amazon per Apache Flink 1.18](flink-1-18.md) |  | 
| 1.15.2 | Supportata | Non supportato. | [Servizio gestito Amazon per Apache Flink 1.15](flink-1-15-2.md) |  | 
| 1.13.1 | Obsoleto | Non supportato. | [Guida introduttiva: Flink 1.13.2](earlier.md#getting-started-1-13) | Il supporto per questa versione in Amazon Managed Service for Apache Flink terminerà il 16 ottobre 2025. | 
| 1.11.1 | Obsoleto | Non supportato. | [Informazioni sulla versione precedente di Managed Service for Apache Flink](earlier.md)(Questa versione non sarà supportata a partire da febbraio 2025) |  Abbiamo intenzione di terminare il supporto per le versioni 1.6, 1.8 e 1.11 di Apache Flink in Amazon Managed Service for Apache Flink. A partire dal 14 luglio 2025, metteremo le applicazioni che utilizzano queste versioni in uno stato READY. A partire dal 28 luglio 2025, non sarà possibile AVVIARE le applicazioni utilizzando queste versioni. Ti consigliamo ora di aggiornare immediatamente le tue applicazioni alla versione 1.20 di Flink utilizzando la funzionalità di aggiornamento della versione in loco in Amazon Managed Service for Apache Flink. Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione in loco per Apache Flink](how-in-place-version-upgrades.md).  | 
| 1.8.2 | Obsoleto | Non supportato. | [Informazioni sulla versione precedente di Managed Service for Apache Flink](earlier.md)(Questa versione non sarà supportata a partire da febbraio 2025) |  Abbiamo intenzione di terminare il supporto per le versioni 1.6, 1.8 e 1.11 di Apache Flink in Amazon Managed Service for Apache Flink. A partire dal 14 luglio 2025, metteremo le applicazioni che utilizzano queste versioni in uno stato READY. A partire dal 28 luglio 2025, non sarà possibile AVVIARE le applicazioni utilizzando queste versioni. Ti consigliamo ora di aggiornare immediatamente le tue applicazioni alla versione 1.20 di Flink utilizzando la funzionalità di aggiornamento della versione in loco in Amazon Managed Service for Apache Flink. Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione in loco per Apache Flink](how-in-place-version-upgrades.md). | 
| 1.6.2 | Obsoleto | Non supportato. | [Informazioni sulla versione precedente di Managed Service for Apache Flink](earlier.md)(Questa versione non sarà supportata a partire da febbraio 2025) |  Abbiamo intenzione di terminare il supporto per le versioni 1.6, 1.8 e 1.11 di Apache Flink in Amazon Managed Service for Apache Flink. A partire dal 14 luglio 2025, metteremo le applicazioni che utilizzano queste versioni in uno stato READY. A partire dal 28 luglio 2025, non sarà possibile AVVIARE le applicazioni utilizzando queste versioni. Ti consigliamo ora di aggiornare immediatamente le tue applicazioni alla versione 1.20 di Flink utilizzando la funzionalità di aggiornamento della versione in loco in Amazon Managed Service for Apache Flink. Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione in loco per Apache Flink](how-in-place-version-upgrades.md).  | 

**Topics**
+ [Servizio gestito Amazon per Apache Flink 2.2](flink-2-2.md)
+ [Servizio gestito Amazon per Apache Flink 1.20](flink-1-20.md)
+ [Servizio gestito Amazon per Apache Flink 1.19](flink-1-19.md)
+ [Servizio gestito Amazon per Apache Flink 1.18](flink-1-18.md)
+ [Servizio gestito Amazon per Apache Flink 1.15](flink-1-15-2.md)
+ [Informazioni sulla versione precedente di Managed Service for Apache Flink](earlier.md)

# Servizio gestito Amazon per Apache Flink 2.2
<a name="flink-2-2"></a>

Amazon Managed Service per Apache Flink ora supporta la versione 2.2 di Apache Flink. Questo è il primo aggiornamento della versione principale del servizio. Questa pagina illustra le funzionalità introdotte in Flink 2.2, insieme a importanti considerazioni per l'aggiornamento da Flink 1.x.

**Nota**  
Flink 2.2 introduce modifiche epocali che richiedono un'attenta pianificazione. Consulta l'elenco completo delle ultime modifiche e delle modifiche obsolete di seguito e prima dell'aggiornamento dalla [Guida alla compatibilità dello stato per gli aggiornamenti di Flink 2.2](state-compatibility.md) 1.x.

## Novità di Amazon Managed Service per Apache Flink 2.2
<a name="flink-2-2-whats-new"></a>

Amazon Managed Service for Apache Flink 2.2 introduce modifiche comportamentali che potrebbero interrompere le applicazioni esistenti al momento dell'aggiornamento. Esaminali attentamente insieme alle modifiche all'API Flink nella sezione successiva.

**Gestione della configurazione programmatica**
+ MSF Flink 2.2 ora segnala un'eccezione quando i clienti tentano di modificare configurazioni non supportate da MSF o simili. `env.getConfig().set()` APIs Per informazioni, consulta [Proprietà di configurazione programmatiche di Flink](programmatic-configuration.md).
+ [I clienti possono comunque richiedere di modificare determinate configurazioni tramite i ticket di assistenza (vedi Impostazioni modificabili)](https://docs.aws.amazon.com/managed-flink/latest/java/reference-modifiable-settings.html)

**Rimozione delle metriche**
+ La `fullRestarts` metrica è stata rimossa in Flink 2.2. Usa invece la `numRestarts` metrica.
+ La `bytesRequestedPerFetch` metrica per il connettore KDS è stata rimossa nella versione 6.0.0 del AWS connettore Flink (solo la versione del connettore è compatibile con Flink 2.2).
+ Le `downtime` metriche `uptime` e sono entrambe contrassegnate come obsolete in Flink 2.2 e verranno rimosse a breve. Sostituisci con la nuova metrica`uptime`. `runningTime` Sostituisci `downtime` con uno o più di `restartingTime``cancellingTime`, e`failingTime`.
+ Consulta la [pagina Metriche e dimensioni](https://docs.aws.amazon.com/managed-flink/latest/java/metrics-dimensions.html) per l'elenco completo delle metriche supportate.

**Chiamate IMDS senza credenziali bloccate**
+ Questi endpoint consentiti vengono utilizzati dagli AWS SDK () e **DefaultCredentialsProvider**(`/latest/meta-data/iam/security-credentials/`) per configurare automaticamente le credenziali e **DefaultAwsRegionProviderChain**la regione per l'applicazione. `/latest/dynamic/instance-identity/document`
+ Le applicazioni che utilizzano le funzioni dell'SDK AWS che si basano su chiamate IMDS senza credenziali (come`EC2MetadataUtils.getInstanceId()`, `EC2MetadataUtils.getInstanceType()``EC2MetadataUtils.getLocalHostName()`, o`EC2MetadataUtils.getAvailabilityZone()`) riceveranno errori HTTP 4xx quando tentano di effettuare queste chiamate.
+ Se la tua applicazione utilizza IMDS, ad esempio metadati o altre informazioni al di fuori dei percorsi consentiti, rifattorizza il codice per utilizzare invece le variabili di ambiente o la configurazione dell'applicazione.

**Filesystem root di sola lettura**
+ Per migliorare la sicurezza, qualsiasi dipendenza al di fuori della `/tmp` quale sia la directory di lavoro flink predefinita risulterà in:. `java.io.FileNotFoundException: /{path}/{filename} (Read-only file system)`
+ Le dipendenze del filesystem possono provenire direttamente dal codice o indirettamente dalle librerie incluse nelle dipendenze. Sostituisci le dipendenze dirette del filesystem nel tuo codice. `/tmp/` Per le dipendenze indirette del filesystem dalle librerie, utilizzate gli override di configurazione delle librerie per reindirizzare le operazioni del file system verso. `/tmp/`

## Interruzione delle modifiche e delle deprecazioni
<a name="flink-2-2-breaking-changes"></a>

Di seguito è riportato un riepilogo delle ultime modifiche e delle deprecazioni introdotte in Managed Service for Apache Flink 2.2. Consulta le note di rilascio di [Apache Flink 2.0 per le note di rilascio](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.0/) complete di Apache Flink 2.0 che introducono queste modifiche epocali.

**DataSet API rimossa**
+ L' DataSet API legacy per l'elaborazione in batch è stata completamente rimossa in Flink 2.0\$1. Tutte le elaborazioni in batch devono ora utilizzare l'API DataStream unificata.
+ Le applicazioni che utilizzano l' DataSet API devono essere migrate all' DataStream API prima dell'aggiornamento. Consulta la guida alla migrazione di [Apache Flink per](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/dataset_migration/) la conversione DataSet DataStream

**Java 11 e Python 3.8 rimossi**
+ Supporto per Java 11 completamente rimosso; Java 17 è il runtime predefinito e consigliato.
+ Il supporto per Python 3.8 è stato rimosso; Python 3.12 è ora l'impostazione predefinita.

**Classi Legacy Connector rimosse**
+ La versione precedente `SourceFunction` e le `SinkFunction` interfacce sono state sostituite dai nuovi Source (FLIP-27) e Sink (FLIP-143) unificati APIs, che offrono un migliore supporto per la bounded/unbounded dualità, un migliore coordinamento dei checkpoint e un modello di programmazione più pulito.
+ Per Kinesis Data Streams`KinesisStreamsSource`, `KinesisStreamsSink` utilizzare e da. `flink-connector-aws-kinesis-streams:6.0.0-2.0`

**API Scala rimossa**
+ L'API Flink Scala è stata rimossa. L'API Java di Flink è ora l'unica API supportata per le applicazioni basate su JVM.
+ Se la tua applicazione è scritta in Scala, puoi comunque utilizzare l'API Java di Flink dal codice Scala: la modifica principale è che i wrapper specifici di Scala e le conversioni implicite non sono più disponibili. Vedi [Aggiornamento delle applicazioni e delle versioni Flink per i dettagli sull'aggiornamento delle applicazioni](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/upgrading/) Scala.

**Considerazioni sulla compatibilità degli stati**
+ Il serializzatore Kryo aggiornato dalla versione 2.24 alla 5.6 può causare problemi di compatibilità dello stato.
+ POJOs con collections (`HashMap`,,) potrebbe avere problemi di compatibilità tra `ArrayList` stati`HashSet`.
+ La serializzazione di Avro e Protobuf non è influenzata.
+ Consultate [Guida alla compatibilità dello stato per gli aggiornamenti di Flink 2.2](state-compatibility.md) questa pagina per una valutazione dettagliata del livello di rischio dell'applicazione.

## Funzionalità di Apache Flink 2.2 supportate
<a name="flink-2-2-supported-features"></a>

**Runtime e supporto linguistico**


****  

| Funzionalità | Description | Documentazione | 
| --- | --- | --- | 
| Java 17 Runtime | Java 17 è ora il runtime predefinito e consigliato; il supporto per Java 11 è stato rimosso. | [Compatibilità con Java](https://nightlies.apache.org/flink/flink-docs-stable/zh/docs/deployment/java_compatibility/) | 
| Python 3.12 Support | Python 3.12 ora supportato; supporto Python 3.8 rimosso. | [PyFlink Documentazione](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/overview/) | 

**Gestione dello stato e prestazioni**


****  

| Funzionalità | Description | Documentazione | 
| --- | --- | --- | 
| RockSDB 8.10.0 |  I/O Prestazioni migliorate con l'aggiornamento RockSDB. | [Backend statali](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/ops/state/state_backends/) | 
| Miglioramenti alla serializzazione | Serializzatori dedicati per Map, List, Set; Kryo aggiornato dalla 2.24 alla 5.6. | [Tipo di serializzazione](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/fault-tolerance/serialization/types_serialization/) | 

**Funzionalità delle API SQL e Table**


****  

| Funzionalità | Description | Documentazione | 
| --- | --- | --- | 
| Tipo di dati VARIANT | Supporto nativo per dati semistrutturati (JSON) senza analisi ripetuta delle stringhe. | [Tipi di dati](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/types/) | 
| Delta Join | Riduce i requisiti statali per gli streaming join mantenendo solo la versione più recente di ogni chiave; richiede un'infrastruttura gestita dal cliente (ad esempio, Apache Fluss). | [Si unisce](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/joins/) | 
| StreamingMultiJoinOperator | Esegue giunzioni multidirezionali come operatore singolo, eliminando la materializzazione intermedia. | [FLIP-516](https://cwiki.apache.org/confluence/display/FLINK/FLIP-516) | 
| ProcessTableFunction (PTF) | Abilita una logica statica basata sugli eventi direttamente in SQL con stato e timer per chiave. | [Funzioni definite dall'utente](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/functions/udfs/) | 
| Funzione ML\$1PREDICT | Chiama i modelli ML registrati sulle streaming/batch tabelle direttamente da SQL. Richiede al cliente di raggruppare un' ModelProvider implementazione (ad es.flink-model-openai). ModelProvider le librerie non vengono fornite da Managed Service for Apache Flink. | [ML Predict](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/queries/model-inference/) | 
| Modello DDL | Definisci i modelli ML come oggetti di catalogo di prima classe utilizzando le istruzioni CREATE MODEL. | [Dichiarazioni CREATE](https://nightlies.apache.org/flink/flink-docs-release-2.1/docs/dev/table/sql/create/#create-model) | 
| Ricerca vettoriale | L'API Flink SQL supporta la ricerca nei database vettoriali. Al momento non è disponibile alcuna VectorSearchTableSource implementazione open source; i clienti devono fornire la propria implementazione. | [Flink SQL](https://nightlies.apache.org/flink/flink-docs-stable/release-notes/flink-2.2/#support-vector_search-in-flink-sql) | 

**DataStream Funzionalità dell'API**


****  

| Funzionalità | Description | Documentazione | 
| --- | --- | --- | 
| API sorgente FLIP-27 | Nuova interfaccia sorgente unificata che sostituisce quella precedente. SourceFunction | [Origini](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sources/) | 
| API Sink FLIP-143 | Nuova interfaccia sink unificata che sostituisce la versione precedente. SinkFunction | [Lavelli](https://nightlies.apache.org/flink/flink-docs-release-2.0/docs/dev/datastream/sinks/) | 
| Python asincrono DataStream |  I/O Operazioni non bloccanti nell'API DataStream Python utilizzando. AsyncFunction | [I/O asincrono](https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/dev/python/datastream/operators/async_io/) | 

## Disponibilità del connettore
<a name="flink-2-2-connectors"></a>

Quando si esegue l'aggiornamento a Flink 2.2, è inoltre necessario aggiornare le dipendenze dei connettori a versioni compatibili con il runtime Flink 2.2. I connettori Flink vengono rilasciati indipendentemente dal runtime Flink e non tutti i connettori hanno ancora una versione compatibile con Flink 2.2. La tabella seguente riassume la disponibilità dei connettori di uso comune in Amazon Managed Service for Apache Flink:


**Disponibilità dei connettori per Flink 2.2**  

| Connector | Versione Flink 1.20 | Versione Flink 2.0\$1 | Note | 
| --- | --- | --- | --- | 
| Apache Kafka | flink-connector-kafka 3,4,0-1,20 | flink-connector-kafka 4,0,0-2,0 | Consigliato per Flink 2.2 | 
| Kinesis Data Streams (fonte) | flink-connector-kinesis 5,0,0-1,20 | flink-connector-aws-kinesis-stream 6.0.0-2.0 | Consigliato per Flink 2.2 | 
| Kinesis Data Streams (sink) | flink-connector-aws-kinesis-stream 5.1.0-1.20 | flink-connector-aws-kinesis-stream 6.0.0-2.0 | Consigliato per Flink 2.2 | 
| Amazon Data Firehose | flink-connector-aws-kinesis-Firehose 5.1.0-1.20 | flink-connector-aws-kinesis- manichetta antincendio 6.0.0-2.0 | Compatibile con Flink 2.0 | 
| Amazon DynamoDB | flink-connector-dynamodb 5,1,0-1,20 | flink-connector-dynamodb 6,0,0-2,0 | Compatibile con Flink 2.0 | 
| Amazon SQS | flink-connector-sqs 5,1,0-1,20 | flink-connector-sqs 6,0,0-2,0 | Compatibile con Flink 2.0 | 
| FileSystem (S3, HDFS) | In bundle con Flink | In bundle con Flink | Integrato nella distribuzione Flink, sempre disponibile | 
| JDBC | flink-connector-jdbc 3,3,0-1,20 | Non ancora rilasciato per 2.x | Nessuna versione compatibile con Flink 2.x disponibile | 
| OpenSearch | flink-connector-opensearch 1.2.0-1,19 | Non ancora rilasciato per 2.x | Nessuna versione compatibile con Flink 2.x disponibile | 
| Elasticsearch | Solo connettore Legacy | Non ancora rilasciato per 2.x | Prendi in considerazione la migrazione al connettore OpenSearch  | 
| Amazon Managed Service per Prometheus | flink-connector-prometheus 1,0,0-1,20 | Non ancora rilasciato per 2.x | Nessuna versione compatibile con Flink 2.x disponibile | 
+ Se l'applicazione dipende da un connettore che non dispone ancora di una versione Flink 2.x, sono disponibili due opzioni: attendere che il connettore rilasci una versione compatibile o valutare se è possibile sostituirlo con un'alternativa (ad esempio, utilizzando il catalogo JDBC o un sink personalizzato).
+ Durante l'aggiornamento delle versioni dei connettori, presta attenzione alle modifiche dei nomi degli artefatti: alcuni connettori sono stati rinominati tra le versioni principali (ad esempio, il connettore Firehose è cambiato da `flink-connector-aws-kinesis-firehose` a `flink-connector-aws-firehose` in alcune versioni intermedie).
+ Consulta sempre la [documentazione del connettore Amazon Managed Service for Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html) per i nomi esatti degli artefatti e le versioni supportate nel runtime di destinazione.

## Funzionalità sperimentali e non supportate
<a name="flink-2-2-unsupported"></a>

Le seguenti funzionalità non sono supportate in Amazon Managed Service for Apache Flink 2.2:
+ Tabelle **materializzate: istantanee di tabelle** interrogabili e gestite in modo continuo.
+ Modifiche **telemetriche personalizzate: report metrici personalizzati e configurazioni di telemetria**.
+ **ForSt State Backend**: archiviazione a stati disaggregata (sperimentale in open source).
+ **Java 21**: supporto sperimentale in open source, non supportato in Managed Service for Apache Flink.

## Problemi noti
<a name="flink-2-2-known-issues"></a>

**Servizio gestito Amazon per Apache Flink Studio**

Flink 2.2 in Amazon Managed Service for Apache Flink non supporta le applicazioni Studio. Per ulteriori informazioni, consulta [Creazione di un notebook Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html).

**Connettore Kinesis EFO**
+ Le applicazioni che utilizzano il percorso `KinesisStreamsSource` con EFO (Enhanced Fan-Out/ SubscribeToShard) introdotto nei connettori v5.0.0 e v6.0.0 potrebbero fallire quando gli stream Kinesis vengono sottoposti a resharding. Si tratta di un problema noto nella comunità. Per ulteriori informazioni, vedere [FLINK-37648](https://issues.apache.org/jira/browse/FLINK-37648).
+ Le applicazioni che utilizzano il percorso `KinesisStreamsSource` with EFO (Enhanced Fan-Out/ SubscribeToShard) introdotto insieme ai connettori v5.0.0 e v6.0.0 `KinesisStreamsSink` potrebbero riscontrare dei deadlock se l'applicazione Flink è sottoposta a contropressione, con conseguente arresto completo dell'elaborazione dei dati in uno o più. TaskManagers Per ripristinare l'applicazione sono necessarie un'operazione di arresto forzato e un'operazione di avvio dell'applicazione. Questo è un caso secondario del problema noto nella comunità. Per ulteriori informazioni, vedere [FLINK-34071](https://issues.apache.org/jira/browse/FLINK-34071).

## Esperienza di aggiornamento
<a name="flink-2-2-upgrade"></a>

Amazon Managed Service for Apache Flink supporta aggiornamenti di versione in loco che preservano la configurazione dell'applicazione, i log, le metriche, i tag e, se lo stato e i binari sono compatibili, lo stato dell'applicazione. step-by-step[Aggiornamento a Flink 2.2: guida completa](flink-2-2-upgrade-guide.md)Per istruzioni, consulta.

Per indicazioni sulla valutazione del rischio di compatibilità dello stato e sulla gestione dello stato di incompatibilità durante gli aggiornamenti, vedere. [Guida alla compatibilità dello stato per gli aggiornamenti di Flink 2.2](state-compatibility.md)

## Fasi successive
<a name="flink-2-2-next-steps"></a>
+ Sei nuovo a Flink 2.2? Per la documentazione dettagliata di Apache Flink 2.2, consultate la documentazione di [Apache](https://nightlies.apache.org/flink/flink-docs-release-2.2/) Flink 2.2.
+ Stai pianificando un aggiornamento? Per informazioni, consultare [Aggiornamento a Flink 2.2: guida completa](flink-2-2-upgrade-guide.md).
+ Problemi di compatibilità a livello statale? Per informazioni, consultare [Guida alla compatibilità dello stato per gli aggiornamenti di Flink 2.2](state-compatibility.md).

Per domande o problemi, consulta [Risoluzione dei problemi relativi al servizio gestito per Apache Flink](troubleshooting.md) o contatta l' AWS assistenza.

# Servizio gestito Amazon per Apache Flink 1.20
<a name="flink-1-20"></a>

Managed Service for Apache Flink ora supporta la versione 1.20.0 di Apache Flink. Questa sezione presenta le nuove funzionalità e le modifiche principali introdotte con il supporto di Managed Service for Apache Flink di Apache Flink 1.20.0. Apache Flink 1.20 dovrebbe essere l'ultima versione 1.x e una versione di Flink con supporto a lungo termine (LTS). Per ulteriori informazioni, consulta [FLIP-458: Long-Term Support for the Final Release of Apache](https://cwiki.apache.org/confluence/display/FLINK/FLIP-458%3A+Long-Term+Support+for+the+Final+Release+of+Apache+Flink+1.x+Line) Flink 1.x Line.

**Nota**  
Se utilizzi una versione precedente supportata di Apache Flink e desideri aggiornare le tue applicazioni esistenti ad Apache Flink 1.20.0, puoi farlo utilizzando gli aggiornamenti della versione di Apache Flink in loco. Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione sul posto per Apache Flink](how-in-place-version-upgrades.md). Con gli aggiornamenti di versione in loco, mantieni la tracciabilità delle applicazioni su un singolo ARN tra le versioni di Apache Flink, tra cui istantanee, log, metriche, tag, configurazioni Flink e altro ancora. 

## Funzionalità supportate
<a name="flink-1-20-0-supported-features"></a>

Apache Flink 1.20.0 introduce miglioramenti nell'SQL, nella dashboard e nella dashboard di Flink. APIs DataStream APIs


**Funzionalità supportate e documentazione correlata**  

| Funzionalità supportate | Description | Riferimento alla documentazione di Apache Flink  | 
| --- | --- | --- | 
| Aggiungi la clausola DISTRIBUTED BY | Molti motori SQL espongono i concetti di PartitioningBucketing, o. Clustering Flink 1.20 introduce il concetto di to Flink. Bucketing  | [FLIP-376: aggiungi la clausola DISTRIBUTED BY](https://cwiki.apache.org/confluence/display/FLINK/FLIP-376%3A+Add+DISTRIBUTED+BY+clause) | 
| DataStream API: Supporta l'elaborazione completa delle partizioni  | Flink 1.20 introduce il supporto integrato per le aggregazioni su flussi senza chiave tramite l'API. FullPartitionWindow  | [FLIP-380: Supporta l'elaborazione completa delle partizioni su Non-keyed DataStream](https://cwiki.apache.org/confluence/display/FLINK/FLIP-380%3A+Support+Full+Partition+Processing+On+Non-keyed+DataStream) | 
| Mostra il punteggio di distorsione dei dati su Flink Dashboard | La dashboard di Flink 1.20 ora mostra le informazioni sulla distorsione dei dati. Ogni operatore nell'interfaccia utente del grafico dei lavori di Flink mostra un punteggio aggiuntivo di distorsione dei dati.  | [FLIP-418: mostra il punteggio di distorsione dei dati su Flink Dashboard](https://cwiki.apache.org/confluence/display/FLINK/FLIP-418%3A+Show+data+skew+score+on+Flink+Dashboard) | 

[Per la documentazione sulla versione di Apache Flink 1.20.0, consultate Apache Flink Documentation v1.20.0.](https://nightlies.apache.org/flink/flink-docs-stable/) [Per le note di rilascio di Flink 1.20, consultate Release notes - Flink 1.20](https://nightlies.apache.org/flink/flink-docs-release-1.20/release-notes/flink-1.20/)

## Componenti
<a name="flink-1-20-0-components"></a>


**Componenti Flink 1.20**  

| Componente | Versione | 
| --- | --- | 
| Java  | 11 (consigliata) | 
| Python |  3.11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Connettori | Per informazioni sui connettori disponibili, consulta Connettori [Apache](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html) Flink. | 
| [Apache Beam (solo applicazioni Beam)](https://aws.amazon.com/developer/language/python/) |  Non esiste Apache Flink Runner compatibile per Flink 1.20. [Per ulteriori informazioni, consulta Compatibilità delle versioni di Flink.](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility)  | 

## Problemi noti
<a name="flink-1-20-0-known-issues"></a>

**Apache Beam**

Al momento non esiste Apache Flink Runner compatibile per Flink 1.20 in Apache Beam. [Per ulteriori informazioni, consulta Compatibilità delle versioni di Flink.](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility)

**Servizio gestito Amazon per Apache Flink Studio**

Amazon Managed Service for Apache Flink Studio utilizza i notebook Apache Zeppelin per fornire un'esperienza di sviluppo a interfaccia singola per lo sviluppo, il debug del codice e l'esecuzione di applicazioni di elaborazione di flussi Apache Flink. È necessario un aggiornamento a Flink Interpreter di Zeppelin per abilitare il supporto di Flink 1.20. Questo lavoro è programmato con la community degli Zeppelin. Aggiorneremo queste note quando il lavoro sarà completo. Puoi continuare a utilizzare Flink 1.15 con Amazon Managed Service per Apache Flink Studio. Per ulteriori informazioni, consulta [Creazione](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html) di un notebook Studio.

**Correzioni di bug con backport**

Amazon Managed Service for Apache Flink supporta le correzioni della community Flink per problemi critici. Di seguito è riportato un elenco di correzioni di bug di cui abbiamo eseguito il backport:


**Correzioni di bug ripristinate**  

| Collegamento Apache Flink JIRA | Description | 
| --- | --- | 
| [FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Questa correzione risolve un problema che causa una contabilizzazione errata dei timeout di inattività delle filigrane quando un'attività secondaria viene sottoposta a contropressione/blocco. | 

# Servizio gestito Amazon per Apache Flink 1.19
<a name="flink-1-19"></a>

Managed Service for Apache Flink ora supporta la versione 1.19.1 di Apache Flink. Questa sezione presenta le nuove funzionalità e le modifiche principali introdotte con il supporto di Managed Service for Apache Flink di Apache Flink 1.19.1.

**Nota**  
Se utilizzi una versione precedente supportata di Apache Flink e desideri aggiornare le tue applicazioni esistenti ad Apache Flink 1.19.1, puoi farlo utilizzando gli aggiornamenti della versione di Apache Flink in loco. Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione sul posto per Apache Flink](how-in-place-version-upgrades.md). Con gli aggiornamenti di versione in loco, mantieni la tracciabilità delle applicazioni su un singolo ARN tra le versioni di Apache Flink, tra cui istantanee, log, metriche, tag, configurazioni Flink e altro ancora. 

## Funzionalità supportate
<a name="flink-1-19-1-supported-features"></a>

Apache Flink 1.19.1 introduce miglioramenti nell'API SQL, come parametri denominati, parallelismo dei sorgenti personalizzato e stati diversi per vari operatori Flink. TTLs 


**Funzionalità supportate e documentazione correlata**  

| Funzionalità supportate | Description | Riferimento alla documentazione di Apache Flink  | 
| --- | --- | --- | 
| API SQL: Supporta la configurazione di stati diversi TTLs utilizzando SQL Hint | Gli utenti possono ora configurare lo stato TTL sui join regolari in streaming e sugli aggregati di gruppo.  | [FLIP-373: Configurazione di stati diversi utilizzando SQL Hint TTLs ](https://cwiki.apache.org/confluence/display/FLINK/FLIP-373%3A+Support+Configuring+Different+State+TTLs+using+SQL+Hint) | 
| API SQL: Supporta parametri denominati per funzioni e procedure di chiamata | Gli utenti possono ora utilizzare parametri denominati nelle funzioni, anziché fare affidamento sull'ordine dei parametri.  | [FLIP-378: Supporta parametri denominati per funzioni e procedure di chiamata](https://cwiki.apache.org/confluence/display/FLINK/FLIP-387%3A+Support+named+parameters+for+functions+and+call+procedures) | 
| API SQL: impostazione del parallelismo per le sorgenti SQL | Gli utenti possono ora specificare il parallelismo per le sorgenti SQL. | [FLIP-367: Supporta l'impostazione del parallelismo per le sorgenti Table/SQL ](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=263429150) | 
| API SQL: Finestra di sessione di supporto TVF | Gli utenti possono ora utilizzare Table-Valued Functions della finestra di sessione.  | [FLINK-24024: sessione di supporto Window TVF](https://issues.apache.org/jira/browse/FLINK-24024) | 
| API SQL: l'aggregazione Window TVF supporta gli input del registro delle modifiche | Gli utenti possono ora eseguire l'aggregazione delle finestre sugli input del changelog.  | [FLINK-20281: L'aggregazione delle finestre supporta l'input del flusso di log delle modifiche](https://issues.apache.org/jira/browse/FLINK-20281) | 
|  Supporta Python 3.11  | Flink ora supporta Python 3.11, che è il 10-60% più veloce rispetto a Python 3.10. Per ulteriori informazioni, consulta [What's New in Python](https://docs.python.org/3/whatsnew/3.11.html#summary-release-highlights) 3.11. | [FLINK-33030: aggiungi il supporto per Python 3.11](https://issues.apache.org/jira/browse/FLINK-33030) | 
| Fornisci metriche TwoPhaseCommitting per il sink | Gli utenti possono visualizzare le statistiche sullo stato dei committenti nei sink di committenza a due fasi. | [FLIP-371: Fornisce un contesto di inizializzazione per la creazione di Committer in TwoPhaseCommittingSink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-371%3A+Provide+initialization+context+for+Committer+creation+in+TwoPhaseCommittingSink) | 
|  Trace Reporters per il riavvio del lavoro e il checkpoint  | Gli utenti possono ora monitorare le tracce relative alla durata dei checkpoint e alle tendenze di recupero. In Amazon Managed Service for Apache Flink, abilitiamo i trace reporter SLF4j per impostazione predefinita, in modo che gli utenti possano monitorare checkpoint e tracce di lavoro tramite i log delle applicazioni. CloudWatch  | [FLIP-384: introducilo e usalo per creare tracce di checkpoint e ripristino TraceReporter ](https://cwiki.apache.org/confluence/display/FLINK/FLIP-384%3A+Introduce+TraceReporter+and+use+it+to+create+checkpointing+and+recovery+traces) | 

**Nota**  
[Puoi attivare le seguenti funzionalità inviando una richiesta di assistenza:](https://console.aws.amazon.com/support/home#/)


**Funzionalità di attivazione e documentazione correlata**  

| Funzionalità di attivazione | Description | Riferimento alla documentazione di Apache Flink  | 
| --- | --- | --- | 
| Supporta l'utilizzo di intervalli di checkpoint più ampi quando la fonte sta elaborando il backlog | Si tratta di una funzionalità opzionale, in quanto gli utenti devono ottimizzare la configurazione in base alle proprie esigenze lavorative specifiche. | [FLIP-309: Supporta l'utilizzo di intervalli di checkpoint più ampi quando l'origine sta elaborando il backlog](https://cwiki.apache.org/confluence/display/FLINK/FLIP-309%3A+Support+using+larger+checkpointing+interval+when+source+is+processing+backlog) | 
| Reindirizza System.out e System.err nei log Java | Questa è una funzionalità opzionale. In Amazon Managed Service for Apache Flink, il comportamento predefinito consiste nell'ignorare l'output di System.out e System.err perché la migliore pratica in produzione consiste nell'utilizzare il logger Java nativo. | [FLIP-390: Support System out ed err per essere reindirizzato a LOG o eliminato](https://cwiki.apache.org/confluence/display/FLINK/FLIP-390%3A+Support+System+out+and+err+to+be+redirected+to+LOG+or+discarded) | 

[Per la documentazione sulla versione di Apache Flink 1.19.1, consultate Apache Flink Documentation v1.19.1.](https://nightlies.apache.org/flink/flink-docs-stable/)

## Modifiche ad Amazon Managed Service per Apache Flink 1.19.1
<a name="flink-1-19-1-known-issues"></a>

**La registrazione di Trace Reporter è abilitata per impostazione predefinita**

Apache Flink 1.19.1 ha introdotto le tracce di checkpoint e ripristino, consentendo agli utenti di eseguire meglio il debug dei checkpoint e dei problemi di ripristino dei processi. In Amazon Managed Service for Apache Flink, queste tracce vengono registrate nel flusso di CloudWatch log, permettendo agli utenti di suddividere il tempo impiegato per l'inizializzazione dei processi e registrare la dimensione storica dei checkpoint.

**La strategia di riavvio predefinita è ora exponential-delay**

In Apache Flink 1.19.1, sono stati apportati miglioramenti significativi alla strategia di riavvio con ritardo esponenziale. In Amazon Managed Service for Apache Flink a partire da Flink 1.19.1 in poi, i job Flink utilizzano la strategia di riavvio con ritardo esponenziale per impostazione predefinita. Ciò significa che i lavori degli utenti verranno ripristinati più rapidamente in seguito a errori temporanei, ma non sovraccaricheranno i sistemi esterni se i riavvii dei processi persistono.

**Correzioni di bug con backport**

Amazon Managed Service for Apache Flink supporta le correzioni della community Flink per problemi critici. Ciò significa che il runtime è diverso dalla versione Apache Flink 1.19.1. Di seguito è riportato un elenco di correzioni di bug di cui abbiamo eseguito il backport:


**Correzioni di bug ripristinate**  

| Collegamento Apache Flink JIRA | Description | 
| --- | --- | 
| [FLINK-35531](https://issues.apache.org/jira/browse/FLINK-35531) | Questa correzione risolve la regressione delle prestazioni introdotta nella versione 1.17.0 che causa scritture più lente su HDFS. | 
| [FLINK-35157](https://issues.apache.org/jira/browse/FLINK-35157) | Questa correzione risolve il problema dei lavori Flink bloccati quando le sorgenti con allineamento della filigrana incontrano attività secondarie completate. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Questa correzione risolve il problema della generazione di filigrane che causa uno stato errato della filigrana IDLE. | 
| [FLINK-34252](https://issues.apache.org/jira/browse/FLINK-34252) | Questa correzione risolve la regressione delle prestazioni durante la generazione di filigrane riducendo le chiamate di sistema. | 
| [FLINK-33936](https://issues.apache.org/jira/browse/FLINK-33936) | Questa correzione risolve il problema dei record duplicati durante l'aggregazione in mini-batch su Table API. | 
| [FLINK-35498](https://issues.apache.org/jira/browse/FLINK-35498) | Questa correzione risolve il problema dei conflitti tra i nomi degli argomenti durante la definizione di parametri denominati nell'API Table. UDFs | 
| [FLINK-33192](https://issues.apache.org/jira/browse/FLINK-33192) | Questa correzione risolve il problema di una perdita di memoria di stato negli operatori di Windows a causa di una pulizia impropria del timer. | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Questa correzione risolve il problema quando un job Flink si blocca attivando un timer alla fine di una finestra. | 
| [FLINK-35832](https://issues.apache.org/jira/browse/FLINK-35832) | Questa correzione risolve il problema quando IFNULL restituisce risultati errati. | 
| [FLINK-35886](https://issues.apache.org/jira/browse/FLINK-35886) | Questa correzione risolve il problema quando le attività in contropressione vengono considerate inattive. | 

## Componenti
<a name="flink-1-19-1-components"></a>


****  

| Componente | Versione | 
| --- | --- | 
| Java  | 11 (consigliata) | 
| Python |  3.11  | 
| Kinesis Data Analytics Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| Connettori | Per informazioni sui connettori disponibili, consulta Connettori [Apache](https://docs.aws.amazon.com/managed-flink/latest/java/how-flink-connectors.html) Flink. | 
| [Apache Beam (solo applicazioni Beam)](https://aws.amazon.com/developer/language/python/) |  A partire dalla versione 2.61.0. Per ulteriori informazioni, vedere Compatibilità della versione di [Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Problemi noti
<a name="flink-1-19-other-issues"></a>

**Servizio gestito Amazon per Apache Flink Studio**

Studio utilizza i notebook Apache Zeppelin per offrire un'esperienza di sviluppo a interfaccia singola per lo sviluppo, il debug del codice e l'esecuzione di applicazioni di elaborazione di flussi Apache Flink. È necessario un aggiornamento a Flink Interpreter di Zeppelin per abilitare il supporto di Flink 1.19. Questo lavoro è programmato con la community di Zeppelin e aggiorneremo queste note quando sarà completo. Puoi continuare a utilizzare Flink 1.15 con Amazon Managed Service per Apache Flink Studio. Per ulteriori informazioni, consulta [Creazione](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html) di un notebook Studio.

# Servizio gestito Amazon per Apache Flink 1.18
<a name="flink-1-18"></a>

 Managed Service for Apache Flink ora supporta la versione 1.18.1 di Apache Flink. Scopri le nuove funzionalità e le modifiche principali introdotte con il supporto di Managed Service for Apache Flink di Apache Flink 1.18.1.

**Nota**  
Se utilizzi una versione precedente supportata di Apache Flink e desideri aggiornare le tue applicazioni esistenti ad Apache Flink 1.18.1, puoi farlo utilizzando gli aggiornamenti di versione di Apache Flink in loco. Con gli aggiornamenti di versione in loco, mantieni la tracciabilità delle applicazioni su un singolo ARN tra le versioni di Apache Flink, tra cui istantanee, log, metriche, tag, configurazioni Flink e altro ancora. È `RUNNING` `READY` possibile utilizzare questa funzionalità in qualsiasi stato. Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione sul posto per Apache Flink](how-in-place-version-upgrades.md). 


**Funzionalità supportate con riferimenti alla documentazione di Apache Flink**  

| Caratteristiche supportate | Description | Riferimento alla documentazione di Apache Flink  | 
| --- | --- | --- | 
| Connettore Opensearch | Questo connettore include un lavandino che fornisce at-least-once garanzie. | [github: Connettore Opensearch](https://github.com/apache/flink-connector-opensearch/blob/main/docs/content/docs/connectors/datastream/opensearch.md) | 
| Connettore Amazon DynamoDB | Questo connettore include un lavandino che fornisce at-least-once garanzie. | [Amazon DynamoDB Sink](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/dynamodb/) | 
| Connettore MongoDB | Questo connettore include una fonte e un sink che forniscono at-least-once garanzie. | [Connettore MongoDB](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/mongodb/) | 
| Disaccoppia Hive con il pianificatore Flink |  Puoi usare direttamente il dialetto Hive senza dover cambiare ulteriormente il JAR.  | [FLINK-26603: disaccoppia Hive con il pianificatore Flink](https://issues.apache.org/jira/browse/FLINK-26603) | 
| Disabilita WAL in Rocks DBWrite BatchWrapper per impostazione predefinita |  Ciò fornisce tempi di ripristino più rapidi.  | [FLINK-32326: disabilita WAL in Rocks per impostazione predefinita DBWrite BatchWrapper ](https://issues.apache.org/jira/browse/FLINK-32326) | 
|  Migliora le prestazioni di aggregazione delle filigrane abilitando l'allineamento delle filigrane  |  Migliora le prestazioni di aggregazione delle filigrane abilitando l'allineamento delle filigrane e aggiunge il relativo benchmark.  | [FLINK-32524: prestazioni di aggregazione Watermark](https://issues.apache.org/jira/browse/FLINK-32420) | 
| Prepara l'allineamento delle filigrane per l'uso in produzione | Elimina il rischio di sovraccarico di lavori di grandi dimensioni JobManager | [FLINK-32548: Prepara l'allineamento della filigrana](https://issues.apache.org/jira/browse/FLINK-32548) | 
|  Configurabile per RateLimitingStratey Async Sink  |  RateLimitingStrategy consente di configurare la decisione su cosa scalare, quando scalare e quanto scalare.  | [FLIP-242: introduce il configurabile RateLimitingStrategy per Async Sink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-242%3A+Introduce+configurable+RateLimitingStrategy+for+Async+Sink) | 
|  Recupera in blocco le statistiche di tabelle e colonne  | Prestazioni di interrogazione migliorate. | [FLIP-247: recupero in blocco delle statistiche di tabelle e colonne per determinate partizioni](https://cwiki.apache.org/confluence/display/FLINK/FLIP-247%3A+Bulk+fetch+of+table+and+column+statistics+for+given+partitions) | 

[Per la documentazione sulla versione di Apache Flink 1.18.1, consultate l'annuncio di rilascio di Apache Flink 1.18.1.](https://flink.apache.org/2024/01/19/apache-flink-1.18.1-release-announcement/)

## Modifiche ad Amazon Managed Service per Apache Flink con Apache Flink 1.18
<a name="flink-1-15-2-known-issues"></a>

**Akka è stato sostituito con Pekko**

 Apache Flink ha sostituito Akka con Pekko in Apache Flink 1.18. Questa modifica è completamente supportata in Managed Service for Apache Flink di Apache Flink 1.18.1 e versioni successive. Non è necessario modificare le applicazioni a seguito di questa modifica. Per ulteriori informazioni, vedere [FLINK-32468: Replace Akka by](https://issues.apache.org/jira/browse/FLINK-32468) Pekko.

**Supporta l' PyFlink esecuzione di Runtime in modalità Thread**

Questa modifica di Apache Flink introduce una nuova modalità di esecuzione per il framework Pyflink Runtime, Process Mode. Process Mode ora può eseguire funzioni Python definite dall'utente nello stesso thread anziché in un processo separato.

**Correzioni di bug con backport**

Amazon Managed Service for Apache Flink supporta le correzioni della community Flink per problemi critici. Ciò significa che il runtime è diverso dalla versione Apache Flink 1.18.1. Di seguito è riportato un elenco di correzioni di bug di cui abbiamo eseguito il backport:


**Correzioni di bug ripristinate**  

| Collegamento Apache Flink JIRA | Description | 
| --- | --- | 
| [FLINK-33863](https://issues.apache.org/jira/browse/FLINK-33863) | Questa correzione risolve il problema quando un ripristino dello stato non riesce per le istantanee compresse. | 
| [FLINK-34063](https://issues.apache.org/jira/browse/FLINK-34063) | Questa correzione risolve il problema che si verifica quando gli operatori di origine perdono le suddivisioni quando è abilitata la compressione delle istantanee. Apache Flink offre una compressione opzionale (impostazione predefinita: disattivata) per tutti i checkpoint e i savepoint. Apache Flink ha identificato un bug in Flink 1.18.1 in cui lo stato dell'operatore non poteva essere ripristinato correttamente quando era abilitata la compressione delle istantanee. Ciò potrebbe comportare la perdita di dati o l'impossibilità di eseguire il ripristino dal checkpoint.  | 
| [FLINK-35069](https://issues.apache.org/jira/browse/FLINK-35069) | Questa correzione risolve il problema quando un job Flink si blocca attivando un timer alla fine di una finestra.  | 
| [FLINK-35097](https://issues.apache.org/jira/browse/FLINK-35097) | Questa correzione risolve il problema dei record duplicati in un connettore Table API Filesystem in formato raw.  | 
| [FLINK-34379](https://issues.apache.org/jira/browse/FLINK-34379) | Questa correzione risolve il problema dell'attivazione del filtraggio dinamico delle tabelle OutOfMemoryError .  | 
| [FLINK-28693](https://issues.apache.org/jira/browse/FLINK-28693) | Questa correzione risolve il problema dell'impossibilità dell'API Table di generare un grafico se la filigrana ha un'espressione ColumnBy.  | 
| [FLINK-35217](https://issues.apache.org/jira/browse/FLINK-35217) | Questa correzione risolve il problema di un checkpoint danneggiato durante una specifica modalità di errore del processo Flink.  | 

## Componenti
<a name="flink-1-15-2-components"></a>


****  

| Componente | Versione | 
| --- | --- | 
| Java  | 11 (consigliata) | 
| Scala |  Dalla versione 1.15, Flink è indipendente dalla scala. Per riferimento, MSF Flink 1.18 è stato verificato rispetto a Scala 3.3 (LTS).  | 
| Servizio gestito per Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Kinesis Connector (flink-connector-kinesis) [Fonte]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/4.2.0-1.18) | 4.2.0-1,18 | 
| [AWS Connettore Kinesis (flink-connector-kinesis) [Sink]](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-aws-kinesis-streams/4.2.0-1.18) | 4.2,0-1,18 | 
| [Apache Beam (solo applicazioni Beam)](https://aws.amazon.com/developer/language/python/) |  A partire dalla versione 2.57.0. Per ulteriori informazioni, vedere Compatibilità delle versioni di [Flink](https://beam.apache.org/documentation/runners/flink/#flink-version-compatibility).  | 

## Problemi noti
<a name="flink-1-18-known-issues"></a>

**Servizio gestito Amazon per Apache Flink Studio**

Studio utilizza i notebook Apache Zeppelin per offrire un'esperienza di sviluppo a interfaccia singola per lo sviluppo, il debug del codice e l'esecuzione di applicazioni di elaborazione di flussi Apache Flink. È necessario un aggiornamento a Flink Interpreter di Zeppelin per abilitare il supporto di Flink 1.18. Questo lavoro è programmato con la community di Zeppelin e aggiorneremo queste note quando sarà completo. Puoi continuare a utilizzare Flink 1.15 con Amazon Managed Service per Apache Flink Studio. Per ulteriori informazioni, consulta [Creazione](https://docs.aws.amazon.com/managed-flink/latest/java/how-zeppelin-creating.html) di un notebook Studio.

**Inattività errata della filigrana quando la sottoattività viene sottoposta a contropressione**

Esiste un problema noto nella generazione di filigrane quando una sottoattività viene sottoposta a contropressione, che è stato risolto a partire da Flink 1.19 e versioni successive. Ciò può manifestarsi come un picco nel numero di record in ritardo quando un grafico di lavoro Flink viene sottoposto a contropressione. Ti consigliamo di eseguire l'aggiornamento alla versione più recente di Flink per inserire questa correzione. Per ulteriori informazioni, consulta [Contabilità errata del timeout dell'inattività con filigrana quando la sottoattività](https://issues.apache.org/jira/browse/FLINK-35886) viene contropressionata/bloccata.

# Servizio gestito Amazon per Apache Flink 1.15
<a name="flink-1-15-2"></a>

 Managed Service per Apache Flink supporta le seguenti nuove funzionalità in Apache 1.15.2: 


****  

| Funzionalità | Description | Riferimento Apache FLIP  | 
| --- | --- | --- | 
| Async Sink  | Un framework AWS contribuito per la creazione di destinazioni asincrone che consente agli sviluppatori di creare AWS connettori personalizzati con meno della metà dello sforzo precedente. Per ulteriori informazioni, consulta [Generic Asynchronous Base Sink](https://flink.apache.org/2022/05/06/async-sink-base.html). | [FLIP-171: Async Sink](https://cwiki.apache.org/confluence/display/FLINK/FLIP-171%3A+Async+Sink). | 
| Kinesis Data Firehose Sink  | AWS ha contribuito con un nuovo Amazon Kinesis Firehose Sink utilizzando il framework Async.  | [Amazon Kinesis Data Firehose Sink](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/). | 
| Stop with Savepoint  | Stop with Savepoint garantisce un funzionamento pulito ininterrotto e, soprattutto, supporta la semantica exactly-once per i clienti che decidono di usarlo. | [FLIP-34: Terminate/Suspend Job con](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=103090212) Savepoint. | 
| Scala Decoupling  | Gli utenti ora possono sfruttare l'API Java di qualsiasi versione di Scala, inclusa Scala 3. I clienti dovranno raggruppare la libreria standard Scala che hanno scelto nelle loro applicazioni Scala.  | [FLIP-28: Obiettivo a lungo termine: rendere flink-table privo di Scala](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free). | 
| Scala | Cfr. Scala Decoupling qui sopra  | [FLIP-28: Obiettivo a lungo termine: rendere flink-table privo di Scala](https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free). | 
| Metriche unificate per i connettori. | Flink ha [definito metriche standard](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/ops/metrics/) per processi, attività e operatori. Il servizio gestito per Apache Flink continuerà a supportare le metriche sink e origine, e nella versione 1.15 verrà introdotto numRestarts in parallelo con fullRestarts per Availability Metrics.  | [FLIP-33: Standardize Connector Metrics](https://cwiki.apache.org/confluence/display/FLINK/FLIP-33%3A+Standardize+Connector+Metrics) e [FLIP-179: Expose Standardized Operator Metrics](https://cwiki.apache.org/confluence/display/FLINK/FLIP-179%3A+Expose+Standardized+Operator+Metrics). | 
| Checkpoint delle attività completate  | Questa funzionalità è abilitata di default in Flink 1.15 e consente di continuare a eseguire i checkpoint anche se alcune parti del grafico di processo hanno terminato l'elaborazione di tutti i dati, cosa che potrebbe accadere se contiene origini (batch) associate.  | [FLIP-147: Support Checkpoints After Tasks Finished](https://cwiki.apache.org/confluence/display/FLINK/FLIP-147%3A+Support+Checkpoints+After+Tasks+Finished).  | 

## Modifiche al servizio gestito da Amazon per Apache Flink con Apache Flink 1.15
<a name="flink-1-15-2-changes"></a>

**Notebook Studio**

Il servizio gestito per Apache Flink Studio ora supporta Apache Flink 1.15. Il servizio gestito per Apache Flink Studio utilizza i notebook Apache Zeppelin per offrire un'unica interfaccia per lo sviluppo, il debug del codice e l'esecuzione di applicazioni di elaborazione di flussi Apache Flink. Puoi saperne di più sul servizio gestito per Apache Flink Studio e su come iniziare qui: [Usa un notebook Studio con Managed Service for Apache Flink](how-notebook.md).

**Connettore EFO**

Quando esegui l'aggiornamento del servizio gestito per Apache Flink versione 1.15, assicurati di utilizzare il connettore EFO più recente, ossia qualsiasi versione 1.15.3 o successiva. Per ulteriori informazioni sul motivo, consulta [FLINK-29324](https://issues.apache.org/jira/browse/FLINK-29324 ).

**Scala Decoupling **

A partire da Flink 1.15.2, dovrai raggruppare la libreria standard Scala che hai scelto nelle tue applicazioni Scala. 

**Kinesis Data Firehose Sink **

Quando esegui l'aggiornamento del servizio gestito per Apache Flink versione 1.15, assicurati di utilizzare il [Amazon Kinesis Data Firehose Sink](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/connectors/datastream/firehose/) più recente.

**Connettori Kafka**

Quando esegui l'aggiornamento ad Amazon Managed Service for Apache Flink per Apache Flink versione 1.15, assicurati di utilizzare il connettore Kafka più recente. APIs Apache Flink è obsoleto e These for the Kafka sink non può eseguire il commit su Kafka for Flink 1.15 [FlinkKafkaConsumer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-consumer). [FlinkKafkaProducer](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-producer) APIs Assicurati di utilizzare [KafkaSource](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-source)e [KafkaSink](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-sink). 

## Componenti
<a name="flink-1-15-2-components"></a>


****  

| Componente | Versione | 
| --- | --- | 
| Java  | 11 (consigliata) | 
| Scala | 2.12 | 
| Servizio gestito per Apache Flink Flink Runtime () aws-kinesisanalytics-runtime | 1.2.0 | 
| [AWS Connettore Kinesis () flink-connector-kinesis](https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kinesis/1.15.4) | 1.15.4 | 
| [Apache Beam (solo applicazioni Beam)](https://aws.amazon.com/developer/language/python/) | 2.33.0, con la versione Jackson 2.12.2 | 

## Problemi noti
<a name="flink-1-15-known-issues"></a>

**Kafka Commit sul checkpoint fallisce ripetutamente dopo il riavvio del broker**

Esiste un problema noto di Apache Flink open source con il connettore Apache Kafka nella versione 1.15 di Flink, causato da un bug critico di Kafka Client open source in Kafka Client 2.8.1. [Per maggiori informazioni, vedi [Kafka Commit on checkpointing fallisce ripetutamente dopo il riavvio del broker e non è in grado di ripristinare](https://issues.apache.org/jira/browse/FLINK-28060) la connessione al coordinatore del gruppo dopo un'eccezione. KafkaConsumer commitOffsetAsync ](https://issues.apache.org/jira/browse/KAFKA-13840)

Per evitare questo problema, ti consigliamo di utilizzare Apache Flink 1.18 o versione successiva in Amazon Managed Service for Apache Flink.

# Informazioni sulla versione precedente di Managed Service for Apache Flink
<a name="earlier"></a>

**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 comunicato questa modifica a giugno 2024 e ottobre 2024 e ora interromperemo il supporto per queste versioni in Amazon Managed Service for Apache Flink.  
Il 14 luglio 2025, interromperemo le tue applicazioni e le metteremo in uno stato READY. Potrai riavviare le applicazioni in quel momento e continuare a utilizzarle normalmente, in base ai limiti del servizio.
A partire dal 28 luglio 2025, disabiliteremo la possibilità di AVVIARE le tue applicazioni. Da questo momento non sarà più possibile avviare o utilizzare le applicazioni Flink versione 1.6.
Ti consigliamo di aggiornare immediatamente tutte le applicazioni esistenti utilizzando la versione 1.6, 1.8 o 1.11 di Apache Flink alla versione 1.20 di Apache Flink. Questa è la versione Flink supportata più recente. Puoi aggiornare le tue applicazioni 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 in loco per Apache Flink](how-in-place-version-upgrades.md).  
Se hai ulteriori domande o dubbi, puoi contattarci. [Supporto AWS](https://aws.amazon.com/support)

**Nota**  
La versione **1.13** di Apache Flink non è supportata dalla comunità Apache Flink da oltre tre anni. Ora prevediamo di terminare il supporto per questa versione in Amazon Managed Service for Apache Flink il **16 ottobre 2025**. Dopo questa data, non sarà più possibile creare, avviare o eseguire applicazioni utilizzando Apache Flink versione 1.13 in Amazon Managed Service for Apache Flink.  
Puoi aggiornare le tue applicazioni in modo statico utilizzando la funzionalità di aggiornamento delle versioni in loco in Managed Service for Apache Flink. Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione sul posto per Apache Flink](how-in-place-version-upgrades.md).

La versione **1.15.2** è supportata da Managed Service for Apache Flink, ma non è più supportata dalla community Apache Flink.

**Topics**
+ [Utilizzo del connettore Apache Flink Kinesis Streams con versioni precedenti di Apache Flink](#how-creating-apps-building-kinesis)
+ [Creazione di applicazioni con Apache Flink 1.8.2](#earlier-buildingapps-1_8)
+ [Creazione di applicazioni con Apache Flink 1.6.2](#earlier-buildingapps-1_6)
+ [Aggiornamento delle applicazioni](#earlier-upgrading)
+ [Connettori disponibili in Apache Flink 1.6.2 e 1.8.2](#earlier-connectors)
+ [Guida introduttiva: Flink 1.13.2](#getting-started-1-13)
+ [Guida introduttiva: Flink 1.11.1 - obsoleto](#earlier-gs-1_11)
+ [Guida introduttiva: Flink 1.8.2 - obsoleto](#earlier-gs-1_8)
+ [Guida introduttiva: Flink 1.6.2 - obsoleto](#earlier-gs-1_6)
+ [Esempi di versioni precedenti (precedenti) di Managed Service for Apache Flink](#legacy-examples)

## Utilizzo del connettore Apache Flink Kinesis Streams con versioni precedenti di Apache Flink
<a name="how-creating-apps-building-kinesis"></a>

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.

**Nota**  
Assicurati di creare il connettore con [KPL versione 0.14.0](https://mvnrepository.com/artifact/com.amazonaws/amazon-kinesis-producer/0.14.0) o successiva. 

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

1. Assicurati di avere installato [Apache Maven](https://maven.apache.org/) e che la variabile di ambiente `JAVA_HOME` punti a un JDK anziché a un JRE. Puoi testare la tua installazione di Apache Maven con il comando seguente:

   ```
   mvn -version
   ```

1. 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
   ```

1. Decomprimi il codice di origine di Apache Flink:

   ```
   tar -xvf flink-1.8.2-src.tgz
   ```

1. Passa alla directory del codice di origine di Apache Flink:

   ```
   cd flink-1.8.2
   ```

1. 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
<a name="earlier-buildingapps-1_8"></a>

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](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_8/pom.xml).

Per informazioni su come creare e utilizzare il codice applicativo per un'applicazione del servizio gestito per Apache Flink, consulta [Creazione di un'applicazione](how-creating-apps.md).

## Creazione di applicazioni con Apache Flink 1.6.2
<a name="earlier-buildingapps-1_6"></a>

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.](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/blob/master/GettingStarted_1_6/pom.xml)

Per informazioni su come creare e utilizzare il codice applicativo per un'applicazione del servizio gestito per Apache Flink, consulta [Creazione di un'applicazione](how-creating-apps.md).

## Aggiornamento delle applicazioni
<a name="earlier-upgrading"></a>

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, SDK o. AWS CLI AWS CloudFormation Console di gestione AWS Per ulteriori informazioni, consulta [Usa gli aggiornamenti di versione sul posto per Apache Flink](how-in-place-version-upgrades.md). 

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
<a name="earlier-connectors"></a>

Il framework Apache Flink contiene connettori per l'accesso ai dati da una varietà di origini. 
+ Per informazioni sui connettori disponibili nel framework Apache Flink 1.6.2, consulta [Connettori (1.6.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/) nella [documentazione di Apache Flink (1.6.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.6/).
+ Per informazioni sui connettori disponibili nel framework Apache Flink 1.8.2, consulta [Connettori (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/connectors/) nella [documentazione di Apache Flink (1.8.2)](https://ci.apache.org/projects/flink/flink-docs-release-1.8/).

## Guida introduttiva: Flink 1.13.2
<a name="getting-started-1-13"></a>

Questa sezione presenta i concetti fondamentali di Managed Service for Apache Flink e dell'API. DataStream 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. 

**Topics**
+ [Componenti di un'applicazione Managed Service per Apache Flink](#getting-started-components-1-13)
+ [Prerequisiti per il completamento degli esercizi](#setting-up-prerequisites-1-13)
+ [Fase 1: Configurare un AWS account e creare un utente amministratore](#earlier-gs-1_13-setting-up)
+ [Approfondimenti](#earlier-gs-1_13-setup-awscli)
+ [Passaggio 2: configura () AWS Command Line Interface AWS CLI](#setup-awscli-1-13)
+ [Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#get-started-exercise-1-13)
+ [Passaggio 4: Pulisci le risorse AWS](#getting-started-cleanup-1-13)
+ [Fase 5: fasi successive](#getting-started-next-steps-1-13)

### Componenti di un'applicazione Managed Service per Apache Flink
<a name="getting-started-components-1-13"></a>

Per elaborare i dati, l'applicazione Managed Service for Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime 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](how-sources.md).
+ **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](how-operators.md).
+ **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 usando i sink](how-sinks.md).

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
<a name="setting-up-prerequisites-1-13"></a>

Per completare le fasi in questa guida, è richiesto quanto segue:
+ [Java Development Kit (JDK) versione 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Imposta la variabile di ambiente `JAVA_HOME` in modo che punti alla posizione di installazione di JDK.
+ Ti consigliamo di utilizzare un ambiente di sviluppo (ad esempio [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) o [IntelliJ IDEA](https://www.jetbrains.com/idea/)) per sviluppare e compilare l'applicazione.
+ [Client Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Installa il client Git se non lo hai già fatto.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/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 [Configura un AWS account e crea un utente amministratore](setting-up.md).

### Fase 1: Configurare un AWS account e creare un utente amministratore
<a name="earlier-gs-1_13-setting-up"></a>

#### Registrati per un Account AWS
<a name="sign-up-for-aws"></a>

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.](https://portal.aws.amazon.com/billing/signup)

1. Segui le istruzioni online.

   Nel corso della procedura di registrazione riceverai una telefonata o un messaggio di testo e ti verrà chiesto di inserire un codice di verifica attraverso la tastiera del telefono.

   Quando ti iscrivi a un Account AWS, *Utente root dell'account AWS*viene 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)e scegliendo **Il mio account**.

#### Crea un utente con accesso amministrativo
<a name="create-an-admin"></a>

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 [Console di gestione AWS](https://console.aws.amazon.com/)come 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 [Accedere come utente root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) nella *Guida per l’utente di Accedi ad AWS *.

1. Abilita l’autenticazione a più fattori (MFA) per l’utente root.

   Per istruzioni, consulta [Abilitare un dispositivo MFA virtuale per l'utente Account AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) nella Guida per l'*utente IAM*.

**Crea un utente con accesso amministrativo**

1. Abilita il Centro identità IAM.

   Per istruzioni, consulta [Abilitazione del AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Nel Centro identità IAM, assegna 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 l'impostazione predefinita IAM Identity Center directory](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) nella *Guida per l'AWS IAM Identity Center utente*.

**Accesso come utente amministratore**
+ Per accedere come utente del Centro identità IAM, utilizza l’URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l’utente del Centro identità IAM.

  Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta [AWS Accedere al portale di accesso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) nella *Guida per l'Accedi ad AWS utente*.

**Assegnazione dell’accesso ad altri utenti**

1. Nel Centro identità IAM, crea un set di autorizzazioni conforme alla best practice per l’applicazione di autorizzazioni con il privilegio minimo.

   Segui le istruzioni riportate nella pagina [Creazione di un set di autorizzazioni](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) nella *Guida per l’utente di AWS IAM Identity Center *.

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

   Per istruzioni, consulta [Aggiungere gruppi](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) nella *Guida per l’utente di AWS IAM Identity Center *.

#### Concessione dell'accesso programmatico
<a name="setting-up-access-gs-13"></a>

Gli utenti hanno bisogno di un accesso programmatico se vogliono interagire con l' AWS Console di gestione AWS esterno di. 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 | 
| --- | --- | --- | 
| IAM | (Consigliato) Utilizza le credenziali della console come credenziali temporanee per firmare le richieste programmatiche a,, o. AWS CLI AWS SDKs AWS APIs |  Segui le istruzioni per l’interfaccia che desideri utilizzare. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
|  Identità della forza lavoro (Utenti gestiti nel centro identità IAM)  | 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
| 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) l'utente IAM. | 
| 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 

#### Approfondimenti
<a name="earlier-gs-1_13-setting-up-next-step-2"></a>

[Configura il () AWS Command Line Interface AWS CLI](#earlier-gs-1_13-setup-awscli)

### Approfondimenti
<a name="earlier-gs-1_13-setup-awscli"></a>

[Passaggio 2: configura () AWS Command Line Interface AWS CLI](#setup-awscli-1-13)

### Passaggio 2: configura () AWS Command Line Interface AWS CLI
<a name="setup-awscli-1-13"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 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 *: 
   + [Installazione dell' AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configurazione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. 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
<a name="setup-awscli-next-step-3-1-13"></a>

[Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#get-started-exercise-1-13)

### Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink
<a name="get-started-exercise-1-13"></a>

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

**Topics**
+ [Crea due flussi di dati Amazon Kinesis](#get-started-exercise-1-1-13)
+ [Scrivi record di esempio nel flusso di input](#get-started-exercise-2-1-13)
+ [Scarica ed esamina il codice Java per lo streaming di Apache Flink](#get-started-exercise-5-1-13)
+ [Compilate il codice dell'applicazione](#get-started-exercise-5.5-1-13)
+ [Caricate il codice Java di streaming Apache Flink](#get-started-exercise-6-1-13)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#get-started-exercise-7-1-13)
+ [Approfondimenti](#get-started-exercise-next-step-4-1-13)

#### Crea due flussi di dati Amazon Kinesis
<a name="get-started-exercise-1-1-13"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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
   ```

1. 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
<a name="get-started-exercise-2-1-13"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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'))
   ```

1. 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
<a name="get-started-exercise-5-1-13"></a>

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
   ```

1. 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)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) 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](how-properties.md).

#### Compilate il codice dell'applicazione
<a name="get-started-exercise-5.5-1-13"></a>

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per ulteriori informazioni sull'installazione di Apache Maven e Java Development Kit (JDK), consulta [Soddisfa i prerequisiti per completare gli esercizi](getting-started.md#setting-up-prerequisites).

**Per compilare il codice dell'applicazione**

1. Per usare il codice dell'applicazione, compila il codice e comprimilo 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. Crea il file JAR eseguendo il comando seguente nella directory che contiene il file `pom.xml`:

     ```
     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 un file JAR, oppure comprimere il pacchetto e caricarlo come un file ZIP. Se create l'applicazione utilizzando il AWS CLI, specificate il tipo di contenuto del codice (JAR o ZIP).

1. 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
<a name="get-started-exercise-6-1-13"></a>

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/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. 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)**.

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

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

1. Seleziona **Crea bucket**.

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

1. 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)**.

1. 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
<a name="get-started-exercise-7-1-13"></a>

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

**Topics**
+ [Crea ed esegui l'applicazione (console)](#get-started-exercise-7-console-1-13)
+ [Crea ed esegui l'applicazione (AWS CLI)](#get-started-exercise-7-cli-1-13)

##### Crea ed esegui l'applicazione (console)
<a name="get-started-exercise-7-console-1-13"></a>

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

##### Creazione dell'applicazione
<a name="get-started-exercise-7-console-create-1-13"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="get-started-exercise-7-console-iam-1-13"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="get-started-exercise-7-console-configure-1-13"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

1. In **Accedi alle risorse dell'applicazione**, per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2` per il ruolo IAM**.

1. Inserisci i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="get-started-exercise-7-console-run-1-13"></a>

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
<a name="get-started-exercise-7-console-stop-1-13"></a>

Nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Aggiornamento dell'applicazione
<a name="get-started-exercise-7-console-update-1-13"></a>

Tramite la console, puoi aggiornare le impostazioni dell'applicazione, ad esempio le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome di file del JAR dell'applicazione. Puoi anche ricaricare il JAR dell'applicazione dal bucket Amazon S3 se è necessario aggiornare il codice dell'applicazione.

Nella **MyApplication**pagina, scegli **Configura**. Aggiorna le impostazioni dell'applicazione e scegli **Aggiorna**.

##### Crea ed esegui l'applicazione (AWS CLI)
<a name="get-started-exercise-7-cli-1-13"></a>

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
<a name="get-started-exercise-7-cli-policy-1-13"></a>

**Nota**  
È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non si creano queste risorse IAM, l'applicazione non può accedere ai suoi dati e 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. Collega quindi la policy a un ruolo IAM (che verrà creato 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.

------
#### [ JSON ]

****  

```
{
    "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: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

**Nota**  
Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK per Java. Il servizio gestito per Apache Flink imposta automaticamente le credenziali richieste dall'SDK su quelle del ruolo IAM di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

##### Creazione di un ruolo IAM
<a name="get-started-exercise-7-cli-role-1-13"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. 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**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**.

   È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

1. 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](#get-started-exercise-7-cli-policy-1-13).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Crea l'applicazione Managed Service for Apache Flink
<a name="get-started-exercise-7-cli-create-1-13"></a>

1. Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket (`username`) con il suffisso 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"
                  }
               }
            ]
         }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) 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
<a name="get-started-exercise-7-cli-start-1-13"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) 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
<a name="get-started-exercise-7-cli-stop-1-13"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) 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 di registrazione CloudWatch
<a name="get-started-exercise-7-cli-cw-1-13"></a>

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[Configurare la registrazione delle applicazioni in Managed Service per Apache Flink](cloudwatch-logs.md).

##### Aggiornamento delle proprietà di ambiente
<a name="get-started-exercise-7-cli-update-env-1-13"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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. Salvare il seguente codice JSON in un file denominato `update_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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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
<a name="get-started-exercise-7-cli-update-code-1-13"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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](get-started-exercise.md#get-started-exercise-1)

```
{
    "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
<a name="get-started-exercise-next-step-4-1-13"></a>

[Passaggio 4: Pulisci le risorse AWS](#getting-started-cleanup-1-13)

### Passaggio 4: Pulisci le risorse AWS
<a name="getting-started-cleanup-1-13"></a>

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

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#getting-started-cleanup-app-1-13)
+ [Eliminare i flussi di dati Kinesis](#getting-started-cleanup-stream-1-13)
+ [Elimina l'oggetto e il bucket Amazon S3](#getting-started-cleanup-s3-1-13)
+ [Elimina le tue risorse IAM](#getting-started-cleanup-iam-1-13)
+ [CloudWatch Elimina le tue risorse](#getting-started-cleanup-cw-1-13)
+ [Approfondimenti](#getting-started-cleanup-next-step-5-1-13)

#### Eliminare l'applicazione Managed Service for Apache Flink
<a name="getting-started-cleanup-app-1-13"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

#### Eliminare i flussi di dati Kinesis
<a name="getting-started-cleanup-stream-1-13"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

#### Elimina l'oggetto e il bucket Amazon S3
<a name="getting-started-cleanup-s3-1-13"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

#### Elimina le tue risorse IAM
<a name="getting-started-cleanup-iam-1-13"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

#### CloudWatch Elimina le tue risorse
<a name="getting-started-cleanup-cw-1-13"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Approfondimenti
<a name="getting-started-cleanup-next-step-5-1-13"></a>

[Fase 5: fasi successive](#getting-started-next-steps-1-13)

### Fase 5: fasi successive
<a name="getting-started-next-steps-1-13"></a>

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](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-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 esempio di end-to-end streaming ETL 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 i ruoli e le politiche IAM, una dashboard e gli allarmi. CloudWatch CloudWatch 
+ **[AWS Soluzione di streaming di dati per Amazon MSK](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-msk/):** la soluzione di AWS streaming dati per Amazon MSK fornisce AWS CloudFormation modelli in cui i dati fluiscono attraverso produttori, storage di streaming, consumatori e destinazioni. 
+ ** [Clickstream Lab con Apache Flink e Apache Kafka](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html):** 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](https://catalog.workshops.aws/managed-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: esercitazioni pratiche](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/):** formazione introduttiva ufficiale su Apache Flink che ti consente di iniziare a scrivere applicazioni di streaming scalabili ETL, di analisi e basate su eventi.
**Nota**  
Tieni presente che il servizio gestito per Apache Flink non supporta la versione Apache Flink (1.12) utilizzata in questo corso di formazione. Puoi usare Flink 1.15.2 in Flink Managed Service per Apache Flink. 

## Guida introduttiva: Flink 1.11.1 - obsoleto
<a name="earlier-gs-1_11"></a>

**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. In questo momento puoi continuare a eseguire le applicazioni esistenti. 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](how-in-place-version-upgrades.md)

Questo argomento contiene una versione del [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md) tutorial che utilizza Apache Flink 1.11.1.

Questa sezione presenta i concetti fondamentali del servizio gestito per Apache Flink e dell'API. DataStream 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. 

**Topics**
+ [Componenti di un'applicazione Managed Service per Apache Flink](#earlier-gs-1_11-components)
+ [Prerequisiti per il completamento degli esercizi](#earlier-gs-1_11-setting-up-prerequisites)
+ [Fase 1: Configurare un AWS account e creare un utente amministratore](#earlier-gs-1_11-setting-up)
+ [Passaggio 2: configura () AWS Command Line Interface AWS CLI](#earlier-gs-1_11-setup-awscli)
+ [Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#earlier-gs-1_11-get-started-exercise)
+ [Passaggio 4: Pulisci le risorse AWS](#earlier-gs-1_11-cleanup)
+ [Fase 5: fasi successive](#earlier-gs-1_11-next-steps)

### Componenti di un'applicazione Managed Service per Apache Flink
<a name="earlier-gs-1_11-components"></a>

Per elaborare i dati, l'applicazione Managed Service for Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime 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](how-sources.md).
+ **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](how-operators.md).
+ **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 usando i sink](how-sinks.md).

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
<a name="earlier-gs-1_11-setting-up-prerequisites"></a>

Per completare le fasi in questa guida, è richiesto quanto segue:
+ [Java Development Kit (JDK) versione 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). Imposta la variabile di ambiente `JAVA_HOME` in modo che punti alla posizione di installazione di JDK.
+ Ti consigliamo di utilizzare un ambiente di sviluppo (ad esempio [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) o [IntelliJ IDEA](https://www.jetbrains.com/idea/)) per sviluppare e compilare l'applicazione.
+ [Client Git](https://git-scm.com/book/en/v2/earlier-gs-1_11-Installing-Git). Installa il client Git se non lo hai già fatto.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/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 [Configura un AWS account e crea un utente amministratore](setting-up.md).

### Fase 1: Configurare un AWS account e creare un utente amministratore
<a name="earlier-gs-1_11-setting-up"></a>

#### Registrati per un Account AWS
<a name="sign-up-for-aws"></a>

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.](https://portal.aws.amazon.com/billing/signup)

1. Segui le istruzioni online.

   Nel corso della procedura di registrazione riceverai una telefonata o un messaggio di testo e ti verrà chiesto di inserire un codice di verifica attraverso la tastiera del telefono.

   Quando ti iscrivi a un Account AWS, *Utente root dell'account AWS*viene 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)e scegliendo **Il mio account**.

#### Crea un utente con accesso amministrativo
<a name="create-an-admin"></a>

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 [Console di gestione AWS](https://console.aws.amazon.com/)come 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 [Accedere come utente root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) nella *Guida per l’utente di Accedi ad AWS *.

1. Abilita l’autenticazione a più fattori (MFA) per l’utente root.

   Per istruzioni, consulta [Abilitare un dispositivo MFA virtuale per l'utente Account AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) nella Guida per l'*utente IAM*.

**Crea un utente con accesso amministrativo**

1. Abilita il Centro identità IAM.

   Per istruzioni, consulta [Abilitazione del AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Nel Centro identità IAM, assegna 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 l'impostazione predefinita IAM Identity Center directory](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) nella *Guida per l'AWS IAM Identity Center utente*.

**Accesso come utente amministratore**
+ Per accedere come utente del Centro identità IAM, utilizza l’URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l’utente del Centro identità IAM.

  Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta [AWS Accedere al portale di accesso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) nella *Guida per l'Accedi ad AWS utente*.

**Assegnazione dell’accesso ad altri utenti**

1. Nel Centro identità IAM, crea un set di autorizzazioni conforme alla best practice per l’applicazione di autorizzazioni con il privilegio minimo.

   Segui le istruzioni riportate nella pagina [Creazione di un set di autorizzazioni](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) nella *Guida per l’utente di AWS IAM Identity Center *.

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

   Per istruzioni, consulta [Aggiungere gruppi](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) nella *Guida per l’utente di AWS IAM Identity Center *.

#### Concessione dell'accesso programmatico
<a name="setting-up-access-gs-11"></a>

Gli utenti hanno bisogno di un accesso programmatico se vogliono interagire con l' AWS Console di gestione AWS esterno di. 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 | 
| --- | --- | --- | 
| IAM | (Consigliato) Utilizza le credenziali della console come credenziali temporanee per firmare le richieste programmatiche a,, o. AWS CLI AWS SDKs AWS APIs |  Segui le istruzioni per l’interfaccia che desideri utilizzare. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
|  Identità della forza lavoro (Utenti gestiti nel centro identità IAM)  | 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
| 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) l'utente IAM. | 
| 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 

#### Approfondimenti
<a name="earlier-gs-1_11-setting-up-next-step-2"></a>

[Configura il () AWS Command Line Interface AWS CLI](#earlier-gs-1_11-setup-awscli)

### Passaggio 2: configura () AWS Command Line Interface AWS CLI
<a name="earlier-gs-1_11-setup-awscli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 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 *: 
   + [Installazione dell' AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configurazione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-earlier-gs-1_11.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. 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
<a name="earlier-gs-1_11-setup-awscli-next-step-3"></a>

[Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#earlier-gs-1_11-get-started-exercise)

### Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink
<a name="earlier-gs-1_11-get-started-exercise"></a>

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

**Topics**
+ [Crea due flussi di dati Amazon Kinesis](#earlier-gs-1_11-get-started-exercise-1)
+ [Scrivi record di esempio nel flusso di input](#earlier-gs-1_11-get-started-exercise-2)
+ [Scarica ed esamina il codice Java per lo streaming di Apache Flink](#earlier-gs-1_11-get-started-exercise-5)
+ [Compilate il codice dell'applicazione](#earlier-gs-1_11-get-started-exercise-5.5)
+ [Caricate il codice Java di streaming Apache Flink](#earlier-gs-1_11-get-started-exercise-6)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#earlier-gs-1_11-get-started-exercise-7)
+ [Approfondimenti](#earlier-gs-1_11-get-started-exercise-next-step-4)

#### Crea due flussi di dati Amazon Kinesis
<a name="earlier-gs-1_11-get-started-exercise-1"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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
   ```

1. 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
<a name="earlier-gs-1_11-get-started-exercise-2"></a>

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 per Python (Boto)](https://aws.amazon.com/sdk-for-python/).

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"))
   ```

1. 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
<a name="earlier-gs-1_11-get-started-exercise-5"></a>

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
   ```

1. 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)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) 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](how-properties.md).

#### Compilate il codice dell'applicazione
<a name="earlier-gs-1_11-get-started-exercise-5.5"></a>

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per ulteriori informazioni sull'installazione di Apache Maven e Java Development Kit (JDK), consulta [Soddisfa i prerequisiti per completare gli esercizi](getting-started.md#setting-up-prerequisites).

**Per compilare il codice dell'applicazione**

1. Per usare il codice dell'applicazione, compila il codice e comprimilo 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. Crea il file JAR eseguendo il comando seguente nella directory che contiene il file `pom.xml`:

     ```
     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 un file JAR, oppure comprimere il pacchetto e caricarlo come un file ZIP. Se create l'applicazione utilizzando il AWS CLI, specificate il tipo di contenuto del codice (JAR o ZIP).

1. 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
<a name="earlier-gs-1_11-get-started-exercise-6"></a>

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/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. 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)**.

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

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

1. Seleziona **Crea bucket**.

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

1. 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)**.

1. 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
<a name="earlier-gs-1_11-get-started-exercise-7"></a>

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

**Topics**
+ [Crea ed esegui l'applicazione (console)](#earlier-gs-1_11-get-started-exercise-7-console)
+ [Crea ed esegui l'applicazione (AWS CLI)](#earlier-gs-1_11-get-started-exercise-7-cli)

##### Crea ed esegui l'applicazione (console)
<a name="earlier-gs-1_11-get-started-exercise-7-console"></a>

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

##### Creazione dell’applicazione
<a name="earlier-gs-1_11-get-started-exercise-7-console-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="earlier-gs-1_11-get-started-exercise-7-console-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="earlier-gs-1_11-get-started-exercise-7-console-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Proprietà**, per **ID gruppo**, inserisci **ProducerConfigProperties**.

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="earlier-gs-1_11-get-started-exercise-7-console-run"></a>

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
<a name="earlier-gs-1_11-get-started-exercise-7-console-stop"></a>

Nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Aggiornamento dell'applicazione
<a name="earlier-gs-1_11-get-started-exercise-7-console-update"></a>

Tramite la console, puoi aggiornare le impostazioni dell'applicazione, ad esempio le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome di file del JAR dell'applicazione. Puoi anche ricaricare il JAR dell'applicazione dal bucket Amazon S3 se è necessario aggiornare il codice dell'applicazione.

Nella **MyApplication**pagina, scegli **Configura**. Aggiorna le impostazioni dell'applicazione e scegli **Aggiorna**.

##### Crea ed esegui l'applicazione (AWS CLI)
<a name="earlier-gs-1_11-get-started-exercise-7-cli"></a>

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 Managed Service for Apache Flink.

##### Creazione di una policy di autorizzazione
<a name="earlier-gs-1_11-get-started-exercise-7-cli-policy"></a>

**Nota**  
È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non si creano queste risorse IAM, l'applicazione non può accedere ai suoi dati e 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. Collega quindi la policy a un ruolo IAM (che verrà creato 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.

------
#### [ JSON ]

****  

```
{
    "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: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

**Nota**  
Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK per Java. Il servizio gestito per Apache Flink imposta automaticamente le credenziali richieste dall'SDK su quelle del ruolo IAM di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

##### Creazione di un ruolo IAM
<a name="earlier-gs-1_11-get-started-exercise-7-cli-role"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. 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**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**.

   È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

1. 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](#earlier-gs-1_11-get-started-exercise-7-cli-policy).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Crea l'applicazione Managed Service for Apache Flink
<a name="earlier-gs-1_11-get-started-exercise-7-cli-create"></a>

1. Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket (`username`) con il suffisso 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"
                  }
               }
            ]
         }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) 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.

##### Avvia l'applicazione
<a name="earlier-gs-1_11-get-started-exercise-7-cli-start"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) 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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-stop"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) 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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-cw"></a>

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[Configurare la registrazione delle applicazioni in Managed Service per Apache Flink](cloudwatch-logs.md).

##### Aggiornare le proprietà dell'ambiente
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-env"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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. Salvare il seguente codice JSON in un file denominato `update_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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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
<a name="earlier-gs-1_11-get-started-exercise-7-cli-update-code"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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](#earlier-gs-1_11-get-started-exercise-1)

```
{
    "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
<a name="earlier-gs-1_11-get-started-exercise-next-step-4"></a>

[Passaggio 4: Pulisci le risorse AWS](#earlier-gs-1_11-cleanup)

### Passaggio 4: Pulisci le risorse AWS
<a name="earlier-gs-1_11-cleanup"></a>

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

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#earlier-gs-1_11-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#earlier-gs-1_11-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#earlier-gs-1_11-cleanup-s3)
+ [Elimina le tue risorse IAM](#earlier-gs-1_11-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#earlier-gs-1_11-cleanup-cw)
+ [Approfondimenti](#earlier-gs-1_11-cleanup-next-step-5)

#### Eliminare l'applicazione Managed Service for Apache Flink
<a name="earlier-gs-1_11-cleanup-app"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

#### Eliminare i flussi di dati Kinesis
<a name="earlier-gs-1_11-cleanup-stream"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

#### Elimina l'oggetto e il bucket Amazon S3
<a name="earlier-gs-1_11-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

#### Elimina le tue risorse IAM
<a name="earlier-gs-1_11-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

#### CloudWatch Elimina le tue risorse
<a name="earlier-gs-1_11-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Approfondimenti
<a name="earlier-gs-1_11-cleanup-next-step-5"></a>

[Fase 5: fasi successive](#earlier-gs-1_11-next-steps)

### Fase 5: fasi successive
<a name="earlier-gs-1_11-next-steps"></a>

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](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-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 esempio di end-to-end streaming ETL 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 i ruoli e le politiche IAM, una dashboard e gli allarmi. CloudWatch CloudWatch 
+ **[AWS Soluzione di streaming di dati per Amazon MSK](https://aws.amazon.com/solutions/implementations/aws-streaming-data-solution-for-amazon-msk/):** la soluzione di AWS streaming dati per Amazon MSK fornisce AWS CloudFormation modelli in cui i dati fluiscono attraverso produttori, storage di streaming, consumatori e destinazioni. 
+ ** [Clickstream Lab con Apache Flink e Apache Kafka](https://amazonmsk-labs.workshop.aws/en/mskkdaflinklab.html):** 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](https://catalog.workshops.aws/managed-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: esercitazioni pratiche](https://ci.apache.org/projects/flink/flink-docs-master/learn-flink/):** formazione introduttiva ufficiale su Apache Flink che ti consente di iniziare a scrivere applicazioni di streaming scalabili ETL, di analisi e basate su eventi.
**Nota**  
Tieni presente che il servizio gestito per Apache Flink non supporta la versione Apache Flink (1.12) utilizzata in questo corso di formazione. Puoi usare 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](https://github.com/apache/flink/tree/master/flink-examples/flink-examples-streaming/src/main/java/org/apache/flink/streaming/examples)** di applicazioni Apache Flink. 

## Guida introduttiva: Flink 1.8.2 - obsoleto
<a name="earlier-gs-1_8"></a>

**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. In questo momento puoi continuare a eseguire le applicazioni esistenti. 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](how-in-place-version-upgrades.md)

Questo argomento contiene una versione del [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md) tutorial che utilizza Apache Flink 1.8.2.

**Topics**
+ [Componenti dell'applicazione Managed Service for Apache Flink](#getting-started-components)
+ [Prerequisiti per il completamento degli esercizi](#su-1_8-prerequisites)
+ [Fase 1: Configurare un AWS account e creare un utente amministratore](#earlier-gs-1_8-setting-up)
+ [Passaggio 2: configura () AWS Command Line Interface AWS CLI](#su-1_8-awscli)
+ [Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#earlier-gs-1_8-exercise)
+ [Passaggio 4: Pulisci le risorse AWS](#earlier-gs-1_8-cleanup)

### Componenti dell'applicazione Managed Service for Apache Flink
<a name="getting-started-components"></a>

Per elaborare i dati, l'applicazione Managed Service for Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime 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](how-sources.md).
+ **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](how-operators.md).
+ **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 usando i sink](how-sinks.md).

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
<a name="su-1_8-prerequisites"></a>

Per completare le fasi in questa guida, è richiesto quanto segue:
+ [Java Development Kit (JDK) versione 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Imposta la variabile di ambiente `JAVA_HOME` in modo che punti alla posizione di installazione di JDK.
+ Per utilizzare il connettore Apache Flink Kinesis in questo tutorial, devi scaricare e installare Apache Flink. Per informazioni dettagliate, vedi [Utilizzo del connettore Apache Flink Kinesis Streams con versioni precedenti di Apache Flink](#how-creating-apps-building-kinesis).
+ Ti consigliamo di utilizzare un ambiente di sviluppo (ad esempio [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) o [IntelliJ IDEA](https://www.jetbrains.com/idea/)) per sviluppare e compilare l'applicazione.
+ [Client Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Installa il client Git se non lo hai già fatto.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/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 [Fase 1: Configurare un AWS account e creare un utente amministratore](#earlier-gs-1_8-setting-up).

### Fase 1: Configurare un AWS account e creare un utente amministratore
<a name="earlier-gs-1_8-setting-up"></a>

#### Registrati per un Account AWS
<a name="sign-up-for-aws"></a>

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.](https://portal.aws.amazon.com/billing/signup)

1. Segui le istruzioni online.

   Nel corso della procedura di registrazione riceverai una telefonata o un messaggio di testo e ti verrà chiesto di inserire un codice di verifica attraverso la tastiera del telefono.

   Quando ti iscrivi a un Account AWS, *Utente root dell'account AWS*viene 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)e scegliendo **Il mio account**.

#### Crea un utente con accesso amministrativo
<a name="create-an-admin"></a>

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 [Console di gestione AWS](https://console.aws.amazon.com/)come 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 [Accedere come utente root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) nella *Guida per l’utente di Accedi ad AWS *.

1. Abilita l’autenticazione a più fattori (MFA) per l’utente root.

   Per istruzioni, consulta [Abilitare un dispositivo MFA virtuale per l'utente Account AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) nella Guida per l'*utente IAM*.

**Crea un utente con accesso amministrativo**

1. Abilita il Centro identità IAM.

   Per istruzioni, consulta [Abilitazione del AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Nel Centro identità IAM, assegna 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 l'impostazione predefinita IAM Identity Center directory](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) nella *Guida per l'AWS IAM Identity Center utente*.

**Accesso come utente amministratore**
+ Per accedere come utente del Centro identità IAM, utilizza l’URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l’utente del Centro identità IAM.

  Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta [AWS Accedere al portale di accesso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) nella *Guida per l'Accedi ad AWS utente*.

**Assegnazione dell’accesso ad altri utenti**

1. Nel Centro identità IAM, crea un set di autorizzazioni conforme alla best practice per l’applicazione di autorizzazioni con il privilegio minimo.

   Segui le istruzioni riportate nella pagina [Creazione di un set di autorizzazioni](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) nella *Guida per l’utente di AWS IAM Identity Center *.

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

   Per istruzioni, consulta [Aggiungere gruppi](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) nella *Guida per l’utente di AWS IAM Identity Center *.

#### Concessione dell'accesso programmatico
<a name="setting-up-access-gs-8"></a>

Gli utenti hanno bisogno di un accesso programmatico se vogliono interagire con l' AWS Console di gestione AWS esterno di. 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 | 
| --- | --- | --- | 
| IAM | (Consigliato) Utilizza le credenziali della console come credenziali temporanee per firmare le richieste programmatiche a,, o. AWS CLI AWS SDKs AWS APIs |  Segui le istruzioni per l’interfaccia che desideri utilizzare. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
|  Identità della forza lavoro (Utenti gestiti nel centro identità IAM)  | 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
| 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) l'utente IAM. | 
| 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 

### Passaggio 2: configura () AWS Command Line Interface AWS CLI
<a name="su-1_8-awscli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 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 *: 
   + [Installazione dell' AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configurazione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. 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
<a name="su-1_8-awscli-next-step-3"></a>

[Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#earlier-gs-1_8-exercise)

### Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink
<a name="earlier-gs-1_8-exercise"></a>

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

**Topics**
+ [Crea due flussi di dati Amazon Kinesis](#earlier-gs-1_8-exercise-1)
+ [Scrivi record di esempio nel flusso di input](#earlier-gs-1_8-exercise-2)
+ [Scarica ed esamina il codice Java per lo streaming di Apache Flink](#earlier-gs-1_8-exercise-5)
+ [Compilate il codice dell'applicazione](#earlier-gs-1_8-exercise-5.5)
+ [Caricate il codice Java di streaming Apache Flink](#earlier-gs-1_8-exercise-6)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#earlier-gs-1_8-exercise-7)
+ [Approfondimenti](#earlier-gs-1_8-exercise-next-step-4)

#### Crea due flussi di dati Amazon Kinesis
<a name="earlier-gs-1_8-exercise-1"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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
   ```

1. 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
<a name="earlier-gs-1_8-exercise-2"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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"))
   ```

1. 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
<a name="earlier-gs-1_8-exercise-5"></a>

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
   ```

1. 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)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) 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](how-properties.md).

#### Compilate il codice dell'applicazione
<a name="earlier-gs-1_8-exercise-5.5"></a>

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per ulteriori informazioni sull'installazione di Apache Maven e Java Development Kit (JDK), consulta [Prerequisiti per il completamento degli esercizi](#su-1_8-prerequisites).

**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](#how-creating-apps-building-kinesis).**

**Per compilare il codice dell'applicazione**

1. Per usare il codice dell'applicazione, compila il codice e comprimilo 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. Crea il file JAR eseguendo il comando seguente nella directory che contiene il file `pom.xml`:

     ```
     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 un file JAR, oppure comprimere il pacchetto e caricarlo come un file ZIP. Se create l'applicazione utilizzando il AWS CLI, specificate il tipo di contenuto del codice (JAR o ZIP).

1. 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
<a name="earlier-gs-1_8-exercise-6"></a>

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/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. 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)**.

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

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

1. Seleziona **Crea bucket**.

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

1. 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)**.

1. 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
<a name="earlier-gs-1_8-exercise-7"></a>

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

**Topics**
+ [Crea ed esegui l'applicazione (console)](#earlier-gs-1_8-exercise-7-console)
+ [Crea ed esegui l'applicazione (AWS CLI)](#earlier-gs-1_8-exercise-7-cli)

##### Crea ed esegui l'applicazione (console)
<a name="earlier-gs-1_8-exercise-7-console"></a>

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

##### Creazione dell’applicazione
<a name="earlier-gs-1_8-exercise-7-console-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="earlier-gs-1_8-exercise-7-console-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="earlier-gs-1_8-exercise-7-console-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="earlier-gs-1_8-exercise-7-console-run"></a>

1. **Nella **MyApplication**pagina, scegli Esegui.** Conferma l'operazione.

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

##### Arresta l'applicazione
<a name="earlier-gs-1_8-exercise-7-console-stop"></a>

Nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Aggiornamento dell'applicazione
<a name="earlier-gs-1_8-exercise-7-console-update"></a>

Tramite la console, puoi aggiornare le impostazioni dell'applicazione, ad esempio le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome di file del JAR dell'applicazione. Puoi anche ricaricare il JAR dell'applicazione dal bucket Amazon S3 se è necessario aggiornare il codice dell'applicazione.

Nella **MyApplication**pagina, scegli **Configura**. Aggiorna le impostazioni dell'applicazione e scegli **Aggiorna**.

##### Crea ed esegui l'applicazione (AWS CLI)
<a name="earlier-gs-1_8-exercise-7-cli"></a>

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
<a name="earlier-gs-1_8-exercise-7-cli-policy"></a>

**Nota**  
È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non si creano queste risorse IAM, l'applicazione non può accedere ai suoi dati e 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. Collega quindi la policy a un ruolo IAM (che verrà creato 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.

------
#### [ JSON ]

****  

```
{
    "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: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

**Nota**  
Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK per Java. Il servizio gestito per Apache Flink imposta automaticamente le credenziali richieste dall'SDK su quelle del ruolo IAM di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

##### Creazione di un ruolo IAM
<a name="earlier-gs-1_8-exercise-7-cli-role"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. 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**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**.

   È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

1. 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](#earlier-gs-1_8-exercise-7-cli-policy).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Crea l'applicazione Managed Service for Apache Flink
<a name="earlier-gs-1_8-exercise-7-cli-create"></a>

1. Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket (`username`) con il suffisso 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"
                  }
               }
            ]
         }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) 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.

##### Avvia l'applicazione
<a name="earlier-gs-1_8-exercise-7-cli-start"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) 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
<a name="earlier-gs-1_8-exercise-7-cli-stop"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) 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
<a name="earlier-gs-1_8-exercise-7-cli-cw"></a>

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[Configurare la registrazione delle applicazioni in Managed Service per Apache Flink](cloudwatch-logs.md).

##### Aggiornare le proprietà dell'ambiente
<a name="earlier-gs-1_8-exercise-7-cli-update-env"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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. Salvare il seguente codice JSON in un file denominato `update_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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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
<a name="earlier-gs-1_8-exercise-7-cli-update-code"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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](#earlier-gs-1_8-exercise-1)

```
{
    "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
<a name="earlier-gs-1_8-exercise-next-step-4"></a>

[Passaggio 4: Pulisci le risorse AWS](#earlier-gs-1_8-cleanup)

### Passaggio 4: Pulisci le risorse AWS
<a name="earlier-gs-1_8-cleanup"></a>

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

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#earlier-gs-1_8-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#earlier-gs-1_8-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#earlier-gs-1_8-cleanup-s3)
+ [Elimina le tue risorse IAM](#earlier-gs-1_8-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#earlier-gs-1_8-cleanup-cw)

#### Eliminare l'applicazione Managed Service for Apache Flink
<a name="earlier-gs-1_8-cleanup-app"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

1. Scegli **Configura**.

1. Nella sezione **Snapshot**, scegli **Disabilita**, quindi scegli **Aggiorna**.

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

#### Eliminare i flussi di dati Kinesis
<a name="earlier-gs-1_8-cleanup-stream"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

#### Elimina l'oggetto e il bucket Amazon S3
<a name="earlier-gs-1_8-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

#### Elimina le tue risorse IAM
<a name="earlier-gs-1_8-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

#### CloudWatch Elimina le tue risorse
<a name="earlier-gs-1_8-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

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

## Guida introduttiva: Flink 1.6.2 - obsoleto
<a name="earlier-gs-1_6"></a>

**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. In questo momento puoi continuare a eseguire le applicazioni esistenti. 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](how-in-place-version-upgrades.md)

Questo argomento contiene una versione del [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md) tutorial che utilizza Apache Flink 1.6.2.

**Topics**
+ [Componenti di un'applicazione Managed Service per Apache Flink](#earlier-gs-1_6-components)
+ [Prerequisiti per il completamento degli esercizi](#su-1_6-prerequisites)
+ [Fase 1: Configurare un AWS account e creare un utente amministratore](#earlier-gs-1_6-setting-up)
+ [Passaggio 2: configura () AWS Command Line Interface AWS CLI](#su-1_6-awscli)
+ [Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#earlier-gs-1_6-exercise)
+ [Passaggio 4: Pulisci le risorse AWS](#earlier-gs-1_6-cleanup)

### Componenti di un'applicazione Managed Service per Apache Flink
<a name="earlier-gs-1_6-components"></a>

Per elaborare i dati, l'applicazione Managed Service for Apache Flink utilizza un'applicazione Java/Apache Maven o Scala che elabora l'input e produce l'output utilizzando il runtime 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](how-sources.md).
+ **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](how-operators.md).
+ **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 usando i sink](how-sinks.md).

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
<a name="su-1_6-prerequisites"></a>

Per completare le fasi in questa guida, è richiesto quanto segue:
+ [Java Development Kit (JDK) versione 8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). Imposta la variabile di ambiente `JAVA_HOME` in modo che punti alla posizione di installazione di JDK.
+ Ti consigliamo di utilizzare un ambiente di sviluppo (ad esempio [Eclipse Java Neon](http://www.eclipse.org/downloads/packages/release/neon/3) o [IntelliJ IDEA](https://www.jetbrains.com/idea/)) per sviluppare e compilare l'applicazione.
+ [Client Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Installa il client Git se non lo hai già fatto.
+ [Apache Maven Compiler Plugin](https://maven.apache.org/plugins/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 [Fase 1: Configurare un AWS account e creare un utente amministratore](#earlier-gs-1_6-setting-up).

### Fase 1: Configurare un AWS account e creare un utente amministratore
<a name="earlier-gs-1_6-setting-up"></a>

#### Registrati per un Account AWS
<a name="sign-up-for-aws"></a>

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.](https://portal.aws.amazon.com/billing/signup)

1. Segui le istruzioni online.

   Nel corso della procedura di registrazione riceverai una telefonata o un messaggio di testo e ti verrà chiesto di inserire un codice di verifica attraverso la tastiera del telefono.

   Quando ti iscrivi a un Account AWS, *Utente root dell'account AWS*viene 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

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/](https://aws.amazon.com/)e scegliendo **Il mio account**.

#### Crea un utente con accesso amministrativo
<a name="create-an-admin"></a>

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 [Console di gestione AWS](https://console.aws.amazon.com/)come 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 [Accedere come utente root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) nella *Guida per l’utente di Accedi ad AWS *.

1. Abilita l’autenticazione a più fattori (MFA) per l’utente root.

   Per istruzioni, consulta [Abilitare un dispositivo MFA virtuale per l'utente Account AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) nella Guida per l'*utente IAM*.

**Crea un utente con accesso amministrativo**

1. Abilita il Centro identità IAM.

   Per istruzioni, consulta [Abilitazione del AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Nel Centro identità IAM, assegna 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 l'impostazione predefinita IAM Identity Center directory](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) nella *Guida per l'AWS IAM Identity Center utente*.

**Accesso come utente amministratore**
+ Per accedere come utente del Centro identità IAM, utilizza l’URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l’utente del Centro identità IAM.

  Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta [AWS Accedere al portale di accesso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) nella *Guida per l'Accedi ad AWS utente*.

**Assegnazione dell’accesso ad altri utenti**

1. Nel Centro identità IAM, crea un set di autorizzazioni conforme alla best practice per l’applicazione di autorizzazioni con il privilegio minimo.

   Segui le istruzioni riportate nella pagina [Creazione di un set di autorizzazioni](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) nella *Guida per l’utente di AWS IAM Identity Center *.

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

   Per istruzioni, consulta [Aggiungere gruppi](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) nella *Guida per l’utente di AWS IAM Identity Center *.

#### Concessione dell'accesso programmatico
<a name="setting-up-access-gs-6"></a>

Gli utenti hanno bisogno di un accesso programmatico se vogliono interagire con l' AWS Console di gestione AWS esterno di. 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 | 
| --- | --- | --- | 
| IAM | (Consigliato) Utilizza le credenziali della console come credenziali temporanee per firmare le richieste programmatiche a,, o. AWS CLI AWS SDKs AWS APIs |  Segui le istruzioni per l’interfaccia che desideri utilizzare. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
|  Identità della forza lavoro (Utenti gestiti nel centro identità IAM)  | 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 
| 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) l'utente IAM. | 
| 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)  | 

### Passaggio 2: configura () AWS Command Line Interface AWS CLI
<a name="su-1_6-awscli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 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 *: 
   + [Installazione dell' AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)
   + [Configurazione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html) 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](https://docs.aws.amazon.com/general/latest/gr/rande.html) 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.

1. 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
<a name="su-1_6-next-step-3"></a>

[Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink](#earlier-gs-1_6-exercise)

### Fase 3: Creare ed eseguire un servizio gestito per l'applicazione Apache Flink
<a name="earlier-gs-1_6-exercise"></a>

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

**Topics**
+ [Crea due flussi di dati Amazon Kinesis](#earlier-gs-1_6-exercise-1)
+ [Scrivi record di esempio nel flusso di input](#earlier-gs-1_6-exercise-2)
+ [Scarica ed esamina il codice Java per lo streaming di Apache Flink](#earlier-gs-1_6-exercise-5)
+ [Compilate il codice dell'applicazione](#earlier-gs-1_6-exercise-5.5)
+ [Caricate il codice Java di streaming Apache Flink](#earlier-gs-1_6-exercise-6)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#earlier-gs-1_6-exercise-7)

#### Crea due flussi di dati Amazon Kinesis
<a name="earlier-gs-1_6-exercise-1"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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
   ```

1. 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
<a name="earlier-gs-1_6-exercise-2"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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"))
   ```

1. 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
<a name="earlier-gs-1_6-exercise-5"></a>

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
   ```

1. 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)](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) 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](how-properties.md).

#### Compilate il codice dell'applicazione
<a name="earlier-gs-1_6-exercise-5.5"></a>

In questa sezione, viene utilizzato il compilatore Apache Maven per creare il codice Java per l'applicazione. Per ulteriori informazioni sull'installazione di Apache Maven e Java Development Kit (JDK), consulta [Prerequisiti per il completamento degli esercizi](#su-1_6-prerequisites).

**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](https://ci.apache.org/projects/flink/flink-docs-release-1.6/dev/connectors/kinesis.html)**.

**Per compilare il codice dell'applicazione**

1. Per usare il codice dell'applicazione, compila il codice e comprimilo 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. Crea il file JAR eseguendo il comando seguente nella directory che contiene il file `pom.xml`:

     ```
     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](how-creating-apps.md#how-creating-apps-building-flink).
   + Utilizza il tuo ambiente di sviluppo. Per informazioni dettagliate, consulta la documentazione relativa all'ambiente di sviluppo.

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

1. 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
<a name="earlier-gs-1_6-exercise-6"></a>

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/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. 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)**.

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

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

1. Seleziona **Crea bucket**.

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

1. 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)**.

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

1. 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
<a name="earlier-gs-1_6-exercise-7"></a>

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

**Topics**
+ [Crea ed esegui l'applicazione (console)](#earlier-gs-1_6-exercise-7-console)
+ [Crea ed esegui l'applicazione (AWS CLI)](#earlier-gs-1_6-exercise-7-cli)

##### Crea ed esegui l'applicazione (console)
<a name="earlier-gs-1_6-exercise-7-console"></a>

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

##### Creazione dell’applicazione
<a name="earlier-gs-1_6-exercise-7-console-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="earlier-gs-1_6-exercise-7-console-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="earlier-gs-1_6-exercise-7-console-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="earlier-gs-1_6-exercise-7-console-run"></a>

1. **Nella **MyApplication**pagina, scegli Esegui.** Conferma l'operazione.

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

##### Arresta l'applicazione
<a name="earlier-gs-1_6-exercise-7-console-stop"></a>

Nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Aggiornamento dell'applicazione
<a name="earlier-gs-1_6-exercise-7-console-update"></a>

Tramite la console, puoi aggiornare le impostazioni dell'applicazione, ad esempio le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome di file del JAR dell'applicazione. Puoi anche ricaricare il JAR dell'applicazione dal bucket Amazon S3 se è necessario aggiornare il codice dell'applicazione.

Nella **MyApplication**pagina, scegli **Configura**. Aggiorna le impostazioni dell'applicazione e scegli **Aggiorna**.

##### Crea ed esegui l'applicazione (AWS CLI)
<a name="earlier-gs-1_6-exercise-7-cli"></a>

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
<a name="earlier-gs-1_6-exercise-7-cli-policy"></a>

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. Collega quindi la policy a un ruolo IAM (che verrà creato 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.

------
#### [ JSON ]

****  

```
{
    "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: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

**Nota**  
Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK per Java. Il servizio gestito per Apache Flink imposta automaticamente le credenziali richieste dall'SDK su quelle del ruolo IAM di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

##### Creazione di un ruolo IAM
<a name="earlier-gs-1_6-exercise-7-cli-role"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. 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**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**.

   È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

1. 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](#earlier-gs-1_6-exercise-7-cli-policy).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Crea l'applicazione Managed Service for Apache Flink
<a name="earlier-gs-1_6-exercise-7-cli-create"></a>

1. Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket (`username`) con il suffisso 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"
                  }
               }
            ]
         }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) 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.

##### Avvia l'applicazione
<a name="earlier-gs-1_6-exercise-7-cli-start"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) 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
<a name="earlier-gs-1_6-exercise-7-cli-stop"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
      "ApplicationName": "test"
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) 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
<a name="earlier-gs-1_6-exercise-7-cli-cw"></a>

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[Configurare la registrazione delle applicazioni in Managed Service per Apache Flink](cloudwatch-logs.md).

##### Aggiornare le proprietà dell'ambiente
<a name="earlier-gs-1_6-exercise-7-cli-update-env"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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. Salvare il seguente codice JSON in un file denominato `update_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"
                  }
               }
            ]
         }
      }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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
<a name="earlier-gs-1_6-exercise-7-cli-update-code"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI azione.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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](#earlier-gs-1_6-exercise-1)

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

### Passaggio 4: Pulisci le risorse AWS
<a name="earlier-gs-1_6-cleanup"></a>

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

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#earlier-gs-1_6-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#earlier-gs-1_6-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#earlier-gs-1_6-cleanup-s3)
+ [Elimina le tue risorse IAM](#earlier-gs-1_6-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#earlier-gs-1_6-cleanup-cw)

#### Eliminare l'applicazione Managed Service for Apache Flink
<a name="earlier-gs-1_6-cleanup-app"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

1. Scegli **Configura**.

1. Nella sezione **Snapshot**, scegli **Disabilita**, quindi scegli **Aggiorna**.

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

#### Eliminare i flussi di dati Kinesis
<a name="earlier-gs-1_6-cleanup-stream"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

#### Elimina l'oggetto e il bucket Amazon S3
<a name="earlier-gs-1_6-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

#### Elimina le tue risorse IAM
<a name="earlier-gs-1_6-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

#### CloudWatch Elimina le tue risorse
<a name="earlier-gs-1_6-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

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

## Esempi di versioni precedenti (precedenti) di Managed Service for Apache Flink
<a name="legacy-examples"></a>

**Nota**  
Per gli esempi attuali, vedere. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

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: 
+ [Come funziona](how-it-works.md)
+ [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md)

**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 ruoli IAM in modo appropriato.

**Topics**
+ [DataStream Esempi di API](#examples-datastream)
+ [Esempi di Python](#examples-python)
+ [Esempi di Scala](#examples-scala)

### DataStream Esempi di API
<a name="examples-datastream"></a>

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

**Topics**
+ [Esempio: Tumbling window](#examples-tumbling)
+ [Esempio: finestra scorrevole](#examples-sliding)
+ [Esempio: scrittura su un bucket Amazon S3](#examples-s3)
+ [Tutorial: Utilizzo di un'applicazione Managed Service for Apache Flink per replicare i dati da un argomento in un cluster MSK a un altro in un VPC](#example-msk)
+ [Esempio: utilizzare un consumatore EFO con un flusso di dati Kinesis](#examples-efo)
+ [Esempio: scrittura su Firehose](#get-started-exercise-fh)
+ [Esempio: lettura da uno stream Kinesis in un altro account](#examples-cross)
+ [Tutorial: utilizzo di un truststore personalizzato con Amazon MSK](#example-keystore)

#### Esempio: Tumbling window
<a name="examples-tumbling"></a>

**Nota**  
Per gli esempi attuali, vedi[Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md).

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 l' DataStream API in Managed Service for Apache Flink](getting-started.md).

**Topics**
+ [Crea risorse dipendenti](#examples-tumbling-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-tumbling-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-tumbling-download)
+ [Compilate il codice dell'applicazione](#examples-tumbling-compile)
+ [Carica il codice Java di streaming Apache Flink](#examples-tumbling-upload)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#examples-tumbling-create-run)
+ [Pulisci le risorse AWS](#examples-tumbling-cleanup)

##### Crea risorse dipendenti
<a name="examples-tumbling-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-tumbling-write"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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'))
   ```

1. 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
<a name="examples-tumbling-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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
<a name="examples-tumbling-compile"></a>

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](getting-started.md#setting-up-prerequisites) nel tutorial [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

1. 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 file JAR dell'applicazione (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Carica il codice Java di streaming Apache Flink
<a name="examples-tumbling-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendenti](#examples-tumbling-resources).

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

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

1. 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
<a name="examples-tumbling-create-run"></a>

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

##### Creazione dell’applicazione
<a name="examples-tumbling-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="get-started-exercise-7-console-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="examples-tumbling-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="examples-tumbling-run"></a>

1. **Nella **MyApplication**pagina, scegli Esegui.** Lascia selezionata l'opzione **Esegui senza snapshot** e conferma l'operazione.

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

##### Pulisci le risorse AWS
<a name="examples-tumbling-cleanup"></a>

Questa sezione include le procedure per ripulire AWS le risorse create nel tutorial di Tumbling Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-tumbling-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-tumbling-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-tumbling-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-tumbling-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-tumbling-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-tumbling-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-tumbling-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Elimina l'oggetto e il bucket Amazon S3
<a name="examples-tumbling-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-tumbling-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-tumbling-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Esempio: finestra scorrevole
<a name="examples-sliding"></a>

**Nota**  
Per gli esempi attuali, vedere[Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md).

**Nota**  
Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

**Topics**
+ [Crea risorse dipendenti](#examples-sliding-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-sliding-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-sliding-download)
+ [Compilate il codice dell'applicazione](#examples-sliding-compile)
+ [Carica il codice Java di streaming Apache Flink](#examples-sliding-upload)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#examples-sliding-create-run)
+ [Pulisci le risorse AWS](#examples-sliding-cleanup)

##### Crea risorse dipendenti
<a name="examples-sliding-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-sliding-write"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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"))
   ```

1. 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
<a name="examples-sliding-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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
<a name="examples-sliding-compile"></a>

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](getting-started.md#setting-up-prerequisites) nel tutorial [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

1. 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 file JAR dell'applicazione (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Carica il codice Java di streaming Apache Flink
<a name="examples-sliding-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendenti](#examples-sliding-resources).

1. **Nella console Amazon S3, scegli il *<username>* bucket **ka-app-code-**, quindi scegli Carica.**

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

1. 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
<a name="examples-sliding-create-run"></a>

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

##### Creazione dell’applicazione
<a name="examples-sliding-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="get-started-exercise-7-console-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="examples-sliding-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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
<a name="examples-sliding-parallelism"></a>

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 [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)azioni o. [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)

##### Esecuzione dell'applicazione.
<a name="examples-sliding-run"></a>

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
<a name="examples-sliding-cleanup"></a>

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-sliding-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-sliding-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-sliding-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-sliding-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-sliding-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-sliding-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-sliding-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Elimina l'oggetto e il bucket Amazon S3
<a name="examples-sliding-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-sliding-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-sliding-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Esempio: scrittura su un bucket Amazon S3
<a name="examples-s3"></a>

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 l' DataStream API in Managed Service for Apache Flink](getting-started.md).

**Topics**
+ [Crea risorse dipendenti](#examples-s3-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-s3-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-s3-download)
+ [Modificare il codice dell'applicazione](#examples-s3-modify)
+ [Compila il codice dell'applicazione](#examples-s3-compile)
+ [Carica il codice Java di streaming Apache Flink](#examples-s3-upload)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#examples-s3-create-run)
+ [Verifica l'output dell'applicazione](#examples-s3-verify)
+ [Opzionale: personalizza la sorgente e il sink](#examples-s3-customize)
+ [Pulisci le risorse AWS](#examples-s3-cleanup)

##### Crea risorse dipendenti
<a name="examples-s3-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-s3-write"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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'))
   ```

1. 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
<a name="examples-s3-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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 su`StreamingFileSink`, consultate la documentazione [StreamingFileSink](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html)di [Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### Modificare il codice dell'applicazione
<a name="examples-s3-modify"></a>

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
<a name="examples-s3-compile"></a>

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](getting-started.md#setting-up-prerequisites) nel tutorial [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

1. Compila l'applicazione con il seguente comando: 

   ```
   mvn package -Dflink.version=1.15.3
   ```

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

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

##### Carica il codice Java di streaming Apache Flink
<a name="examples-s3-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendentiScrivi record di esempio nel flusso di input](#examples-s3-resources).

1. **Nella console Amazon S3, scegli il *<username>* bucket **ka-app-code-**, accedi alla cartella del **codice** e scegli Carica.**

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

1. 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
<a name="examples-s3-create-run"></a>

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

##### Creazione dell’applicazione
<a name="examples-s3-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.
**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono denominate utilizzando il nome dell'applicazione e la Regione come segue:  
Per **Nome applicazione**, inserisci **MyApplication**.
Per **Runtime**, scegli **Apache Flink**.
Lascia la versione **Apache Flink 1.15.2 (versione consigliata)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un servizio gestito per Apache Flink tramite la console, hai la possibilità di richiedere la creazione di un ruolo e una policy IAM per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="get-started-exercise-7-console-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

1. 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
<a name="examples-s3-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="examples-s3-run"></a>

1. **Nella **MyApplication**pagina, scegli Esegui.** Lascia selezionata l'opzione **Esegui senza snapshot** e conferma l'operazione.

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

##### Verifica l'output dell'applicazione
<a name="examples-s3-verify"></a>

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
<a name="examples-s3-customize"></a>

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](#examples-s3-compile) per compilare il codice dell'applicazione aggiornato.
Ripeti i passaggi indicati nella sezione [Carica il codice Java di streaming Apache Flink](#examples-s3-upload) 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.

**Topics**
+ [Configura il partizionamento dei dati](#examples-s3-configure-partition)
+ [Configura la frequenza di lettura](#examples-s3-configure-read)
+ [Configura il buffering di scrittura](#examples-s3-configure-write)

##### Configura il partizionamento dei dati
<a name="examples-s3-configure-partition"></a>

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;
   ```

1. 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](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.html) Implementa la logica personalizzata utilizzando il metodo `getBucketId`.

Un'implementazione personalizzata del `BucketAssigner` può utilizzare il parametro [Context](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/streaming/api/functions/sink/filesystem/BucketAssigner.Context.html) per ottenere ulteriori informazioni su un record al fine di determinarne la cartella di destinazione.

##### Configura la frequenza di lettura
<a name="examples-s3-configure-read"></a>

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
<a name="examples-s3-configure-write"></a>

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'[ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)azione 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](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)

1. Aggiungi la seguente istruzione d'importazione all'inizio del file `S3StreamingSinkJob.java`:

   ```
   import java.util.concurrent.TimeUnit; 
   ```

1. 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](https://nightlies.apache.org/flink/flink-docs-release-1.13/dev/connectors/streamfile_sink.html#row-encoded-formats) nella [documentazione di Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.13/).

##### Pulisci le risorse AWS
<a name="examples-s3-cleanup"></a>

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial di Amazon S3.

**Topics**
+ [Elimina l'applicazione Managed Service for Apache Flink](#examples-s3-cleanup-app)
+ [Eliminare il flusso di dati Kinesis](#examples-s3-cleanup-stream)
+ [Elimina oggetti e bucket Amazon S3](#examples-s3-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-s3-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-s3-cleanup-cw)

##### Elimina l'applicazione Managed Service for Apache Flink
<a name="examples-s3-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare il flusso di dati Kinesis
<a name="examples-s3-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

##### Elimina oggetti e bucket Amazon S3
<a name="examples-s3-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-s3-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-s3-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. 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 cluster MSK a un altro in un VPC
<a name="example-msk"></a>

**Nota**  
Per gli esempi attuali, vedi. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

Il seguente tutorial illustra come creare un Amazon VPC con un cluster Amazon MSK e due argomenti e come creare un'applicazione del servizio gestito per Apache Flink che legge da un argomento Amazon MSK e scrive su un altro.

**Nota**  
Per impostare i prerequisiti richiesti per questo esercizio, completa prima l'esercizio [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md). 

**Topics**
+ [Creazione di un Amazon VPC con un cluster Amazon MSK](#example-msk-createcluster)
+ [Crea il codice dell'applicazione](#example-msk-code)
+ [Carica il codice Java di streaming Apache Flink](#example-msk-upload)
+ [Creazione dell’applicazione](#example-msk-create)
+ [Configura l'applicazione](#example-msk-configure)
+ [Esecuzione dell'applicazione.](#example-msk-run)
+ [Eseguire il test dell’applicazione](#example-msk-test)

##### Creazione di un Amazon VPC con un cluster Amazon MSK
<a name="example-msk-createcluster"></a>

Per creare un esempio di VPC e di cluster di Amazon MSK a cui accedere da un'applicazione del servizio gestito per Apache Flink, segui il tutorial [Nozioni di base sull'utilizzo di Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Quando completi il tutorial, tieni presente quanto segue:
+ Nella [Fase 3: creazione di un argomento](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html), 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 (sostituirlo *ClusterArn* con l'ARN del cluster MSK):

  ```
  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 illustrati nei tutorial, assicurati di utilizzare la AWS regione selezionata nel codice, nei comandi e nelle voci della console.

##### Crea il codice dell'applicazione
<a name="example-msk-code"></a>

In questa sezione, viene scaricato e compilato il file JAR 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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

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

1. Utilizza lo strumento Maven a riga di comando o il tuo ambiente di sviluppo preferito per creare il file JAR. Per compilare il file JAR 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/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
<a name="example-msk-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nel tutorial [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

**Nota**  
Se il bucket Amazon S3 è stato eliminato dal tutorial Nozioni di base, segui nuovamente il passaggio [Carica il file JAR del codice dell'applicazione](get-started-exercise.md#get-started-exercise-6).

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

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `KafkaGettingStartedJob-1.0.jar` creato nella fase precedente. 

1. 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
<a name="example-msk-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink..

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

1. 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**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="example-msk-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

1. In **Accesso alle risorse dell'applicazione**, per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.
**Nota**  
Quando specifichi le risorse dell'applicazione utilizzando la console (come CloudWatch Logs o Amazon VPC), la console modifica il ruolo di esecuzione dell'applicazione per concedere l'autorizzazione all'accesso a tali risorse.

1. In **Proprietà**, scegli **Aggiungi gruppo**. Inserisci le proprietà seguenti:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)
**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:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Il codice dell'applicazione legge le proprietà dell'applicazione di cui sopra per configurare l'origine e il sink utilizzati per interagire con il VPC e il cluster Amazon MSK. Per ulteriori informazioni sull'utilizzo delle proprietà, consulta [Usa le proprietà di runtime](how-properties.md).

1. In **Snapshot**, scegli **Disabilita**. In questo modo sarà più semplice aggiornare l'applicazione senza caricare dati non validi sullo stato dell'applicazione.

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. **Per la **CloudWatch registrazione, seleziona la** casella di controllo Abilita.**

1. Nella sezione **Cloud privato virtuale (VPC)**, seleziona il VPC da associare all'applicazione. Scegli le sottoreti e il gruppo di sicurezza associati al VPC che l'applicazione dovrà utilizzare per accedere alle risorse VPC.

1. clicca su **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.
<a name="example-msk-run"></a>

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
<a name="example-msk-test"></a>

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 le istruzioni in [Fase 6: produzione e consumo di dati](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) nel tutorial [Nozioni di base sull'utilizzo di Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

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](troubleshooting-symptoms.md#troubleshooting-rt-vpc) dell'argomento [Risolvi i problemi relativi al servizio gestito per Apache Flink](troubleshooting.md).

#### Esempio: utilizzare un consumatore EFO con un flusso di dati Kinesis
<a name="examples-efo"></a>

**Nota**  
Per gli esempi attuali, vedi. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

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](https://docs.aws.amazon.com/streams/latest/dev/enhanced-consumers.html) (EFO). Se un consumatore Kinesis utilizza EFO, il servizio del flusso di dati Kinesis gli fornisce una larghezza di banda dedicata, anziché chiedere al consumatore di condividere la larghezza di banda fissa del flusso con gli altri utenti che leggono dal flusso.

Per ulteriori informazioni sull'utilizzo di EFO con il consumatore Kinesis, consulta [FLIP-128: fan-out avanzato per consumatori Kinesis](https://cwiki.apache.org/confluence/display/FLINK/FLIP-128%3A+Enhanced+Fan+Out+for+AWS+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 l' DataStream API in Managed Service for Apache Flink](getting-started.md).

**Topics**
+ [Crea risorse dipendenti](#examples-efo-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-efo-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-efo-download)
+ [Compilate il codice dell'applicazione](#examples-efo-compile)
+ [Carica il codice Java di streaming Apache Flink](#examples-efo-upload)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#examples-efo-create-run)
+ [Pulisci le risorse AWS](#examples-efo-cleanup)

##### Crea risorse dipendenti
<a name="examples-efo-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-efo-write"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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'))
   ```

1. 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
<a name="examples-efo-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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:
+ Puoi abilitare il consumatore EFO impostando i seguenti parametri sul consumatore Kinesis:
  + **RECORD\$1PUBLISHER\$1TYPE**: imposta questo parametro su **EFO** per consentire all'applicazione di utilizzare un consumatore EFO per accedere ai dati del flusso di dati Kinesis. 
  + **EFO\$1CONSUMER\$1NAME**: imposta questo parametro su un valore di stringa che sia unico tra i consumatori di questo flusso. Il riutilizzo di un nome utente nello stesso flusso di dati Kinesis causerà l'interruzione del precedente consumatore che utilizzava quel nome. 
+ Il seguente esempio di codice illustra come assegnare valori alle proprietà di configurazione del consumatore al fine di utilizzare un consumatore EFO per leggere dal flusso di origine:

  ```
  consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO");
  consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
  ```

##### Compilate il codice dell'applicazione
<a name="examples-efo-compile"></a>

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](getting-started.md#setting-up-prerequisites) nel tutorial [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

1. 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 file JAR dell'applicazione (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Carica il codice Java di streaming Apache Flink
<a name="examples-efo-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendenti](#examples-efo-resources).

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

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

1. 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
<a name="examples-efo-create-run"></a>

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

##### Creazione dell’applicazione
<a name="examples-efo-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="get-started-exercise-7-console-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

1. 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 consumatore EFO.

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="examples-efo-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Proprietà**, scegli **Crea gruppo**. 

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Proprietà**, scegli **Crea gruppo**. 

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="examples-efo-run"></a>

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
<a name="examples-efo-cleanup"></a>

Questa sezione include le procedure per pulire AWS le risorse create nel tutorial di efo Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-efo-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-efo-cleanup-stream)
+ [Eliminazione del bucket e degli oggetti Amazon S3](#examples-efo-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-efo-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-efo-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-efo-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-efo-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Eliminazione del bucket e degli oggetti Amazon S3
<a name="examples-efo-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-efo-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-efo-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

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

#### Esempio: scrittura su Firehose
<a name="get-started-exercise-fh"></a>

**Nota**  
Per gli esempi attuali, vedi. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

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 l' DataStream API in Managed Service for Apache Flink](getting-started.md).

**Topics**
+ [Crea risorse dipendenti](#get-started-exercise-fh-1)
+ [Scrivi record di esempio nel flusso di input](#get-started-exercise-fh-2)
+ [Scarica ed esamina il codice Java per lo streaming di Apache Flink](#get-started-exercise-fh-5)
+ [Compila il codice dell'applicazione](#get-started-exercise-fh-5.5)
+ [Carica il codice Java di streaming Apache Flink](#get-started-exercise-fh-6)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#get-started-exercise-fh-7)
+ [Pulisci le risorse AWS](#getting-started-fh-cleanup)

##### Crea risorse dipendenti
<a name="get-started-exercise-fh-1"></a>

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:
+ [Creazione e aggiornamento dei flussi di dati](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) nella *Guida per gli sviluppatori del flusso di dati Amazon Kinesis*. Assegna un nome al flusso di dati **ExampleInputStream**.
+ [Creazione di un flusso di distribuzione di Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) nella *Amazon Data Firehose Developer* Guide. Assegna un nome al tuo stream Firehose. **ExampleDeliveryStream** **Quando crei lo stream Firehose, crea anche la destinazione **S3** e il ruolo IAM dello stream Firehose.** 
+ [Come si crea un bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="get-started-exercise-fh-2"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

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'))
   ```

1. 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
<a name="get-started-exercise-fh-5"></a>

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
   ```

1. 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
<a name="get-started-exercise-fh-5.5"></a>

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](getting-started.md#setting-up-prerequisites) nel tutorial [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

1. **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](#how-creating-apps-building-kinesis).**

1. 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 file JAR dell'applicazione (`target/aws-kinesis-analytics-java-apps-1.0.jar`).

##### Carica il codice Java di streaming Apache Flink
<a name="get-started-exercise-fh-6"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendenti](#get-started-exercise-fh-1).

**Per caricare il codice dell'applicazione**

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

1. **Nella console, scegli il *<username>* bucket **ka-app-code-**, quindi scegli Carica.**

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `java-getting-started-1.0.jar` creato nella fase precedente. 

1. 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
<a name="get-started-exercise-fh-7"></a>

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

**Topics**
+ [Crea ed esegui l'applicazione (console)](#get-started-exercise-fh-7-console)
+ [Crea ed esegui l'applicazione (AWS CLI)](#get-started-exercise-fh-7-cli)

##### Crea ed esegui l'applicazione (console)
<a name="get-started-exercise-fh-7-console"></a>

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

##### Creazione dell’applicazione
<a name="get-started-exercise-fh-7-console-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei l'applicazione tramite la console, hai la possibilità di richiedere la creazione di un ruolo e una policy IAM per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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 policy IAM
<a name="get-started-exercise-fh-7-console-iam"></a>

Modifica la policy IAM per aggiungere le autorizzazioni per accedere al flusso di dati Kinesis e al flusso Firehose.

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

1. Aggiungi alla policy la sezione evidenziata del seguente esempio di policy. Sostituisci tutte le istanze dell'account di esempio IDs (*012345678901*) con l'ID del tuo account.

------
#### [ JSON ]

****  

   ```
   {
       "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
<a name="get-started-exercise-fh-7-console-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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.
<a name="get-started-exercise-fh-7-console-run"></a>

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
<a name="get-started-exercise-fh-7-console-stop"></a>

Nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Aggiornamento dell'applicazione
<a name="get-started-exercise-fh-7-console-update"></a>

Tramite la console, puoi aggiornare le impostazioni dell'applicazione, ad esempio le proprietà dell'applicazione, le impostazioni di monitoraggio e la posizione o il nome di file del JAR dell'applicazione. 

Nella **MyApplication**pagina, scegli **Configura**. Aggiorna le impostazioni dell'applicazione e scegli **Aggiorna**.

**Nota**  
Per aggiornare il codice dell'applicazione sulla console, è necessario modificare il nome oggetto del JAR, utilizzare un bucket S3 diverso o utilizzare la AWS CLI come descritto nella sezione [Aggiornamento del codice dell'applicazione](#get-started-exercise-fh-7-cli-update-code). 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)
<a name="get-started-exercise-fh-7-cli"></a>

In questa sezione, si utilizza AWS CLI per creare ed eseguire l'applicazione Managed Service for Apache Flink.

##### Creazione di una policy di autorizzazione
<a name="get-started-exercise-fh-7-cli-policy"></a>

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. Collega quindi la policy a un ruolo IAM (che verrà creato 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`. Sostituiscilo *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.

------
#### [ JSON ]

****  

```
{
    "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: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

**Nota**  
Per accedere ad altri servizi Amazon, puoi utilizzare AWS SDK per Java. Il servizio gestito per Apache Flink imposta automaticamente le credenziali richieste dall'SDK su quelle del ruolo IAM di esecuzione del servizio associato all'applicazione. Non sono richieste fasi aggiuntive.

##### Creazione di un ruolo IAM
<a name="get-started-exercise-fh-7-cli-role"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. 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**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**.

   È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di attendibilità e di autorizzazione per il ruolo.

1. 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](#get-started-exercise-fh-7-cli-policy).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Crea l'applicazione Managed Service for Apache Flink
<a name="get-started-exercise-fh-7-cli-create"></a>

1. Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket con il suffisso scelto nella sezione [Crea risorse dipendenti](#get-started-exercise-fh-1) (`ka-app-code-<username>`). 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": "java-getting-started-1.0.jar"
                   }
               },
               "CodeContentType": "ZIPFILE"
           }
         }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) 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.

##### Avvia l'applicazione
<a name="get-started-exercise-fh-7-cli-start"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {
       "ApplicationName": "test",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StartApplication.html) 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
<a name="get-started-exercise-fh-7-cli-stop"></a>

In questa sezione, viene utilizzata l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
       "ApplicationName": "test"
   }
   ```

1. Esegui l'operazione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_StopApplication.html) 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
<a name="get-started-exercise-fh-7-cli-cw"></a>

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[Configurare la registrazione delle applicazioni in Managed Service per Apache Flink](cloudwatch-logs.md).

##### Aggiornamento del codice dell'applicazione
<a name="get-started-exercise-fh-7-cli-update-code"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) AWS CLI azione.

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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 (< *username* >) con il suffisso che hai scelto nella sezione. [Crea risorse dipendenti](#get-started-exercise-fh-1)

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

##### Pulisci le risorse AWS
<a name="getting-started-fh-cleanup"></a>

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

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#getting-started-fh-cleanup-app)
+ [Eliminare il flusso di dati Kinesis](#getting-started-fh-cleanup-stream)
+ [Eliminare lo stream Firehose](#getting-started-fh-cleanup-fh)
+ [Elimina l'oggetto e il bucket Amazon S3](#getting-started-fh-cleanup-s3)
+ [Elimina le tue risorse IAM](#getting-started-fh-cleanup-iam)
+ [Elimina le tue risorse CloudWatch](#getting-started-fh-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="getting-started-fh-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. Nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

1. Scegli **Configura**.

1. Nella sezione **Snapshot**, scegli **Disabilita**, quindi scegli **Aggiorna**.

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

##### Eliminare il flusso di dati Kinesis
<a name="getting-started-fh-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

##### Eliminare lo stream Firehose
<a name="getting-started-fh-cleanup-fh"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Firehose, scegliete. **ExampleDeliveryStream**

1. Nella **ExampleDeliveryStream**pagina, scegliete **Delete Firehose stream** e confermate l'eliminazione.

##### Elimina l'oggetto e il bucket Amazon S3
<a name="getting-started-fh-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

1. Se hai creato un bucket Amazon S3 per la destinazione del tuo stream Firehose, elimina anche quel bucket.

##### Elimina le tue risorse IAM
<a name="getting-started-fh-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Se hai creato una nuova policy per il tuo stream Firehose, elimina anche quella policy.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

1. Se hai creato un nuovo ruolo per il tuo stream Firehose, elimina anche quel ruolo.

##### Elimina le tue risorse CloudWatch
<a name="getting-started-fh-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Esempio: lettura da uno stream Kinesis in un altro account
<a name="examples-cross"></a>

**Nota**  
Per gli esempi attuali, vedi[Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md).

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.

**Topics**
+ [Prerequisiti](#examples-cross-prerequisites)
+ [Configurazione](#examples-cross-setup)
+ [Crea un flusso Kinesis sorgente](#examples-cross-streams)
+ [Crea e aggiorna i ruoli e le politiche IAM](#examples-cross-iam)
+ [Aggiornare lo script Python](#examples-cross-python)
+ [Aggiornate l'applicazione Java](#examples-cross-app)
+ [Crea, carica ed esegui l'applicazione](#examples-cross-run)

##### Prerequisiti
<a name="examples-cross-prerequisites"></a>
+ 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 l' DataStream API in Managed Service for Apache Flink](getting-started.md) 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.

##### Configurazione
<a name="examples-cross-setup"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) nella *AWS Command Line Interface*documentazione.

##### Crea un flusso Kinesis sorgente
<a name="examples-cross-streams"></a>

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 i ruoli e le politiche IAM
<a name="examples-cross-iam"></a>

Per consentire l'accesso agli oggetti tra AWS gli account, crei un ruolo e una policy IAM nell'account di origine. Quindi, modifica la policy IAM nell'account di sink. Per ulteriori informazioni sulla creazione di ruoli e policy IAM, consulta i seguenti argomenti nella *Guida per l'utente AWS Identity and Access Management *:
+ [Creazione di ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)
+ [Creazione di policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)

##### Ruoli e politiche degli account Sink
<a name="examples-cross-iam-sink"></a>

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 account di esempio (*SOURCE01234567*) con l'ID dell'account che utilizzerai per lo stream sorgente.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AssumeRoleInSourceAccount",
               "Effect": "Allow",
               "Action": "sts:AssumeRole",
               "Resource": "arn:aws:iam::123456789012: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:123456789012:log-group:*"
               ]
           },
           {
               "Sid": "ListCloudwatchLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutCloudwatchLogs",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           }
       ]
   }
   ```

------

1. Apri il ruolo `kinesis-analytics-MyApplication-us-west-2` e prendi nota del nome della risorsa Amazon (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
<a name="examples-cross-iam-source"></a>

1. Crea una policy nell'account di origine denominato `KA-Source-Stream-Policy`. Utilizza il JSON seguente per la policy. Sostituisci il numero di account di esempio con il numero dell'account di origine.

------
#### [ JSON ]

****  

   ```
   {
       "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:111122223333:stream/SourceAccountExampleInputStream"
           }
       ]
   }
   ```

------

1. 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 di gestione IAM, scegli **Crea ruolo**.

   1. Nella pagina **Crea ruolo**, scegli **Servizio AWS **. Nell'elenco dei servizi, scegli **Kinesis**.

   1. Nella sezione **Seleziona il tuo caso d'uso**, scegli **Servizio gestito per Apache Flink**.

   1. Scegli **Successivo: autorizzazioni**.

   1. Aggiungi la policy di autorizzazione `KA-Source-Stream-Policy` che hai creato nel passaggio precedente effettuando le seguenti operazioni: Scegli **Successivo: Tag**.

   1. Seleziona **Successivo: Rivedi**.

   1. Denomina il ruolo `KA-Source-Stream-Role`. L'applicazione utilizzerà questo ruolo per accedere al flusso di origine.

1. Aggiungi l'ARN `kinesis-analytics-MyApplication-us-west-2` dall'account sink alla relazione di attendibilità del ruolo `KA-Source-Stream-Role` nell'account di origine:

   1. Nella console IAM, apri `KA-Source-Stream-Role`.

   1. Scegli la scheda **Relazioni di attendibilità**.

   1. Seleziona **Modifica relazione di attendibilità**.

   1. Utilizza il codice seguente per la relazione di attendibilità. Sostituisci l'ID account di esempio (**SINK012345678**) con l'ID dell'account sink.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:role/service-role/kinesis-analytics-MyApplication-us-west-2"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

##### Aggiornare lo script Python
<a name="examples-cross-python"></a>

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
<a name="examples-cross-app"></a>

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 di origine di esempio (*SOURCE01234567*) con il tuo numero di account 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
<a name="examples-cross-run"></a>

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
   ```

1. Elimina il file JAR precedente dal bucket Amazon Simple Storage Service (Amazon S3), quindi carica il nuovo file `aws-kinesis-analytics-java-apps-1.0.jar` nel bucket S3.

1. Nella pagina dell'applicazione nella console del servizio gestito per Apache Flink, scegli **Configura**, **Aggiorna** per ricaricare il file JAR dell'applicazione.

1. 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
<a name="example-keystore"></a>

**Nota**  
Per gli esempi attuali, consulta. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

##### Fonte di dati attuale APIs
<a name="example-keystore-test-new"></a>

[Se utilizzi l'origine dati corrente APIs, l'applicazione può sfruttare l'utilità Amazon MSK Config Providers descritta qui.](https://github.com/aws-samples/msk-config-providers) Ciò consente alla KafkaSource funzione di accedere al keystore e al truststore per il TLS reciproco 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](https://github.com/aws-samples/amazon-kinesisanalytics-examples/tree/master/CustomKeystoreWithConfigProviders). 

##### Eredità SourceFunction APIs
<a name="example-keystore-legacy"></a>

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**  
Apache Flink richiede che il truststore sia in [formato JKS](https://en.wikipedia.org/wiki/Java_KeyStore).

**Nota**  
Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md). 

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 tramite 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 di emissione fino alla CA di livello root). Come esempio per un truststore personalizzato, utilizzeremo un cluster Amazon MSK con l'autenticazione Mutual TLS (MTLS) abilitata. Ciò implica che i nodi del cluster MSK utilizzano certificati server emessi da una Certificate Manager Private AWS Certificate Authority (ACM Private CA) 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 connessione SSL.

 È 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:
+ [Un cluster Apache Kafka personalizzato ospitato in (Amazon AWS[EC2](https://aws.amazon.com/ec2/) o Amazon EKS)](https://aws.amazon.com/eks/)
+ Un cluster [Confluent Kafka ospitato in](https://www.confluent.io) AWS
+ Un cluster Kafka on-premises accessibile tramite [AWS Direct Connect](https://aws.amazon.com/directconnect/) o VPN

**Topics**
+ [Fonte di dati attuale APIs](#example-keystore-test-new)
+ [Eredità SourceFunction APIs](#example-keystore-legacy)
+ [Crea un VPC con un cluster Amazon MSK](#example-keystore-createcluster)
+ [Crea un truststore personalizzato e applicalo al tuo cluster](#example-keystore-cert)
+ [Crea il codice dell'applicazione](#example-keystore-code)
+ [Carica il codice Java di streaming Apache Flink](#example-keystore-upload)
+ [Creazione dell’applicazione](#example-keystore-create)
+ [Configura l'applicazione](#example-keystore-configure)
+ [Esecuzione dell'applicazione.](#example-keystore-run)
+ [Eseguire il test dell’applicazione](#example-keystore-test)

##### Crea un VPC con un cluster Amazon MSK
<a name="example-keystore-createcluster"></a>

Per creare un esempio di VPC e di cluster di Amazon MSK a cui accedere da un'applicazione del servizio gestito per Apache Flink, segui il tutorial [Nozioni di base sull'utilizzo di Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

Quando completi il tutorial, esegui anche le operazioni seguenti:
+ Nella [Fase 3: creazione di un argomento](https://docs.aws.amazon.com/msk/latest/developerguide/create-topic.html), 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 (sostituirlo *ClusterArn* con l'ARN del cluster MSK):

  ```
  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 relativi ai 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
<a name="example-keystore-cert"></a>

In questa sezione, viene creata un'autorità di certificazione (CA) personalizzata da utilizzare per generare un truststore personalizzato e applicarlo al cluster MSK.

Per creare e applicare un truststore personalizzato, segui il tutorial [Autenticazione client](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) nella *Guida per gli sviluppatori di Streaming gestito da Amazon per Apache Kafka*.

##### Crea il codice dell'applicazione
<a name="example-keystore-code"></a>

In questa sezione, viene scaricato e compilato il file JAR 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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

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

1. Utilizza lo strumento Maven a riga di comando o il tuo ambiente di sviluppo preferito per creare il file JAR. Per compilare il file JAR 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
<a name="example-keystore-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nel tutorial [Tutorial: inizia a usare l' DataStream API in Managed Service for Apache Flink](getting-started.md).

**Nota**  
Se il bucket Amazon S3 è stato eliminato dal tutorial Nozioni di base, segui nuovamente il passaggio [Carica il file JAR del codice dell'applicazione](get-started-exercise.md#get-started-exercise-6).

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

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `flink-app-1.0-SNAPSHOT.jar` creato nella fase precedente. 

1. 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
<a name="example-keystore-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un servizio gestito per Apache Flink tramite la console, hai la possibilità di richiedere la creazione di un ruolo e una policy IAM per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="example-keystore-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

1. In **Accesso alle risorse dell'applicazione**, per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.
**Nota**  
Quando vengono specificate le risorse dell'applicazione utilizzando la console (come i file di log o VPC), la console modifica il ruolo di esecuzione dell'applicazione per concedere l'autorizzazione all'accesso a tali risorse.

1. In **Proprietà**, scegli **Aggiungi gruppo**. Inserisci le proprietà seguenti:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)
**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:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Il codice dell'applicazione legge le proprietà dell'applicazione di cui sopra per configurare l'origine e il sink utilizzati per interagire con il VPC e il cluster Amazon MSK. Per ulteriori informazioni sull'utilizzo delle proprietà, consulta [Usa le proprietà di runtime](how-properties.md).

1. In **Snapshot**, scegli **Disabilita**. In questo modo sarà più semplice aggiornare l'applicazione senza caricare dati non validi sullo stato dell'applicazione.

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Nella sezione **Cloud privato virtuale (VPC)**, seleziona il VPC da associare all'applicazione. Scegli le sottoreti e il gruppo di sicurezza associati al VPC che l'applicazione dovrà utilizzare per accedere alle risorse VPC.

1. clicca su **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.
<a name="example-keystore-run"></a>

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
<a name="example-keystore-test"></a>

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 le istruzioni in [Fase 6: produzione e consumo di dati](https://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html) nel tutorial [Nozioni di base sull'utilizzo di Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html).

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](troubleshooting-symptoms.md#troubleshooting-rt-vpc) dell'argomento [Risolvi i problemi relativi al servizio gestito per Apache Flink](troubleshooting.md).

### Esempi di Python
<a name="examples-python"></a>

Negli esempi seguenti viene illustrato come creare applicazioni utilizzando Python con l'API Table di Apache Flink.

**Topics**
+ [Esempio: creazione di una finestra girevole in Python](#examples-python-tumbling)
+ [Esempio: creazione di una finestra scorrevole in Python](#examples-python-sliding)
+ [Esempio: invio di dati di streaming ad Amazon S3 in Python](#examples-python-s3)

#### Esempio: creazione di una finestra girevole in Python
<a name="examples-python-tumbling"></a>

**Nota**  
Per gli esempi attuali, vedi. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

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](gs-python.md).

**Topics**
+ [Crea risorse dipendenti](#examples-python-tumbling-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-python-tumbling-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-python-tumbling-download)
+ [Comprimi e carica il codice Python in streaming di Apache Flink](#examples-python-tumbling-upload)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#examples-python-tumbling-create-run)
+ [Pulisci le risorse AWS](#examples-python-tumbling-cleanup)

##### Crea risorse dipendenti
<a name="examples-python-tumbling-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-python-tumbling-write"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**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'))
   ```

1. 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
<a name="examples-python-tumbling-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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 funzione `create_table` utilizza un comando SQL per creare una tabella supportata dall'origine 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 [https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2).

##### Comprimi e carica il codice Python in streaming di Apache Flink
<a name="examples-python-tumbling-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendenti](#examples-python-tumbling-resources).

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

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

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `myapp.zip` creato nella fase precedente. 

1. 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
<a name="examples-python-tumbling-create-run"></a>

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

##### Creazione dell’applicazione
<a name="examples-python-tumbling-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM. 

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="examples-python-tumbling-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Proprietà**, scegli **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Scegli **Save** (Salva).

1. In **Proprietà**, scegli di nuovo **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. 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](how-python-creating.md#how-python-creating-code).

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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 policy IAM
<a name="examples-python-tumbling-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="examples-python-tumbling-run"></a>

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
<a name="examples-python-tumbling-cleanup"></a>

Questa sezione include le procedure per ripulire AWS le risorse create nel tutorial di Tumbling Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-python-tumbling-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-python-tumbling-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-python-tumbling-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-python-tumbling-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-python-tumbling-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-python-tumbling-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-python-tumbling-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Elimina l'oggetto e il bucket Amazon S3
<a name="examples-python-tumbling-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-python-tumbling-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-python-tumbling-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Esempio: creazione di una finestra scorrevole in Python
<a name="examples-python-sliding"></a>

**Nota**  
Per gli esempi attuali, vedi. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

**Nota**  
Per impostare i prerequisiti richiesti per questo esercizio, completa innanzitutto l'esercizio [Tutorial: Inizia a usare Python in Managed Service for Apache Flink](gs-python.md).

**Topics**
+ [Crea risorse dipendenti](#examples-python-sliding-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-python-sliding-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-python-sliding-download)
+ [Comprimi e carica il codice Python in streaming di Apache Flink](#examples-python-sliding-upload)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#examples-python-sliding-create-run)
+ [Pulisci le risorse AWS](#examples-python-sliding-cleanup)

##### Crea risorse dipendenti
<a name="examples-python-sliding-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-python-sliding-write"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**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'))
   ```

1. 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
<a name="examples-python-sliding-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
   ```

1. 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 funzione `create_input_table` utilizza un comando SQL per creare una tabella supportata dall'origine 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](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2)

##### Comprimi e carica il codice Python in streaming di Apache Flink
<a name="examples-python-sliding-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendenti](#examples-python-sliding-resources).

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

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

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `myapp.zip` creato nella fase precedente. 

1. 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
<a name="examples-python-sliding-create-run"></a>

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

##### Creazione dell’applicazione
<a name="examples-python-sliding-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM. 

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="examples-python-sliding-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Proprietà**, scegli **Aggiungi gruppo**. 

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Scegli **Save** (Salva).

1. In **Proprietà**, scegli nuovamente **Aggiungi gruppo**. 

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. 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](how-python-creating.md#how-python-creating-code).

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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 policy IAM
<a name="examples-python-sliding-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="examples-python-sliding-run"></a>

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
<a name="examples-python-sliding-cleanup"></a>

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-python-sliding-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-python-sliding-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-python-sliding-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-python-sliding-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-python-sliding-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-python-sliding-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-python-sliding-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Elimina l'oggetto e il bucket Amazon S3
<a name="examples-python-sliding-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-python-sliding-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-python-sliding-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Esempio: invio di dati di streaming ad Amazon S3 in Python
<a name="examples-python-s3"></a>

**Nota**  
Per gli esempi attuali, vedi. [Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md)

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](gs-python.md).

**Topics**
+ [Crea risorse dipendenti](#examples-python-s3-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-python-s3-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-python-s3-download)
+ [Comprimi e carica il codice Python in streaming di Apache Flink](#examples-python-s3-upload)
+ [Crea ed esegui l'applicazione Managed Service for Apache Flink](#examples-python-s3-create-run)
+ [Pulisci le risorse AWS](#examples-python-s3-cleanup)

##### Crea risorse dipendenti
<a name="examples-python-s3-resources"></a>

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](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) 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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket.html) 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
<a name="examples-python-s3-write"></a>

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 per Python (Boto)](https://aws.amazon.com/developers/getting-started/python/).

**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'))
   ```

1. 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
<a name="examples-python-s3-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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 funzione `create_source_table` utilizza un comando SQL per creare una tabella supportata dall'origine 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](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2)

##### Comprimi e carica il codice Python in streaming di Apache Flink
<a name="examples-python-s3-upload"></a>

In questa sezione, il codice dell'applicazione viene caricato nel bucket Amazon S3 creato nella sezione [Crea risorse dipendenti](#examples-python-s3-resources).

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](https://mvnrepository.com/artifact/org.apache.flink/flink-sql-connector-kinesis/1.15.2) Assegna un nome all'archivio `myapp.zip`.

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

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `myapp.zip` creato nella fase precedente. 

1. 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
<a name="examples-python-s3-create-run"></a>

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

##### Creazione dell’applicazione
<a name="examples-python-s3-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM. 

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="examples-python-s3-configure"></a>

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Proprietà**, scegli **Aggiungi gruppo**.

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Scegli **Save** (Salva).

1. 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](how-python-creating.md#how-python-creating-code).

1. Immetti i valori e le proprietà dell'applicazione seguenti:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. 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](how-python-creating.md#how-python-creating-code).

1. Inserisci le proprietà e i valori dell'applicazione seguenti: (*bucket-name*sostituiscili con il nome effettivo del tuo bucket Amazon S3).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione, seleziona la** casella di controllo **Abilita.**

1. Scegliere **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 policy IAM
<a name="examples-python-s3-iam"></a>

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

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="examples-python-s3-run"></a>

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
<a name="examples-python-s3-cleanup"></a>

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-python-s3-cleanup-app)
+ [Eliminare il flusso di dati Kinesis](#examples-python-s3-cleanup-stream)
+ [Elimina oggetti e bucket Amazon S3](#examples-python-s3-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-python-s3-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-python-s3-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-python-s3-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare il flusso di dati Kinesis
<a name="examples-python-s3-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

##### Elimina oggetti e bucket Amazon S3
<a name="examples-python-s3-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-python-s3-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-python-s3-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

### Esempi di Scala
<a name="examples-scala"></a>

Negli esempi seguenti viene illustrato come creare applicazioni utilizzando Scala con Apache Flink.

**Topics**
+ [Esempio: creazione di una finestra ribaltabile in Scala](#examples-tumbling-scala)
+ [Esempio: creazione di una finestra scorrevole in Scala](#examples-sliding-scala)
+ [Esempio: invio di dati in streaming ad Amazon S3 in Scala](#examples-s3sink-scala)

#### Esempio: creazione di una finestra ribaltabile in Scala
<a name="examples-tumbling-scala"></a>

**Nota**  
Per gli esempi attuali, vedi[Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md).

**Nota**  
A partire dalla versione 1.15, Flink non supporta più Scala. Le applicazioni possono ora utilizzare l'API Java 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](https://flink.apache.org/2022/02/22/scala-free.html).

In questo esercizio, creerete una semplice applicazione di streaming che utilizza Scala 3.2.0 e l'API Java DataStream di Flink. 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)](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html). 

**Topics**
+ [Scaricate ed esaminate il codice dell'applicazione](#examples-tumbling-scala-download)
+ [Compilazione e caricamento del codice dell'applicazione](#examples-tumbling-scala-upload)
+ [Crea ed esegui l'applicazione (console)](#scala-7)
+ [Creazione ed esecuzione dell'applicazione (CLI)](#examples-tumbling-scala-create-run-cli)
+ [Aggiornamento del codice dell'applicazione](#examples-tumbling-scala-update-app-code)
+ [Pulisci le risorse AWS](#examples-tumbling-scala-cleanup)

##### Scaricate ed esaminate il codice dell'applicazione
<a name="examples-tumbling-scala-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Compilazione e caricamento del codice dell'applicazione
<a name="examples-tumbling-scala-upload"></a>

In questa sezione, il codice dell'applicazione viene compilato e caricato in un bucket Amazon S3.

**Compilazione del codice dell'applicazione**

Userai lo strumento di compilazione [SBT](https://www.scala-sbt.org/) per creare il codice Scala per l'applicazione. Per installare SBT, consulta [Installazione di sbt con setup cs](https://www.scala-sbt.org/download.html). Dovrai inoltre installare il Java Development Kit (JDK). Consulta [Prerequisiti per il completamento degli esercizi](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Per usare il codice dell'applicazione, compila il codice e comprimilo in un file JAR. Puoi compilare e comprimere il codice con SBT:

   ```
   sbt assembly
   ```

1. 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/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. 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)**.

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

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

1. Seleziona **Crea bucket**.

1. Scegli il bucket `ka-app-code-<username>`, quindi scegli **Carica**.

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `tumbling-window-scala-1.0.jar` creato nella fase precedente. 

1. 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)
<a name="scala-7"></a>

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

##### Creazione dell’applicazione
<a name="scala-7-console-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="scala-7-console-configure"></a>

Per configurare l'applicazione, utilizza la procedura seguente.

**Per configurare l'applicazione**

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Proprietà**, scegli **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Scegli **Save** (Salva).

1. In **Proprietà**, scegli di nuovo **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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 policy IAM
<a name="scala-7-console-iam"></a>

Modifica la policy IAM per aggiungere le autorizzazioni per accedere al bucket Amazon S3.

**Modifica della policy IAM per aggiungere le autorizzazioni per i bucket S3**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="scala-7-console-run"></a>

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
<a name="scala-7-console-stop"></a>

Per interrompere l'applicazione, nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Creazione ed esecuzione dell'applicazione (CLI)
<a name="examples-tumbling-scala-create-run-cli"></a>

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

##### Creazione di una policy di autorizzazione
<a name="examples-tumbling-scala-permissions"></a>

**Nota**  
È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non crei queste risorse IAM, l'applicazione non può accedere ai suoi dati e 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. Collega quindi la policy a un ruolo IAM (che verrà creato 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: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

##### Creazione di un ruolo IAM
<a name="examples-tumbling-scala-iam-policy"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegli **Ruoli** e quindi **Crea ruolo**.

1. In **Seleziona tipo di entità attendibile**, scegli **Servizio AWS **.

1. In **Scegli il servizio che utilizzerà questo ruolo**, scegli **Kinesis**.

1. In **Seleziona il tuo caso d'uso**, scegli **Servizio gestito per Apache Flink**.

1. Scegli **Successivo: autorizzazioni**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**. 

    È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di trust e di autorizzazione per il ruolo

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Creazione dell'applicazione
<a name="examples-tumbling-scala-create-application-cli"></a>

Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket (username) con il suffisso scelto nella sezione precedente. Sostituisci l'ID account di esempio (012345678901) nel ruolo di esecuzione del servizio con il tuo ID account. `ServiceExecutionRole` deve includere il ruolo utente IAM 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 [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)con 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
<a name="examples-tumbling-scala-start"></a>

In questa sezione, viene utilizzata l'operazione [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {
       "ApplicationName": "tumbling_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. 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
<a name="examples-tumbling-scala-stop"></a>

In questa sezione, viene utilizzata l'operazione [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
      "ApplicationName": "tumbling_window"
   }
   ```

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

##### Aggiungi un'opzione CloudWatch di registrazione
<a name="examples-tumbling-scala-cw-option"></a>

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](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Aggiornare le proprietà dell'ambiente
<a name="examples-tumbling-scala-update-environment-properties"></a>

In questa sezione, viene utilizzata l'operazione [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 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. Salvare il seguente codice JSON 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. 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
<a name="examples-tumbling-scala-update-app-code"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'azione [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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](examples-gs-scala.md#examples-gs-scala-resources).

```
{
    "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
<a name="examples-tumbling-scala-cleanup"></a>

Questa sezione include le procedure per ripulire AWS le risorse create nel tutorial di Tumbling Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-tumbling-scala-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-tumbling-scala-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-tumbling-scala-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-tumbling-scala-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-tumbling-scala-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-tumbling-scala-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-tumbling-scala-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Elimina l'oggetto e il bucket Amazon S3
<a name="examples-tumbling-scala-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-tumbling-scala-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-tumbling-scala-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Esempio: creazione di una finestra scorrevole in Scala
<a name="examples-sliding-scala"></a>

**Nota**  
Per gli esempi attuali, vedi[Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md).

**Nota**  
A partire dalla versione 1.15, Flink non supporta più Scala. Le applicazioni possono ora utilizzare l'API Java 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](https://flink.apache.org/2022/02/22/scala-free.html).

In questo esercizio, creerete una semplice applicazione di streaming che utilizza Scala 3.2.0 e l'API Java DataStream di Flink. 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)](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html). 

**Topics**
+ [Scaricate ed esaminate il codice dell'applicazione](#examples-sliding-scala-download)
+ [Compilazione e caricamento del codice dell'applicazione](#examples-sliding-scala-upload)
+ [Crea ed esegui l'applicazione (console)](#scala-7)
+ [Creazione ed esecuzione dell'applicazione (CLI)](#examples-sliding-scala-create-run-cli)
+ [Aggiornamento del codice dell'applicazione](#examples-sliding-scala-update-app-code)
+ [Pulisci le risorse AWS](#examples-sliding-scala-cleanup)

##### Scaricate ed esaminate il codice dell'applicazione
<a name="examples-sliding-scala-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Compilazione e caricamento del codice dell'applicazione
<a name="examples-sliding-scala-upload"></a>

In questa sezione, il codice dell'applicazione viene compilato e caricato in un bucket Amazon S3.

**Compilazione del codice dell'applicazione**

Userai lo strumento di compilazione [SBT](https://www.scala-sbt.org/) per creare il codice Scala per l'applicazione. Per installare SBT, consulta [Installazione di sbt con setup cs](https://www.scala-sbt.org/download.html). Dovrai inoltre installare il Java Development Kit (JDK). Consulta [Prerequisiti per il completamento degli esercizi](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Per usare il codice dell'applicazione, compila il codice e comprimilo in un file JAR. Puoi compilare e comprimere il codice con SBT:

   ```
   sbt assembly
   ```

1. 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/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. 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)**.

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

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

1. Seleziona **Crea bucket**.

1. Scegli il bucket `ka-app-code-<username>`, quindi scegli **Carica**.

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `sliding-window-scala-1.0.jar` creato nella fase precedente. 

1. 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)
<a name="scala-7"></a>

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

##### Creazione dell’applicazione
<a name="scala-7-console-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="scala-7-console-configure"></a>

Per configurare l'applicazione, utilizza la procedura seguente.

**Per configurare l'applicazione**

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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.**

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

1. In **Proprietà**, scegli **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Scegli **Save** (Salva).

1. In **Proprietà**, scegli di nuovo **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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 policy IAM
<a name="scala-7-console-iam"></a>

Modifica la policy IAM per aggiungere le autorizzazioni per accedere al bucket Amazon S3.

**Modifica della policy IAM per aggiungere le autorizzazioni per i bucket S3**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="scala-7-console-run"></a>

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
<a name="scala-7-console-stop"></a>

Per interrompere l'applicazione, nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Creazione ed esecuzione dell'applicazione (CLI)
<a name="examples-sliding-scala-create-run-cli"></a>

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

##### Creazione di una policy di autorizzazione
<a name="examples-sliding-scala-permissions"></a>

**Nota**  
È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non crei queste risorse IAM, l'applicazione non può accedere ai suoi dati e 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. Collega quindi la policy a un ruolo IAM (che verrà creato 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: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

##### Creazione di un ruolo IAM
<a name="examples-sliding-scala-iam-policy"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegli **Ruoli** e quindi **Crea ruolo**.

1. In **Seleziona tipo di entità attendibile**, scegli **Servizio AWS **.

1. In **Scegli il servizio che utilizzerà questo ruolo**, scegli **Kinesis**.

1. In **Seleziona il tuo caso d'uso**, scegli **Servizio gestito per Apache Flink**.

1. Scegli **Successivo: autorizzazioni**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**. 

    È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di trust e di autorizzazione per il ruolo

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Creazione dell'applicazione
<a name="examples-sliding-scala-create-application-cli"></a>

Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket (username) con il suffisso 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 [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)con 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
<a name="examples-sliding-scala-start"></a>

In questa sezione, viene utilizzata l'operazione [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {
       "ApplicationName": "sliding_window",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. 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
<a name="examples-sliding-scala-stop"></a>

In questa sezione, viene utilizzata l'operazione [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
      "ApplicationName": "sliding_window"
   }
   ```

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

##### Aggiungi un'opzione CloudWatch di registrazione
<a name="examples-sliding-scala-cw-option"></a>

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](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Aggiornare le proprietà dell'ambiente
<a name="examples-sliding-scala-update-environment-properties"></a>

In questa sezione, viene utilizzata l'operazione [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 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. Salvare il seguente codice JSON 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. 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
<a name="examples-sliding-scala-update-app-code"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'azione [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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](examples-gs-scala.md#examples-gs-scala-resources).

```
{
    "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
<a name="examples-sliding-scala-cleanup"></a>

Questa sezione include le procedure per la pulizia AWS delle risorse create nel tutorial Sliding Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-sliding-scala-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-sliding-scala-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-sliding-scala-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-sliding-scala-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-sliding-scala-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-sliding-scala-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-sliding-scala-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Elimina l'oggetto e il bucket Amazon S3
<a name="examples-sliding-scala-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-sliding-scala-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-sliding-scala-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

1. Scegli **Elimina gruppo di log** e conferma l'eliminazione.

#### Esempio: invio di dati in streaming ad Amazon S3 in Scala
<a name="examples-s3sink-scala"></a>

**Nota**  
Per gli esempi attuali, vedi[Esempi di creazione e utilizzo di Managed Service per applicazioni Apache Flink](examples-collapsibles.md).

**Nota**  
A partire dalla versione 1.15, Flink non supporta più Scala. Le applicazioni possono ora utilizzare l'API Java 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](https://flink.apache.org/2022/02/22/scala-free.html).

In questo esercizio, creerete una semplice applicazione di streaming che utilizza Scala 3.2.0 e l'API Java DataStream di Flink. 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)](https://docs.aws.amazon.com/managed-flink/latest/java/examples-gs-scala.html). *Devi solo creare una cartella aggiuntiva **data/** nel ka-app-code bucket Amazon S3 -.* <username> 

**Topics**
+ [Scarica ed esamina il codice dell'applicazione](#examples-s3sink-scala-download)
+ [Compilazione e caricamento del codice dell'applicazione](#examples-s3sink-scala-upload)
+ [Crea ed esegui l'applicazione (console)](#scala-7)
+ [Creazione ed esecuzione dell'applicazione (CLI)](#examples-s3sink-scala-create-run-cli)
+ [Aggiornamento del codice dell'applicazione](#examples-s3sink-scala-update-app-code)
+ [Pulisci le risorse AWS](#examples-s3sink-scala-cleanup)

##### Scarica ed esamina il codice dell'applicazione
<a name="examples-s3sink-scala-download"></a>

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](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). 

1. Clona il repository remoto con il comando seguente:

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
   ```

1. 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 file 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](https://docs.aws.amazon.com/managed-flink/latest/java/how-properties.html).

##### Compilazione e caricamento del codice dell'applicazione
<a name="examples-s3sink-scala-upload"></a>

In questa sezione, il codice dell'applicazione viene compilato e caricato in un bucket Amazon S3.

**Compilazione del codice dell'applicazione**

Userai lo strumento di compilazione [SBT](https://www.scala-sbt.org/) per creare il codice Scala per l'applicazione. Per installare SBT, consulta [Installazione di sbt con setup cs](https://www.scala-sbt.org/download.html). Dovrai inoltre installare il Java Development Kit (JDK). Consulta [Prerequisiti per il completamento degli esercizi](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html#setting-up-prerequisites).

1. Per usare il codice dell'applicazione, compila il codice e comprimilo in un file JAR. Puoi compilare e comprimere il codice con SBT:

   ```
   sbt assembly
   ```

1. 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/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. 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)**.

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

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

1. Seleziona **Crea bucket**.

1. Scegli il bucket `ka-app-code-<username>`, quindi scegli **Carica**.

1. Nella fase **Seleziona file**, scegli **Aggiungi file**. Individua il file `s3-sink-scala-1.0.jar` creato nella fase precedente. 

1. 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)
<a name="scala-7"></a>

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

##### Creazione dell’applicazione
<a name="scala-7-console-create"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

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

1. 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)**.

1. Per **Autorizzazioni di accesso**, scegli **Crea/aggiorna `kinesis-analytics-MyApplication-us-west-2`** per il ruolo IAM.

1. Scegli **Crea applicazione**.

**Nota**  
Quando crei un'applicazione del servizio gestito per Apache Flink tramite la console, hai la possibilità di avere un ruolo e una policy IAM creati per l'applicazione. L'applicazione utilizza questo ruolo e questa policy per accedere alle sue risorse dipendenti. Queste risorse IAM sono 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`

##### Configura l'applicazione
<a name="scala-7-console-configure"></a>

Per configurare l'applicazione, utilizza la procedura seguente.

**Per configurare l'applicazione**

1. Nella **MyApplication**pagina, scegli **Configura**.

1. 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**

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

1. In **Proprietà**, scegli **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

   Scegli **Save** (Salva).

1. In **Proprietà**, scegli **Aggiungi gruppo**. 

1. Immetti i seguenti dati:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/managed-flink/latest/java/earlier.html)

1. In **Monitoraggio**, accertati che il **Monitoraggio del livello dei parametri** sia impostato su **Applicazione**.

1. Per la **CloudWatch registrazione**, seleziona la casella di controllo **Abilita**.

1. Scegliere **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 policy IAM
<a name="scala-7-console-iam"></a>

Modifica la policy IAM per aggiungere le autorizzazioni per accedere al bucket Amazon S3.

**Modifica della policy IAM per aggiungere le autorizzazioni per i bucket S3**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Nella pagina **Riepilogo**, scegli **Modifica policy**. Scegli la scheda **JSON**.

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

------
#### [ JSON ]

****  

   ```
   {
       "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.
<a name="scala-7-console-run"></a>

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
<a name="scala-7-console-stop"></a>

Per interrompere l'applicazione, nella **MyApplication**pagina, scegli **Stop**. Conferma l'operazione.

##### Creazione ed esecuzione dell'applicazione (CLI)
<a name="examples-s3sink-scala-create-run-cli"></a>

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

##### Creazione di una policy di autorizzazione
<a name="examples-s3sink-scala-permissions"></a>

**Nota**  
È necessario creare una policy di autorizzazione e un ruolo per l'applicazione. Se non crei queste risorse IAM, l'applicazione non può accedere ai suoi dati e 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. Collega quindi la policy a un ruolo IAM (che verrà creato 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.

------
#### [ JSON ]

****  

```
{
    "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:123456789012:*"
            ]
        },
        {
            "Sid": "DescribeLogStreams",
            "Effect": "Allow",
            "Action": [
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
            ]
        },
        {
            "Sid": "PutLogEvents",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-west-2:123456789012: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:123456789012:stream/ExampleInputStream"
        },
        {
            "Sid": "WriteOutputStream",
            "Effect": "Allow",
            "Action": "kinesis:*",
            "Resource": "arn:aws:kinesis:us-west-2:123456789012:stream/ExampleOutputStream"
        }
    ]
}
```

------

Per step-by-step istruzioni su come creare una politica di autorizzazioni, consulta il [Tutorial: Create and Attach Your First Customer Managed Policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#part-two-create-policy) nella *IAM User Guide*.

##### Creazione di un ruolo IAM
<a name="examples-s3sink-scala-iam-policy"></a>

In questa sezione, viene creato un ruolo IAM per l'applicazione del servizio gestito per Apache Flink che può essere assunto per leggere un flusso di origine e scrivere nel flusso di sink.

Il servizio gestito per Apache Flink non può accedere al tuo flusso senza autorizzazioni. Queste autorizzazioni possono essere assegnate con un ruolo IAM. Ad ogni ruolo IAM sono collegate due policy. 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. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, scegli **Ruoli** e quindi **Crea ruolo**.

1. In **Seleziona tipo di entità attendibile**, scegli **Servizio AWS **.

1. In **Scegli il servizio che utilizzerà questo ruolo**, scegli **Kinesis**.

1. In **Seleziona il tuo caso d'uso**, scegli **Servizio gestito per Apache Flink**.

1. Scegli **Successivo: autorizzazioni**.

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

1. Nella pagina **Crea ruolo**, immetti **MF-stream-rw-role** per **Nome ruolo**. Scegli **Crea ruolo**. 

    È stato creato un nuovo ruolo IAM denominato `MF-stream-rw-role`. Successivamente, aggiorna le policy di trust e di autorizzazione per il ruolo

1. 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](https://docs.aws.amazon.com/managed-flink/latest/java/get-started-exercise.html#get-started-exercise-7-cli-policy).

   1. Nella pagina **Riepilogo**, scegli la scheda **Autorizzazioni**.

   1. Scegliere **Collega policy**.

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

   1. 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 dell'ARN del nuovo ruolo.

Per step-by-step istruzioni sulla creazione di un ruolo, consulta [Creating an IAM Role (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) nella *IAM User Guide*.

##### Creazione dell'applicazione
<a name="examples-s3sink-scala-create-application-cli"></a>

Salvare il seguente codice JSON in un file denominato `create_request.json`. Sostituisci l'ARN del ruolo di esempio con l'ARN per il ruolo creato in precedenza. Sostituisci il suffisso dell'ARN del bucket (username) con il suffisso 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 [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)con 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
<a name="examples-s3sink-scala-start"></a>

In questa sezione, viene utilizzata l'operazione [StartApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StartApplication.html) per avviare l'applicazione.

**Per avviare l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `start_request.json`.

   ```
   {{
       "ApplicationName": "s3_sink",
       "RunConfiguration": {
           "ApplicationRestoreConfiguration": { 
            "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT"
            }
       }
   }
   ```

1. 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
<a name="examples-s3sink-scala-stop"></a>

In questa sezione, viene utilizzata l'operazione [StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html) per interrompere l'applicazione.

**Per interrompere l'applicazione**

1. Salvare il seguente codice JSON in un file denominato `stop_request.json`.

   ```
   {
      "ApplicationName": "s3_sink"
   }
   ```

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

##### Aggiungi un'opzione CloudWatch di registrazione
<a name="examples-s3sink-scala-cw-option"></a>

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](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs.html).

##### Aggiornare le proprietà dell'ambiente
<a name="examples-s3sink-scala-update-environment-properties"></a>

In questa sezione, viene utilizzata l'operazione [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 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. Salvare il seguente codice JSON 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"
                  }
               }
            ]
         }
      }
   }
   ```

1. 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
<a name="examples-s3sink-scala-update-app-code"></a>

Quando è necessario aggiornare il codice dell'applicazione con una nuova versione del pacchetto di codice, si utilizza l'azione [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)CLI.

**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](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html).

Per utilizzarlo AWS CLI, elimina il pacchetto di codice precedente dal bucket Amazon S3, carica la nuova versione e chiama`UpdateApplication`, 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](examples-gs-scala.md#examples-gs-scala-resources).

```
{
    "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
<a name="examples-s3sink-scala-cleanup"></a>

Questa sezione include le procedure per ripulire AWS le risorse create nel tutorial di Tumbling Window.

**Topics**
+ [Eliminare l'applicazione Managed Service for Apache Flink](#examples-s3sink-scala-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-s3sink-scala-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-s3sink-scala-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-s3sink-scala-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-s3sink-scala-cleanup-cw)

##### Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-s3sink-scala-cleanup-app"></a>

1. Accedi a e apri Console di gestione AWS la console Amazon MSF all'indirizzo https://console.aws.amazon.com /flink.

1. nel pannello Managed Service for Apache Flink, scegli. **MyApplication**

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

##### Eliminare i flussi di dati Kinesis
<a name="examples-s3sink-scala-cleanup-stream"></a>

1. [Apri la console Kinesis in /kinesis. https://console.aws.amazon.com](https://console.aws.amazon.com/kinesis)

1. Nel pannello Kinesis Data Streams, scegli. **ExampleInputStream**

1. Nella **ExampleInputStream**pagina, scegli **Elimina Kinesis Stream** e conferma l'eliminazione.

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

##### Elimina l'oggetto e il bucket Amazon S3
<a name="examples-s3sink-scala-cleanup-s3"></a>

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

1. Scegli il ***<username>*secchio ka-app-code -**.

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

##### Elimina le tue risorse IAM
<a name="examples-s3sink-scala-cleanup-iam"></a>

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nella barra di navigazione, scegli **Policy**.

1. Nel controllo filtro, inserisci **kinesis**.

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

1. Seleziona **Operazioni di policy** e quindi **Elimina**.

1. Nella barra di navigazione, scegli **Ruoli**.

1. Scegli il ruolo **kinesis-analytics- MyApplication** -us-west-2.

1. Quindi scegli **Elimina ruolo** e conferma l'eliminazione.

##### CloudWatch Elimina le tue risorse
<a name="examples-s3sink-scala-cleanup-cw"></a>

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

1. Nella barra di navigazione, scegli **Log**.

1. Scegli il gruppo**/aws/kinesis-analytics/MyApplication**log.

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