

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

# Esporta le configurazioni per le destinazioni supportate Cloud AWS
<a name="stream-export-configurations"></a>

I componenti Greengrass definiti dall'utente vengono `StreamManagerClient` utilizzati nell'SDK Stream Manager per interagire con lo stream manager. Quando un componente [crea uno stream](work-with-streams.md#streammanagerclient-create-message-stream) o [aggiorna uno stream, passa un](work-with-streams.md#streammanagerclient-create-message-stream) `MessageStreamDefinition` oggetto che rappresenta le proprietà dello stream, inclusa la definizione di esportazione. L'`ExportDefinition`oggetto contiene le configurazioni di esportazione definite per lo stream. Stream Manager utilizza queste configurazioni di esportazione per determinare dove e come esportare lo stream.

![\[Diagramma del modello a oggetti del tipo di ExportDefinition proprietà.\]](http://docs.aws.amazon.com/it_it/greengrass/v2/developerguide/images/stream-manager-exportconfigs.png)


È possibile definire zero o più configurazioni di esportazione su uno stream, incluse più configurazioni di esportazione per un singolo tipo di destinazione. Ad esempio, puoi esportare uno stream su due AWS IoT Analytics canali e un flusso di dati Kinesis.

In caso di tentativi di esportazione falliti, stream manager riprova continuamente a esportare i dati verso il a Cloud AWS intervalli fino a cinque minuti. Il numero di tentativi di nuovo tentativo non ha un limite massimo.

**Nota**  
<a name="streammanagerclient-http-config"></a>`StreamManagerClient`fornisce anche una destinazione di destinazione che è possibile utilizzare per esportare i flussi su un server HTTP. Questo target è destinato esclusivamente a scopi di test. Non è stabile né è supportato per l'uso in ambienti di produzione.

**Topics**
+ [AWS IoT Analytics canali](#export-to-iot-analytics)
+ [Flussi di dati Amazon Kinesis](#export-to-kinesis)
+ [AWS IoT SiteWise proprietà degli asset](#export-to-iot-sitewise)
+ [Oggetti Amazon S3](#export-to-s3)

L'utente è responsabile del mantenimento di queste Cloud AWS risorse.

## AWS IoT Analytics canali
<a name="export-to-iot-analytics"></a>

Stream manager supporta le esportazioni automatiche verso AWS IoT Analytics. <a name="ita-export-destination"></a>AWS IoT Analytics consente di eseguire analisi avanzate sui dati per aiutare a prendere decisioni aziendali e migliorare i modelli di apprendimento automatico. Per ulteriori informazioni, consulta [Cos'è AWS IoT Analytics?](https://docs.aws.amazon.com/iotanalytics/latest/userguide/welcome.html) nella *Guida AWS IoT Analytics per l'utente*. 

Nell'SDK Stream Manager, i componenti Greengrass utilizzano per definire `IoTAnalyticsConfig` la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consultate il riferimento SDK per la lingua di destinazione:
+ [Io TAnalytics Config nell'SDK](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-python/_apidoc/stream_manager.data.html#stream_manager.data.IoTAnalyticsConfig) Python
+ [Io TAnalytics Config nell'SDK](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-java/com/amazonaws/greengrass/streammanager/model/export/IoTAnalyticsConfig.html) Java
+ [Io TAnalytics Config nell'SDK](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-js/aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig.html) Node.js

### Requisiti
<a name="export-to-iot-analytics-reqs"></a>

Questa destinazione di esportazione presenta i seguenti requisiti:
+ I canali di destinazione in ingresso AWS IoT Analytics devono trovarsi nello stesso Account AWS dispositivo principale Greengrass. Regione AWS 
+ [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)Devono consentire l'`iotanalytics:BatchPutMessage`autorizzazione per i canali di destinazione. Esempio:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iotanalytics:BatchPutMessage"
        ],
        "Resource": [
          "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_1_name",
          "arn:aws:iotanalytics:us-east-1:123456789012:channel/channel_2_name"
        ]
      }
    ]
  }
  ```

------

  <a name="wildcards-grant-granular-conditional-access"></a>È possibile concedere un accesso granulare o condizionale alle risorse, ad esempio utilizzando uno schema di denominazione con caratteri jolly`*`. *Per ulteriori informazioni, consulta [Aggiungere e rimuovere le policy IAM nella IAM User](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) Guide.*

### Esportazione in AWS IoT Analytics
<a name="export-streams-to-iot-analytics"></a>

Per creare un flusso che esporta in AWS IoT Analytics, i componenti Greengrass [creano un flusso con una](work-with-streams.md#streammanagerclient-create-message-stream) definizione di esportazione che include uno o più `IoTAnalyticsConfig` oggetti. Questo oggetto definisce le impostazioni di esportazione, come il canale di destinazione, la dimensione del batch, l'intervallo del batch e la priorità.

Quando i componenti Greengrass ricevono dati dai dispositivi, [aggiungono messaggi](work-with-streams.md#streammanagerclient-append-message) che contengono un blob di dati allo stream di destinazione.

Quindi, stream manager esporta i dati in base alle impostazioni del batch e alla priorità definite nelle configurazioni di esportazione dello stream.

## Flussi di dati Amazon Kinesis
<a name="export-to-kinesis"></a>

Stream Manager supporta le esportazioni automatiche verso Amazon Kinesis Data Streams. <a name="aks-export-destination"></a>Kinesis Data Streams viene comunemente utilizzato per aggregare dati di grandi volumi e caricarli in un data warehouse o cluster. MapReduce Per ulteriori informazioni, consulta [Cos'è Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/what-is-this-service.html)? nella *Amazon Kinesis Developer Guide*. 

Nell'SDK Stream Manager, i componenti Greengrass utilizzano per definire `KinesisConfig` la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consultate il riferimento SDK per la lingua di destinazione:
+ [KinesisConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-python/_apidoc/stream_manager.data.html#stream_manager.data.KinesisConfig)nell'SDK Python
+ [KinesisConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-java/com/amazonaws/greengrass/streammanager/model/export/KinesisConfig.html)nell'SDK Java
+ [KinesisConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-js/aws-greengrass-core-sdk.StreamManager.KinesisConfig.html)nell'SDK Node.js

### Requisiti
<a name="export-to-kinesis-reqs"></a>

Questa destinazione di esportazione presenta i seguenti requisiti:
+ I flussi di destinazione in Kinesis Data Streams devono trovarsi nello Regione AWS stesso dispositivo principale Account AWS Greengrass.
+ (Consigliato) Stream manager v2.2.1 migliora le prestazioni di esportazione dei flussi verso destinazioni Kinesis Data Streams. Per utilizzare i miglioramenti di quest'ultima versione, aggiorna il [componente di gestione degli stream](stream-manager-component.md) alla versione 2.2.1 e utilizza la `kinesis:ListShards` politica nel ruolo di scambio di token [Greengrass](device-service-role.md). 
+ È [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md) necessario consentire l'`kinesis:PutRecords`autorizzazione per indirizzare i flussi di dati. Esempio:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "kinesis:PutRecords"
        ],
        "Resource": [
          "arn:aws:kinesis:us-east-1:123456789012:stream/stream_1_name",
          "arn:aws:kinesis:us-east-1:123456789012:stream/stream_2_name"
        ]
      }
    ]
  }
  ```

------

  <a name="wildcards-grant-granular-conditional-access"></a>È possibile concedere un accesso granulare o condizionale alle risorse, ad esempio utilizzando uno schema di denominazione con caratteri jolly`*`. *Per ulteriori informazioni, consulta [Aggiungere e rimuovere le policy IAM nella IAM User](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) Guide.*

### Esportazione in Kinesis Data Streams
<a name="export-streams-to-kinesis"></a>

Per creare un flusso che esporta in Kinesis Data Streams, i [componenti Greengrass creano](work-with-streams.md#streammanagerclient-create-message-stream) un flusso con una definizione di esportazione che include uno o più oggetti. `KinesisConfig` Questo oggetto definisce le impostazioni di esportazione, come il flusso di dati di destinazione, la dimensione del batch, l'intervallo del batch e la priorità.

Quando i componenti Greengrass ricevono dati dai dispositivi, [aggiungono messaggi](work-with-streams.md#streammanagerclient-append-message) che contengono un blob di dati allo stream di destinazione. Quindi, stream manager esporta i dati in base alle impostazioni del batch e alla priorità definite nelle configurazioni di esportazione dello stream. 

Stream Manager genera un UUID univoco e casuale come chiave di partizione per ogni record caricato su Amazon Kinesis. 

## AWS IoT SiteWise proprietà degli asset
<a name="export-to-iot-sitewise"></a>

Stream manager supporta le esportazioni automatiche verso AWS IoT SiteWise. <a name="itsw-export-destination"></a>AWS IoT SiteWise consente di raccogliere, organizzare e analizzare dati provenienti da apparecchiature industriali su larga scala. Per ulteriori informazioni, consulta [Cos'è AWS IoT SiteWise?](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html) nella *Guida AWS IoT SiteWise per l'utente*. 

Nell'SDK Stream Manager, i componenti Greengrass utilizzano per definire `IoTSiteWiseConfig` la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consultate il riferimento SDK per la lingua di destinazione:
+ [Io TSite WiseConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-python/_apidoc/stream_manager.data.html#stream_manager.data.IoTSiteWiseConfig) nell'SDK Python
+ [Io TSite WiseConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-java/com/amazonaws/greengrass/streammanager/model/export/IoTSiteWiseConfig.html) nell'SDK Java
+ [Io TSite WiseConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-js/aws-greengrass-core-sdk.StreamManager.IoTSiteWiseConfig.html) nell'SDK Node.js

**Nota**  
AWS fornisce anche AWS IoT SiteWise componenti che offrono una soluzione predefinita che è possibile utilizzare per lo streaming di dati da fonti OPC-UA. Per ulteriori informazioni, consulta [Collettore IoT SiteWise OPC UA](iotsitewise-opcua-collector-component.md).

### Requisiti
<a name="export-to-iot-sitewise-reqs"></a>

Questa destinazione di esportazione presenta i seguenti requisiti:
+ Le proprietà degli asset di destinazione AWS IoT SiteWise devono trovarsi nello stesso Account AWS Regione AWS dispositivo principale di Greengrass.
**Nota**  
*Per l'elenco dei sistemi AWS IoT SiteWise supportati, consulta Regione AWS gli [AWS IoT SiteWise endpoint e le quote nella AWS Guida](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html#iot-sitewise_region) generale.*
+ [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)Devono consentire l'`iotsitewise:BatchPutAssetPropertyValue`autorizzazione per indirizzare le proprietà degli asset. La seguente politica di esempio utilizza la chiave `iotsitewise:assetHierarchyPath` condition per concedere l'accesso a una risorsa principale di destinazione e ai suoi figli. Puoi rimuoverla `Condition` dalla policy per consentire l'accesso a tutte le tue AWS IoT SiteWise risorse o specificare ARNs singole risorse.

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect": "Allow",
         "Action": "iotsitewise:BatchPutAssetPropertyValue",
         "Resource": "*",
         "Condition": {
           "StringLike": {
             "iotsitewise:assetHierarchyPath": [
               "/root node asset ID",
               "/root node asset ID/*"
             ]
           }
         }
      }
    ]
  }
  ```

------

  <a name="wildcards-grant-granular-conditional-access"></a>Puoi concedere un accesso granulare o condizionale alle risorse, ad esempio utilizzando uno schema di denominazione con caratteri jolly`*`. *Per ulteriori informazioni, consulta [Aggiungere e rimuovere le policy IAM nella IAM User](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) Guide.*

  Per importanti informazioni sulla sicurezza, consulta [ BatchPutAssetPropertyValue l'autorizzazione](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-batchputassetpropertyvalue-action) nella *Guida AWS IoT SiteWise per l'utente*.

### Esportazione in AWS IoT SiteWise
<a name="export-streams-to-sitewise"></a>

Per creare un flusso che esporta in AWS IoT SiteWise, i componenti Greengrass [creano un flusso con una](work-with-streams.md#streammanagerclient-create-message-stream) definizione di esportazione che include uno o più `IoTSiteWiseConfig` oggetti. Questo oggetto definisce le impostazioni di esportazione, come la dimensione del batch, l'intervallo del batch e la priorità.

Quando i componenti Greengrass ricevono dati sulle proprietà degli asset dai dispositivi, aggiungono messaggi che contengono i dati allo stream di destinazione. I messaggi sono `PutAssetPropertyValueEntry` oggetti serializzati in formato JSON che contengono valori di proprietà per una o più proprietà degli asset. Per ulteriori informazioni, consulta [Aggiungi](work-with-streams.md#streammanagerclient-append-message-sitewise) messaggio per le destinazioni di esportazione. AWS IoT SiteWise 

**Nota**  
<a name="BatchPutAssetPropertyValue-data-reqs"></a>Quando invii dati a AWS IoT SiteWise, i tuoi dati devono soddisfare i requisiti dell'`BatchPutAssetPropertyValue`azione. Per ulteriori informazioni, consulta [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) nella *documentazione di riferimento dell’API AWS IoT SiteWise *.

Quindi, stream manager esporta i dati in base alle impostazioni del batch e alla priorità definite nelle configurazioni di esportazione dello stream.

Puoi modificare le impostazioni dello stream manager e la logica dei componenti Greengrass per progettare la tua strategia di esportazione. Esempio:
+ Per esportazioni quasi in tempo reale, impostate impostazioni ridotte per la dimensione del batch e l'intervallo e aggiungete i dati allo stream quando vengono ricevuti.
+ Per ottimizzare il batching, mitigare i vincoli di larghezza di banda o ridurre al minimo i costi, i componenti Greengrass possono raggruppare i punti dati timestamp-quality-value (TQV) ricevuti per una singola proprietà dell'asset prima di aggiungere i dati allo stream. Una strategia consiste nell'inserire in un unico messaggio le voci relative a un massimo di 10 diverse combinazioni proprietà-asset, o alias di proprietà, anziché inviare più di una voce per la stessa proprietà. [Questo aiuta lo stream manager a rimanere entro le quote.AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/quotas.html)

## Oggetti Amazon S3
<a name="export-to-s3"></a>

Stream Manager supporta le esportazioni automatiche verso Amazon S3. <a name="s3-export-destination"></a>Puoi usare Amazon S3 per archiviare e recuperare grandi quantità di dati. Per ulteriori informazioni, consulta [Cos'è Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)? nella *Guida per sviluppatori di Amazon Simple Storage Service*. 

Nell'SDK Stream Manager, i componenti Greengrass utilizzano per definire `S3ExportTaskExecutorConfig` la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consultate il riferimento SDK per la lingua di destinazione:
+ [S3 ExportTaskExecutorConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-python/_apidoc/stream_manager.data.html#stream_manager.data.S3ExportTaskExecutorConfig) nell'SDK Python
+ [S3 nell'SDK Java ExportTaskExecutorConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-java/com/amazonaws/greengrass/streammanager/model/export/S3ExportTaskExecutorConfig.html)
+ [S3 ExportTaskExecutorConfig](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-js/aws-greengrass-core-sdk.StreamManager.S3ExportTaskExecutorConfig.html) nell'SDK Node.js

### Requisiti
<a name="export-to-s3-reqs"></a>

Questa destinazione di esportazione presenta i seguenti requisiti:
+ I bucket Amazon S3 di Target devono trovarsi nello stesso dispositivo Account AWS principale Greengrass.
+ Se una funzione Lambda eseguita in modalità **contenitore Greengrass** scrive file di input in una directory di file di input, è necessario montare la directory come volume nel contenitore con autorizzazioni di scrittura. Ciò garantisce che i file vengano scritti nel file system root e siano visibili al componente stream manager, che viene eseguito all'esterno del contenitore.
+ Se un componente del contenitore Docker scrive file di input in una directory di file di input, è necessario montare la directory come volume nel contenitore con autorizzazioni di scrittura. Ciò garantisce che i file vengano scritti nel file system root e siano visibili al componente stream manager, che viene eseguito all'esterno del contenitore.
+ [Autorizza i dispositivi principali a interagire con i servizi AWS](device-service-role.md)Deve consentire le seguenti autorizzazioni per i bucket di destinazione. Esempio:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:PutObject",
          "s3:AbortMultipartUpload",
          "s3:ListMultipartUploadParts"
        ],
        "Resource": [
          "arn:aws:s3:::bucket-1-name/*",
          "arn:aws:s3:::bucket-2-name/*"
        ]
      }
    ]
  }
  ```

------

  <a name="wildcards-grant-granular-conditional-access"></a>È possibile concedere un accesso granulare o condizionale alle risorse, ad esempio utilizzando uno schema di denominazione con caratteri jolly. `*` *Per ulteriori informazioni, consulta [Aggiungere e rimuovere le policy IAM nella IAM User](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) Guide.*

### Esportazione su Amazon S3
<a name="export-streams-to-s3"></a>

Per creare uno stream che esporta in Amazon S3, i componenti Greengrass utilizzano l'`S3ExportTaskExecutorConfig`oggetto per configurare la politica di esportazione. La policy definisce le impostazioni di esportazione, come la soglia e la priorità di caricamento multiparte. Per le esportazioni di Amazon S3, stream manager carica i dati che legge dai file locali sul dispositivo principale. Per avviare un caricamento, i componenti Greengrass aggiungono un'attività di esportazione allo stream di destinazione. L'attività di esportazione contiene informazioni sul file di input e sull'oggetto Amazon S3 di destinazione. Stream Manager esegue le attività nella sequenza in cui vengono aggiunte allo stream.

**Nota**  
 <a name="bucket-not-key-must-exist"></a>Il bucket di destinazione deve già esistere nel tuo. Account AWS Se non esiste un oggetto per la chiave specificata, lo stream manager crea l'oggetto per te. 

Stream manager utilizza la proprietà della soglia di caricamento [multiparte, l'impostazione della dimensione minima](configure-stream-manager.md#stream-manager-minimum-part-size) della parte e la dimensione del file di input per determinare come caricare i dati. La soglia di caricamento in più parti deve essere maggiore o uguale alla dimensione minima della parte. Se desideri caricare dati in parallelo, puoi creare più stream.

Le chiavi che specificano gli oggetti Amazon S3 di destinazione possono includere DateTimeFormatter stringhe [Java](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html) valide nei segnaposto. `!{timestamp:value}` Puoi utilizzare questi segnaposto con timestamp per partizionare i dati in Amazon S3 in base all'ora in cui i dati del file di input sono stati caricati. Ad esempio, il seguente nome di chiave si risolve in un valore come. `my-key/2020/12/31/data.txt`

```
my-key/!{timestamp:YYYY}/!{timestamp:MM}/!{timestamp:dd}/data.txt
```

**Nota**  
Se desideri monitorare lo stato dell'esportazione di uno stream, crea prima uno stream di stato e poi configura il flusso di esportazione per utilizzarlo. Per ulteriori informazioni, consulta [Monitora le attività di esportazione](#monitor-export-status-s3).

#### Gestisci i dati di input
<a name="manage-s3-input-data"></a>

Puoi creare codice utilizzato dalle applicazioni IoT per gestire il ciclo di vita dei dati di input. Il seguente flusso di lavoro di esempio mostra come utilizzare i componenti Greengrass per gestire questi dati.

1. Un processo locale riceve dati da dispositivi o periferiche e quindi li scrive su file in una directory sul dispositivo principale. Questi sono i file di input per lo stream manager.

1. Un componente Greengrass analizza la directory e [aggiunge un'attività di esportazione](work-with-streams.md#streammanagerclient-append-message-export-task) allo stream di destinazione quando viene creato un nuovo file. L'attività è un `S3ExportTaskDefinition` oggetto serializzato in JSON che specifica l'URL del file di input, il bucket e la chiave Amazon S3 di destinazione e i metadati utente opzionali.

1. Stream Manager legge il file di input ed esporta i dati in Amazon S3 nell'ordine delle attività aggiunte. <a name="bucket-not-key-must-exist"></a>Il bucket di destinazione deve già esistere nel tuo. Account AWS Se non esiste un oggetto per la chiave specificata, lo stream manager crea l'oggetto per te. 

1. Il componente Greengrass [legge i messaggi](work-with-streams.md#streammanagerclient-read-messages) da un flusso di stato per monitorare lo stato dell'esportazione. Una volta completate le attività di esportazione, il componente Greengrass può eliminare i file di input corrispondenti. Per ulteriori informazioni, consulta [Monitora le attività di esportazione](#monitor-export-status-s3).

### Monitora le attività di esportazione
<a name="monitor-export-status-s3"></a>

Puoi creare codice utilizzato dalle applicazioni IoT per monitorare lo stato delle esportazioni Amazon S3. I componenti Greengrass devono creare un flusso di stato e quindi configurare il flusso di esportazione per scrivere aggiornamenti di stato nel flusso di stato. Un singolo flusso di stato può ricevere aggiornamenti di stato da più flussi esportati in Amazon S3.

Innanzitutto, [crea uno stream](work-with-streams.md#streammanagerclient-create-message-stream) da utilizzare come flusso di stato. Puoi configurare le dimensioni e le politiche di conservazione dello stream per controllare la durata dei messaggi di stato. Esempio:
+ `Persistence`Imposta su `Memory` se non desideri archiviare i messaggi di stato.
+ Impostato `StrategyOnFull` in `OverwriteOldestData` modo che i nuovi messaggi di stato non vadano persi.

Quindi, crea o aggiorna il flusso di esportazione per utilizzare il flusso di stato. In particolare, imposta la proprietà di configurazione dello stato della configurazione di `S3ExportTaskExecutorConfig` esportazione dello stream. Questa impostazione indica al gestore dello stream di scrivere messaggi di stato sulle attività di esportazione nello stream di stato. Nell'`StatusConfig`oggetto, specificate il nome del flusso di stato e il livello di verbosità. I seguenti valori supportati vanno da least verbose (`ERROR`) a most verbose (). `TRACE` Il valore predefinito è `INFO`.
+ `ERROR`
+ `WARN`
+ `INFO`
+ `DEBUG`
+ `TRACE`

Il seguente flusso di lavoro di esempio mostra come i componenti Greengrass potrebbero utilizzare un flusso di stato per monitorare lo stato delle esportazioni.

1. Come descritto nel flusso di lavoro precedente, un componente Greengrass [aggiunge un'attività di esportazione](work-with-streams.md#streammanagerclient-append-message-export-task) a uno stream configurato per scrivere messaggi di stato sulle attività di esportazione in un flusso di stato. L'operazione di aggiunta restituisce un numero di sequenza che rappresenta l'ID dell'attività.

1. Un componente Greengrass [legge i messaggi](work-with-streams.md#streammanagerclient-read-messages) in sequenza dallo stream di stato, quindi filtra i messaggi in base al nome del flusso e all'ID dell'attività o in base a una proprietà dell'attività di esportazione dal contesto del messaggio. Ad esempio, il componente Greengrass può filtrare in base all'URL del file di input dell'attività di esportazione, che è rappresentato dall'`S3ExportTaskDefinition`oggetto nel contesto del messaggio.

   I seguenti codici di stato indicano che un'attività di esportazione ha raggiunto lo stato di completamento:
   + `Success`. Il caricamento è stato completato con successo.
   + `Failure`. Lo stream manager ha riscontrato un errore, ad esempio, il bucket specificato non esiste. Dopo aver risolto il problema, puoi aggiungere nuovamente l'attività di esportazione allo stream.
   + `Canceled`. L'attività è stata interrotta perché la definizione dello stream o dell'esportazione è stata eliminata o il periodo time-to-live (TTL) dell'attività è scaduto.
**Nota**  
L'attività potrebbe anche avere lo stato o. `InProgress` `Warning` Stream manager emette avvisi quando un evento restituisce un errore che non influisce sull'esecuzione dell'attività. Ad esempio, la mancata pulizia di un caricamento parziale restituisce un avviso.

1. Una volta completate le attività di esportazione, il componente Greengrass può eliminare i file di input corrispondenti.

L'esempio seguente mostra come un componente Greengrass potrebbe leggere ed elaborare i messaggi di stato.

------
#### [ Python ]

```
import time
from stream_manager import (
    ReadMessagesOptions,
    Status,
    StatusConfig,
    StatusLevel,
    StatusMessage,
    StreamManagerClient,
)
from stream_manager.util import Util

client = StreamManagerClient()
 
try:
    # Read the statuses from the export status stream
    is_file_uploaded_to_s3 = False
    while not is_file_uploaded_to_s3:
        try:
            messages_list = client.read_messages(
                "StatusStreamName", ReadMessagesOptions(min_message_count=1, read_timeout_millis=1000)
            )
            for message in messages_list:
                # Deserialize the status message first.
                status_message = Util.deserialize_json_bytes_to_obj(message.payload, StatusMessage)

                # Check the status of the status message. If the status is "Success",
                # the file was successfully uploaded to S3.
                # If the status was either "Failure" or "Cancelled", the server was unable to upload the file to S3.
                # We will print the message for why the upload to S3 failed from the status message.
                # If the status was "InProgress", the status indicates that the server has started uploading
                # the S3 task.
                if status_message.status == Status.Success:
                    logger.info("Successfully uploaded file at path " + file_url + " to S3.")
                    is_file_uploaded_to_s3 = True
                elif status_message.status == Status.Failure or status_message.status == Status.Canceled:
                    logger.info(
                        "Unable to upload file at path " + file_url + " to S3. Message: " + status_message.message
                    )
                    is_file_uploaded_to_s3 = True
            time.sleep(5)
        except StreamManagerException:
            logger.exception("Exception while running")
except StreamManagerException:
    pass
    # Properly handle errors.
except ConnectionError or asyncio.TimeoutError:
    pass
    # Properly handle errors.
```

[Riferimento all'SDK Python: read\$1messages \$1 [StatusMessage](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-python/_apidoc/stream_manager.data.html#stream_manager.data.StatusMessage)](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-python/_apidoc/stream_manager.streammanagerclient.html#stream_manager.streammanagerclient.StreamManagerClient.read_messages)

------
#### [ Java ]

```
import com.amazonaws.greengrass.streammanager.client.StreamManagerClient;
import com.amazonaws.greengrass.streammanager.client.StreamManagerClientFactory;
import com.amazonaws.greengrass.streammanager.client.utils.ValidateAndSerialize;
import com.amazonaws.greengrass.streammanager.model.ReadMessagesOptions;
import com.amazonaws.greengrass.streammanager.model.Status;
import com.amazonaws.greengrass.streammanager.model.StatusConfig;
import com.amazonaws.greengrass.streammanager.model.StatusLevel;
import com.amazonaws.greengrass.streammanager.model.StatusMessage;

 try (final StreamManagerClient client = StreamManagerClientFactory.standard().build()) {
    try {
        boolean isS3UploadComplete = false;
        while (!isS3UploadComplete) {
            try {
                // Read the statuses from the export status stream
                List<Message> messages = client.readMessages("StatusStreamName",
                    new ReadMessagesOptions().withMinMessageCount(1L).withReadTimeoutMillis(1000L));
                for (Message message : messages) {
                    // Deserialize the status message first.
                    StatusMessage statusMessage = ValidateAndSerialize.deserializeJsonBytesToObj(message.getPayload(), StatusMessage.class);
                    // Check the status of the status message. If the status is "Success", the file was successfully uploaded to S3.
                    // If the status was either "Failure" or "Canceled", the server was unable to upload the file to S3.
                    // We will print the message for why the upload to S3 failed from the status message.
                    // If the status was "InProgress", the status indicates that the server has started uploading the S3 task.
                    if (Status.Success.equals(statusMessage.getStatus())) {
                        System.out.println("Successfully uploaded file at path " + FILE_URL + " to S3.");
                        isS3UploadComplete = true;
                     } else if (Status.Failure.equals(statusMessage.getStatus()) || Status.Canceled.equals(statusMessage.getStatus())) {
                        System.out.println(String.format("Unable to upload file at path %s to S3. Message %s",
                            statusMessage.getStatusContext().getS3ExportTaskDefinition().getInputUrl(),
                            statusMessage.getMessage()));
                        sS3UploadComplete = true;
                    }
                }
            } catch (StreamManagerException ignored) {
            } finally {
                // Sleep for sometime for the S3 upload task to complete before trying to read the status message.
                Thread.sleep(5000);
            }
        } catch (e) {
        // Properly handle errors.
    }
} catch (StreamManagerException e) {
    // Properly handle exception.
}
```

Riferimento a Java SDK: [ReadMessages \$1 [StatusMessage](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-java/com/amazonaws/greengrass/streammanager/model/StatusMessage.html)](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-java/com/amazonaws/greengrass/streammanager/client/StreamManagerClient.html#readMessages-java.lang.String-com.amazonaws.greengrass.streammanager.model.ReadMessagesOptions-)

------
#### [ Node.js ]

```
const {
    StreamManagerClient, ReadMessagesOptions,
    Status, StatusConfig, StatusLevel, StatusMessage,
    util,
} = require(*'aws-greengrass-stream-manager-sdk'*);

const client = new StreamManagerClient();
client.onConnected(async () => {
    try {
        let isS3UploadComplete = false;
        while (!isS3UploadComplete) {
            try {
                // Read the statuses from the export status stream
                const messages = await c.readMessages("StatusStreamName",
                    new ReadMessagesOptions()
                        .withMinMessageCount(1)
                        .withReadTimeoutMillis(1000));

                messages.forEach((message) => {
                    // Deserialize the status message first.
                    const statusMessage = util.deserializeJsonBytesToObj(message.payload, StatusMessage);
                    // Check the status of the status message. If the status is 'Success', the file was successfully uploaded to S3.
                    // If the status was either 'Failure' or 'Cancelled', the server was unable to upload the file to S3.
                    // We will print the message for why the upload to S3 failed from the status message.
                    // If the status was "InProgress", the status indicates that the server has started uploading the S3 task.
                    if (statusMessage.status === Status.Success) {
                        console.log(`Successfully uploaded file at path ${FILE_URL} to S3.`);
                        isS3UploadComplete = true;
                    } else if (statusMessage.status === Status.Failure || statusMessage.status === Status.Canceled) {
                        console.log(`Unable to upload file at path ${FILE_URL} to S3. Message: ${statusMessage.message}`);
                        isS3UploadComplete = true;
                    }
                });
                // Sleep for sometime for the S3 upload task to complete before trying to read the status message.
                await new Promise((r) => setTimeout(r, 5000));
            } catch (e) {
                // Ignored
            }
    } catch (e) {
        // Properly handle errors.
    }
});
client.onError((err) => {
    // Properly handle connection errors.
    // This is called only when the connection to the StreamManager server fails.
});
```

Riferimento all'SDK Node.js: [ReadMessages \$1 [StatusMessage](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-js/aws-greengrass-core-sdk.StreamManager.StatusMessage.html)](https://aws-greengrass.github.io/aws-greengrass-stream-manager-sdk-js/aws-greengrass-core-sdk.StreamManager.StreamManagerClient.html#readMessages)

------