

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

# Esecuzione di operazioni di importazione ed esportazione in blocco
<a name="tm-import-export-api"></a>

Questo argomento spiega come eseguire operazioni di importazione ed esportazione in blocco e come gestire gli errori nei processi di trasferimento. Fornisce esempi di processi di trasferimento che utilizzano i comandi CLI.

L' AWS IoT TwinMaker API Reference contiene informazioni sulle [ CreateMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CreateMetadataTransferJob.html)e altre azioni API.

**Topics**
+ [metadataTransferJob prerequisiti](#tm-import-export-prereqs)
+ [autorizzazioni IAM](#tm-import-export-prereqs-permissions)
+ [Esegui un'operazione in blocco](#tm-import-export-procedure)
+ [Gestione degli errori](#tm-import-export-error-handling)
+ [Importa modelli di metadati](#tm-import-metadata-templates)
+ [AWS IoT TwinMaker metadataTransferJob esempi](#tm-import-export-cli-examples)

## metadataTransferJob prerequisiti
<a name="tm-import-export-prereqs"></a>

Completa i seguenti prerequisiti prima di eseguire un: metadataTransferJob
+ Crea uno spazio di AWS IoT TwinMaker lavoro. L'area di lavoro può essere la destinazione di importazione o la fonte di esportazione per un. metadataTransferJob Per informazioni sulla creazione di un'area di lavoro, consulta,. [Creare un'area di lavoro](twinmaker-gs-workspace.md) 
+ Crea un bucket Amazon S3 per archiviare le risorse. Per ulteriori informazioni sull'uso di Amazon S3, consulta [What is Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/Welcome.html)?

## autorizzazioni IAM
<a name="tm-import-export-prereqs-permissions"></a>

Quando esegui operazioni di massa, devi creare una policy IAM con autorizzazioni per consentire lo scambio di AWS risorse tra Amazon S3 AWS IoT TwinMaker, AWS IoT SiteWise, e il tuo computer locale. Per ulteriori informazioni sulla creazione di policy IAM, consulta [Creazione](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html) di policy IAM. 

Le dichiarazioni politiche per AWS IoT TwinMaker Amazon S3 AWS IoT SiteWise e Amazon sono elencate di seguito:
+ **AWS IoT TwinMaker politica**:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
          "Effect": "Allow",
          "Action": [
              "s3:PutObject",
              "s3:GetObject",
              "s3:GetBucketLocation",
              "s3:ListBucket",
              "s3:AbortMultipartUpload",
              "s3:ListBucketMultipartUploads",
              "s3:ListMultipartUploadParts"
          ],
          "Resource": "*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "iottwinmaker:GetWorkspace",
                  "iottwinmaker:CreateEntity",
                  "iottwinmaker:GetEntity",
                  "iottwinmaker:UpdateEntity",
                  "iottwinmaker:GetComponentType",
                  "iottwinmaker:CreateComponentType",
                  "iottwinmaker:UpdateComponentType",
                  "iottwinmaker:ListEntities",
                  "iottwinmaker:ListComponentTypes",
                  "iottwinmaker:ListTagsForResource",
                  "iottwinmaker:TagResource",
                  "iottwinmaker:UntagResource"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ **AWS IoT SiteWise politica**:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
          "Effect": "Allow",
          "Action": [
              "s3:PutObject",
              "s3:GetObject",
              "s3:GetBucketLocation",
              "s3:ListBucket",
              "s3:AbortMultipartUpload",
              "s3:ListBucketMultipartUploads",
              "s3:ListMultipartUploadParts"
          ],
          "Resource": "*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "iotsitewise:CreateAsset",
                  "iotsitewise:CreateAssetModel",
                  "iotsitewise:UpdateAsset",
                  "iotsitewise:UpdateAssetModel",
                  "iotsitewise:UpdateAssetProperty",
                  "iotsitewise:ListAssets",
                  "iotsitewise:ListAssetModels",
                  "iotsitewise:ListAssetProperties",
                  "iotsitewise:ListAssetModelProperties",
                  "iotsitewise:ListAssociatedAssets",
                  "iotsitewise:DescribeAsset",
                  "iotsitewise:DescribeAssetModel",
                  "iotsitewise:DescribeAssetProperty",
                  "iotsitewise:AssociateAssets",
                  "iotsitewise:DisassociateAssets",
                  "iotsitewise:AssociateTimeSeriesToAssetProperty",
                  "iotsitewise:DisassociateTimeSeriesFromAssetProperty",
                  "iotsitewise:BatchPutAssetPropertyValue",
                  "iotsitewise:BatchGetAssetPropertyValue",
                  "iotsitewise:TagResource",
                  "iotsitewise:UntagResource",
                  "iotsitewise:ListTagsForResource"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ Politica di **Amazon S3:**

  ```
  {
      "Effect": "Allow",
      "Action": [
          "s3:PutObject",
          "s3:GetObject",
          "s3:GetBucketLocation",
          "s3:ListBucket",
          "s3:AbortMultipartUpload",
          "s3:ListBucketMultipartUploads",
          "s3:ListMultipartUploadParts"
      ],
      "Resource": "*"
  }
  ```

  In alternativa, puoi definire l'ambito della tua policy Amazon S3 per accedere a un solo bucket Amazon S3, consulta la seguente policy.

  **Policy con ambito a bucket singolo di Amazon S3**

  ```
  {
      "Effect": "Allow",
      "Action": [
          "s3:PutObject",
          "s3:GetObject",
          "s3:GetBucketLocation",
          "s3:ListBucket",
          "s3:AbortMultipartUpload",
          "s3:ListBucketMultipartUploads",
          "s3:ListMultipartUploadParts"
      ],
      "Resource": [
          "arn:aws:s3:::bucket name",
          "arn:aws:s3:::bucket name/*"
      ]
  }
  ```

### Imposta il controllo degli accessi per un metadataTransferJob
<a name="tm-import-export-access-control"></a>

Per controllare il tipo di lavoro a cui un utente può accedere, aggiungi la seguente politica IAM al ruolo utilizzato per la chiamata AWS IoT TwinMaker.

**Nota**  
Questa politica consente l'accesso solo ai lavori di AWS IoT TwinMaker importazione ed esportazione che trasferiscono risorse da e verso Amazon S3.

```
{
    "Effect": "Allow",
    "Action": [
        "iottwinmaker:*DataTransferJob*"
    ],
    "Resource": "*",
    "Condition": {
        "StringLikeIfExists": {
            "iottwinmaker:sourceType": [
                "s3",
                "iottwinmaker"
            ],
            "iottwinmaker:destinationType": [
                "iottwinmaker",
                "s3"
            ]
        }
    }
}
```

## Esegui un'operazione in blocco
<a name="tm-import-export-procedure"></a>

Questa sezione spiega come eseguire operazioni di importazione ed esportazione in blocco.

**Importa dati da Amazon S3 a AWS IoT TwinMaker**

1. Specificate le risorse che desiderate trasferire utilizzando lo AWS IoT TwinMaker metadataTransferJob schema. Crea e archivia il tuo file di schema nel tuo bucket Amazon S3.

   Per esempi di schemi, vedi. [Importa modelli di metadati](#tm-import-metadata-templates)

1. Crea un corpo della richiesta e salvalo come file JSON. Il corpo della richiesta specifica l'origine e la destinazione del processo di trasferimento. Assicurati di specificare il tuo bucket Amazon S3 come origine e il tuo AWS IoT TwinMaker spazio di lavoro come destinazione. 

   Di seguito è riportato un esempio di corpo della richiesta:

   ```
   {
       "metadataTransferJobId": "your-transfer-job-Id",
       "sources": [{
           "type": "s3",
           "s3Configuration": {
               "location": "arn:aws:s3:::amzn-s3-demo-bucket/your_import_data.json"
           }
       }],
       "destination": {
           "type": "iottwinmaker",
           "iotTwinMakerConfiguration": {
               "workspace": "arn:aws:iottwinmaker:us-east-1:111122223333:workspace/your-worksapce-name"
           }
       }
   }
   ```

   Registra il nome del file che hai assegnato al corpo della richiesta, ne avrai bisogno nel passaggio successivo. In questo esempio il corpo della richiesta è denominato`createMetadataTransferJobImport.json`.

1. Esegui il seguente comando CLI da richiamare `CreateMetadataTransferJob` (sostituisci il nome del file input-json con il nome che hai assegnato al corpo della richiesta):

   ```
   aws iottwinmaker create-metadata-transfer-job --region us-east-1 \
   --cli-input-json file://createMetadataTransferJobImport.json
   ```

   Questo crea un file metadataTransferJob e avvia il processo di trasferimento delle risorse selezionate.

**Esportazione di dati AWS IoT TwinMaker da Amazon S3**

1. Crea un corpo di richiesta JSON con i filtri appropriati per scegliere le risorse che desideri esportare. Per questo esempio utilizziamo:

   ```
   {
       "metadataTransferJobId": "your-transfer-job-Id",
       "sources": [{
           "type": "iottwinmaker",
           "iotTwinMakerConfiguration": {
               "workspace": "arn:aws:iottwinmaker:us-east-1:111122223333:workspace/your-workspace-name",
               "filters": [{
                   "filterByEntity": {
                       "entityId": "parent"
                   }},
                   {
                   "filterByEntity": {
                       "entityId": "child"
                   }},
                   {
                   "filterByComponentType": {
                       "componentTypeId": "component.type.minimal"
                   }}
               ]
           }
       }],
       "destination": {
           "type": "s3",
           "s3Configuration": {
               "location": "arn:aws:s3:::amzn-s3-demo-bucket"
           }
       }
   }
   ```

   L'`filters`array consente di specificare quali risorse verranno esportate. In questo esempio filtriamo per`entity`, e`componentType`.

   Assicurati di specificare il tuo AWS IoT TwinMaker spazio di lavoro come origine e il tuo bucket Amazon S3 come destinazione del processo di trasferimento dei metadati.

   Salva il corpo della richiesta e registra il nome del file, ti servirà nel passaggio successivo. Per questo esempio, abbiamo chiamato il corpo della nostra richiesta`createMetadataTransferJobExport.json`.

1. Esegui il seguente comando CLI da richiamare `CreateMetadataTransferJob` (sostituisci il nome del file input-json con il nome che hai assegnato al corpo della richiesta):

   ```
   aws iottwinmaker create-metadata-transfer-job --region us-east-1 \
   --cli-input-json file://createMetadataTransferJobExport.json
   ```

   Questo crea un file metadataTransferJob e avvia il processo di trasferimento delle risorse selezionate.

Per controllare o aggiornare lo stato di un processo di trasferimento, utilizzate i seguenti comandi:
+ Per annullare un lavoro, utilizza l'azione [ CancelMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CancelMetadataTransferJob.html)API. Quando si effettua una chiamata CancelMetadataTransferJob, l'API annulla solo una chiamata in esecuzione metadataTransferJob e le risorse già esportate o importate non sono interessate da questa chiamata API.
+ Per recuperare informazioni su un lavoro specifico, utilizza l'[ GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html)azione API.

  In alternativa, puoi richiamare GetMetadataTransferJob un processo di trasferimento esistente con il seguente comando CLI:

  ```
  aws iottwinmaker get-metadata-transfer-job --job-id ExistingJobId
  ```

  Se richiami GetMetadataTransferJob un processo di AWS IoT TwinMaker importazione o esportazione inesistente, ricevi un `ResourceNotFoundException` errore in risposta.
+ Per elencare i lavori correnti, utilizza l'azione [ ListMetadataTransferJobs](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobs.html)API.

  Ecco un esempio di CLI che chiama ListMetadataTransferJobs with AWS IoT TwinMaker come destinationType e come SourceType: `s3`

  ```
  aws iottwinmaker list-metadata-transfer-jobs --destination-type iottwinmaker --source-type s3
  ```
**Nota**  
È possibile modificare i valori dei parametri SourceType e DestinationType in modo che corrispondano all'origine e alla destinazione del processo di importazione o esportazione.

Per altri esempi di comandi CLI che richiamano queste azioni API, consulta. [AWS IoT TwinMaker metadataTransferJob esempi](#tm-import-export-cli-examples)

Se si verificano errori durante il processo di trasferimento, consulta. [Gestione degli errori](#tm-import-export-error-handling)

## Gestione degli errori
<a name="tm-import-export-error-handling"></a>

Dopo aver creato ed eseguito un processo di trasferimento, puoi chiamare GetMetadataTransferJob per diagnosticare eventuali errori che si sono verificati:

```
aws iottwinmaker get-metadata-transfer-job \
--metadata-transfer-job-id your_metadata_transfer_job_id \
--region us-east-1
```

Una volta visualizzato lo stato del lavoro a cui rivolgerti`COMPLETED`, puoi verificarne i risultati. GetMetadataTransferJob restituisce un oggetto chiamato [https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html)che contiene i seguenti campi:
+ **FailedCount:** indica il numero di risorse che hanno avuto esito negativo durante il processo di trasferimento.
+ **SkippedCount:** indica il numero di risorse che sono state ignorate durante il processo di trasferimento.
+ **successeededCount:** indica il numero di risorse che hanno avuto successo durante il processo di trasferimento.
+ **totalCount:** indica il numero totale di risorse coinvolte nel processo di trasferimento.

Inoltre, viene restituito un elemento reportURL che contiene un URL prefirmato. Se il processo di trasferimento presenta errori che desideri approfondire, puoi scaricare un rapporto di errore completo utilizzando questo URL.

## Importa modelli di metadati
<a name="tm-import-metadata-templates"></a>

È possibile importare molti componenti, ComponentType o entità con un'unica operazione di importazione in blocco. Gli esempi in questa sezione mostrano come eseguire questa operazione.

------
#### [ template: Importing entities ]

Utilizzate il seguente formato di modello per un lavoro che importa entità:

```
{
  "entities": [
    {
      "description": "string",
      "entityId": "string",
      "entityName": "string",
      "parentEntityId": "string",
      "tags": {
        "string": "string"
      },
      "components": {
        "string": {    
          "componentTypeId": "string",
          "description": "string",
          "properties": {
            "string": {
              "definition": {
                "configuration": {
                  "string": "string"
                },
                "dataType": "DataType",
                "defaultValue": "DataValue",
                "displayName": "string",
                "isExternalId": "boolean",
                "isRequiredInEntity": "boolean",
                "isStoredExternally": "boolean",
                "isTimeSeries": "boolean"
              },
              "value": "DataValue"
            }
          },
          "propertyGroups": {
            "string": {
              "groupType": "string",
              "propertyNames": [
                "string"
              ]
            }
          }
        }
      }
    }
  ]
}
```

------
#### [ template: Importing componentTypes ]

Utilizzate il seguente formato di modello per un job che importa ComponentTypes:

```
{
  "componentTypes": [
    {
      "componentTypeId": "string",
      "componentTypeName": "string",
      "description": "string",
      "extendsFrom": [
        "string"
      ],
      "functions": {
        "string": {
          "implementedBy": {
            "isNative": "boolean",
            "lambda": {
              "functionName": "Telemetry-tsDataReader",
              "arn": "Telemetry-tsDataReaderARN"
            }
          },
          "requiredProperties": [
            "string"
          ],
          "scope": "string"
        }
      },
      "isSingleton": "boolean",
      "propertyDefinitions": {
        "string": {
          "configuration": {
            "string": "string"
          },
          "dataType": "DataType",
          "defaultValue": "DataValue",
          "displayName": "string",
          "isExternalId": "boolean",
          "isRequiredInEntity": "boolean",
          "isStoredExternally": "boolean",
          "isTimeSeries": "boolean"
        }
      },
      "propertyGroups": {
        "string": {
          "groupType": "string",
          "propertyNames": [
            "string"
          ]
        }
      },
      "tags": {
        "string": "string"
      }
    }
  ]
}
```

------
#### [ template: Importing components ]

Utilizzate il seguente formato di modello per un lavoro che importa componenti:

```
{
  "entityComponents": [
    {
      "entityId": "string",
      "componentName": "string",
      "componentTypeId": "string",
      "description": "string",
      "properties": {
        "string": {
          "definition": {
            "configuration": {
              "string": "string"
            },
            "dataType": "DataType",
            "defaultValue": "DataValue",
            "displayName": "string",
            "isExternalId": "boolean",
            "isRequiredInEntity": "boolean",
            "isStoredExternally": "boolean",
            "isTimeSeries": "boolean"
          },
          "value": "DataValue"
        }
      },
      "propertyGroups": {
        "string": {
          "groupType": "string",
          "propertyNames": [
            "string"
          ]
        }
      }
    }
  ]
}
```

------

## AWS IoT TwinMaker metadataTransferJob esempi
<a name="tm-import-export-cli-examples"></a>

Utilizza i seguenti comandi per gestire i trasferimenti di metadati:
+ [ CreateMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CreateMetadataTransferJob.html)Azione API.

  Esempio di comando CLI:

  ```
  aws iottwinmaker create-metadata-transfer-job --region us-east-1 \
  --cli-input-json file://yourTransferFileName.json
  ```
+ Per annullare un lavoro, utilizza l'azione [ CancelMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CancelMetadataTransferJob.html)API.

  Esempio di comando CLI:

  ```
  aws iottwinmaker cancel-metadata-transfer-job 
  --region us-east-1 \
  --metadata-transfer-job-id job-to-cancel-id
  ```

  Quando si chiama CancelMetadataTransferJob, annulla solo un processo di trasferimento di metadati specifico e le risorse già esportate o importate non vengono influenzate.
+ Per recuperare informazioni su un lavoro specifico, utilizza l'azione API. [ GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html)

  Esempio di comando CLI:

  ```
  aws iottwinmaker get-metadata-transfer-job \
  --metadata-transfer-job-id your_metadata_transfer_job_id \
  --region us-east-1 \
  ```
+ Per elencare i lavori correnti, usa l'azione [ ListMetadataTransferJobs](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobs.html)API.

  Puoi filtrare i risultati restituiti ListMetadataTransferJobs utilizzando un file JSON. Consultate la seguente procedura utilizzando la CLI:

  1. Crea un file JSON di input CLI per specificare i filtri che desideri utilizzare:

     ```
     {
         "sourceType": "s3",
         "destinationType": "iottwinmaker",
         "filters": [{
             "workspaceId": "workspaceforbulkimport"
         },
         {
             "state": "COMPLETED"
         }]
     }
     ```

     Salvalo e registra il nome del file, ti servirà quando inserisci il comando CLI.

  1. Utilizzate il file JSON come argomento per il seguente comando CLI:

     ```
     aws iottwinmaker list-metadata-transfer-job --region us-east-1 \
     --cli-input-json file://ListMetadataTransferJobsExample.json
     ```