

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

# Inizia (Scala)
<a name="examples-gs-scala"></a>

**Nota**  
A partire dalla versione 1.15, Flink è gratuito per Scala. Le applicazioni possono ora utilizzare l'API Java da qualsiasi versione di Scala. Flink usa ancora Scala internamente in alcuni componenti chiave, ma non espone Scala nel classloader del codice utente. Per questo motivo, devi aggiungere le dipendenze di Scala nei tuoi 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, creerai un'applicazione Managed Service for Apache Flink per Scala con un flusso Kinesis come sorgente e sink. 

**Topics**
+ [Crea risorse dipendenti](#examples-gs-scala-resources)
+ [Scrivi record di esempio nel flusso di input](#examples-gs-scala-write)
+ [Scarica ed esamina il codice dell'applicazione](#examples-gs-scala-download)
+ [Per creare e compilare il codice dell'applicazione](#examples-gs-scala-upload)
+ [Crea ed esegui l'applicazione (console)](gs-scala-7.md)
+ [Creazione ed esecuzione dell'applicazione (CLI)](examples-gs-scala-create-run-cli.md)
+ [Pulisci le risorse AWS](examples-gs-scala-cleanup.md)

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

Prima di creare un'applicazione del servizio gestito per Apache Flink per questo esercizio, è necessario creare le seguenti risorse dipendenti: 
+ Due flussi Kinesis per l'input e l'output.
+ 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**.

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

    ```
    aws kinesis create-stream \
        --stream-name ExampleInputStream \
        --shard-count 1 \
        --region us-west-2 \
        --profile adminuser
    ```
  + 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
    ```
+ Consulta [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>***.

**Altre risorse**

Quando crei la tua applicazione, Managed Service for Apache Flink crea le seguenti CloudWatch risorse Amazon se non esistono già:
+ Un gruppo di log denominato `/AWS/KinesisAnalytics-java/MyApplication`
+ Un flusso di log denominato `kinesis-analytics-log-stream`

## Scrivi record di esempio nel flusso di input
<a name="examples-gs-scala-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-gs-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/GettingStarted`.

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

## Per creare e compilare il codice dell'applicazione
<a name="examples-gs-scala-upload"></a>

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

**Compilazione del codice dell'applicazione**

In questa sezione, 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/getting-started-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 `getting-started-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="gs-scala-7"></a>

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

## Creazione dell'applicazione
<a name="gs-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**.
   + Mantieni la versione di **Apache** Flink 1.19.1.

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="gs-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 **getting-started-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/gs-scala-7.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/gs-scala-7.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="gs-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/getting-started-scala-1.0.jar"
               ]
           },
           {
               "Sid": "DescribeLogGroups",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogGroups"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:*"
               ]
           },
           {
               "Sid": "DescribeLogStreams",
               "Effect": "Allow",
               "Action": [
                   "logs:DescribeLogStreams"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*"
               ]
           },
           {
               "Sid": "PutLogEvents",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents"
               ],
               "Resource": [
                   "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream"
               ]
           },
           {
               "Sid": "ReadInputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream"
           },
           {
               "Sid": "WriteOutputStream",
               "Effect": "Allow",
               "Action": "kinesis:*",
               "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream"
           }
       ]
   }
   ```

------

## Esecuzione dell'applicazione.
<a name="gs-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="gs-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-gs-scala-create-run-cli"></a>

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

## Creazione di una policy di autorizzazione
<a name="examples-gs-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 una policy IAM
<a name="examples-gs-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-gs-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": "getting_started",
    "ApplicationDescription": "Scala getting started application",
    "RuntimeEnvironment": "FLINK-1_19",
    "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation": {
                    "BucketARN": "arn:aws:s3:::ka-app-code-username",
                    "FileKey": "getting-started-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-gs-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": "getting_started",
       "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": "getting_started",
          "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-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": "getting_started",
    "CurrentApplicationVersionId": 1,
    "ApplicationConfigurationUpdate": {
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "BucketARNUpdate": "arn:aws:s3:::ka-app-code-<username>",
                    "FileKeyUpdate": "getting-started-scala-1.0.jar",
                    "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
                }
            }
        }
    }
}
```

# Pulisci le risorse AWS
<a name="examples-gs-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-gs-scala-cleanup-app)
+ [Eliminare i flussi di dati Kinesis](#examples-gs-scala-cleanup-stream)
+ [Elimina l'oggetto e il bucket Amazon S3](#examples-gs-scala-cleanup-s3)
+ [Elimina le tue risorse IAM](#examples-gs-scala-cleanup-iam)
+ [CloudWatch Elimina le tue risorse](#examples-gs-scala-cleanup-cw)

## Eliminare l'applicazione Managed Service for Apache Flink
<a name="examples-gs-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-gs-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-gs-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-gs-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-gs-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.