

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Executando operações de importação e exportação em massa
<a name="tm-import-export-api"></a>

Este tópico aborda como realizar operações de importação e exportação em massa e como lidar com erros em suas tarefas de transferência. Ele fornece exemplos de trabalhos de transferência usando comandos da CLI.

A Referência AWS IoT TwinMaker da API contém informações sobre as [ CreateMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CreateMetadataTransferJob.html)e outras ações da API.

**Topics**
+ [metadataTransferJob pré-requisitos](#tm-import-export-prereqs)
+ [permissões do IAM](#tm-import-export-prereqs-permissions)
+ [Execute uma operação em massa](#tm-import-export-procedure)
+ [Tratamento de erros](#tm-import-export-error-handling)
+ [Importar modelos de metadados](#tm-import-metadata-templates)
+ [AWS IoT TwinMaker metadataTransferJob exemplos](#tm-import-export-cli-examples)

## metadataTransferJob pré-requisitos
<a name="tm-import-export-prereqs"></a>

Preencha os seguintes pré-requisitos antes de executar um: metadataTransferJob
+ Crie um AWS IoT TwinMaker espaço de trabalho. O espaço de trabalho pode ser o destino de importação ou a fonte de exportação de um metadataTransferJob. Para obter informações sobre como criar um espaço de trabalho, consulte,[Criar um espaço de trabalho](twinmaker-gs-workspace.md). 
+ Crie um bucket do Amazon S3 para armazenar recursos. Para obter mais informações sobre o uso do Amazon S3, consulte [O que é o Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/Welcome.html)?

## permissões do IAM
<a name="tm-import-export-prereqs-permissions"></a>

Ao realizar operações em massa, você precisa criar uma política do IAM com permissões para permitir a troca de AWS recursos entre o Amazon S3,, AWS IoT TwinMaker AWS IoT SiteWise, e sua máquina local. Para obter mais informações sobre a criação de políticas do IAM, consulte [Como criar políticas do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html). 

As declarações de política do Amazon S3 AWS IoT SiteWise e do Amazon S3 estão listadas aqui: AWS IoT TwinMaker
+ **AWS IoT TwinMaker política**:

------
#### [ 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 política**:

------
#### [ 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": "*"
          }
      ]
  }
  ```

------
+ **Política do Amazon S3:**

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

  Como alternativa, você pode definir o escopo de sua política do Amazon S3 para acessar somente um único bucket do Amazon S3, consulte a política a seguir.

  **Política de escopo de bucket único do 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/*"
      ]
  }
  ```

### Defina o controle de acesso para um metadataTransferJob
<a name="tm-import-export-access-control"></a>

Para controlar o tipo de trabalhos que um usuário pode acessar, adicione a seguinte política do IAM à função usada para chamar AWS IoT TwinMaker.

**nota**  
Essa política só permite o acesso a trabalhos de AWS IoT TwinMaker importação e exportação que transferem recursos de e para o Amazon S3.

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

## Execute uma operação em massa
<a name="tm-import-export-procedure"></a>

Esta seção aborda como realizar operações de importação e exportação em massa.

**Importar dados do Amazon S3 para AWS IoT TwinMaker**

1. Especifique os recursos que você deseja transferir usando o AWS IoT TwinMaker metadataTransferJob esquema. Crie e armazene seu arquivo de esquema em seu bucket do Amazon S3.

   Por exemplo, esquemas, consulte[Importar modelos de metadados](#tm-import-metadata-templates).

1. Crie um corpo de solicitação e salve-o como um arquivo JSON. O corpo da solicitação especifica a fonte e o destino do trabalho de transferência. Certifique-se de especificar seu bucket do Amazon S3 como origem e seu AWS IoT TwinMaker espaço de trabalho como destino. 

   Veja a seguir um exemplo de corpo de solicitação:

   ```
   {
       "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"
           }
       }
   }
   ```

   Registre o nome do arquivo que você deu ao corpo da solicitação. Você precisará dele na próxima etapa. Neste exemplo, o corpo da solicitação é nomeado`createMetadataTransferJobImport.json`.

1. Execute o seguinte comando CLI para invocar `CreateMetadataTransferJob` (substitua o nome do arquivo input-json pelo nome que você deu ao corpo da solicitação):

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

   Isso cria metadataTransferJob e inicia o processo de transferência dos recursos selecionados.

**Exportar dados AWS IoT TwinMaker para o Amazon S3**

1. Crie um corpo de solicitação JSON com os filtros apropriados para escolher os recursos que você deseja exportar. Para este exemplo, usamos:

   ```
   {
       "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"
           }
       }
   }
   ```

   A `filters` matriz permite especificar quais recursos serão exportados. Neste exemplo, filtramos por`entity`, `componentType` e.

   Certifique-se de especificar seu AWS IoT TwinMaker espaço de trabalho como origem e seu bucket do Amazon S3 como destino do trabalho de transferência de metadados.

   Salve o corpo da solicitação e registre o nome do arquivo. Você precisará dele na próxima etapa. Neste exemplo, nomeamos nosso corpo de solicitação`createMetadataTransferJobExport.json`.

1. Execute o seguinte comando CLI para invocar `CreateMetadataTransferJob` (substitua o nome do arquivo input-json pelo nome que você deu ao corpo da solicitação):

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

   Isso cria metadataTransferJob e inicia o processo de transferência dos recursos selecionados.

Para verificar ou atualizar o status de um trabalho de transferência, use os seguintes comandos:
+ Para cancelar um trabalho, use a ação [ CancelMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CancelMetadataTransferJob.html)da API. Quando você chama CancelMetadataTransferJob, a API só cancela uma execução metadataTransferJob, e quaisquer recursos já exportados ou importados não são afetados por essa chamada de API.
+ Para recuperar informações sobre um trabalho específico, use a ação da [ GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html)API.

  Ou você pode chamar um trabalho GetMetadataTransferJob de transferência existente com o seguinte comando da CLI:

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

  Se você chamar GetMetadataTransferJob um trabalho de AWS IoT TwinMaker importação ou exportação inexistente, receberá uma resposta `ResourceNotFoundException` de erro.
+ Para listar os trabalhos atuais, use a ação [ ListMetadataTransferJobs](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobs.html)da API.

  Aqui está um exemplo de CLI que chama ListMetadataTransferJobs com as as DestinationType e AWS IoT TwinMaker as SourceType: `s3`

  ```
  aws iottwinmaker list-metadata-transfer-jobs --destination-type iottwinmaker --source-type s3
  ```
**nota**  
Você pode alterar os valores dos parâmetros SourceType e DestinationType para que correspondam à origem e ao destino do seu trabalho de importação ou exportação.

Para obter mais exemplos de comandos da CLI que invocam essas ações de API, consulte. [AWS IoT TwinMaker metadataTransferJob exemplos](#tm-import-export-cli-examples)

Se você encontrar algum erro durante o trabalho de transferência, consulte[Tratamento de erros](#tm-import-export-error-handling).

## Tratamento de erros
<a name="tm-import-export-error-handling"></a>

Depois de criar e executar um trabalho de transferência, você pode ligar GetMetadataTransferJob para diagnosticar qualquer erro que tenha ocorrido:

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

Depois de ver o estado do trabalho para o qual se `COMPLETED` candidata, você pode verificar os resultados do trabalho. GetMetadataTransferJob retorna um objeto chamado [https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html)que contém os seguintes campos:
+ **FailedCount:** indica o número de recursos que falharam durante o processo de transferência.
+ **skippedCount:** indica o número de recursos que foram ignorados durante o processo de transferência.
+ **SucceededCount:** indica o número de recursos que foram bem-sucedidos durante o processo de transferência.
+ **TotalCount:** indica a contagem total de recursos envolvidos no processo de transferência.

Além disso, é retornado um elemento reportUrl que contém uma URL pré-assinada. Se sua tarefa de transferência tiver erros que você deseja investigar mais detalhadamente, você pode baixar um relatório completo de erros usando esse URL.

## Importar modelos de metadados
<a name="tm-import-metadata-templates"></a>

Você pode importar vários componentes, ComponentTypes ou entidades com uma única operação de importação em massa. Os exemplos desta seção mostram como fazer isso.

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

Use o seguinte formato de modelo para um trabalho que importa entidades:

```
{
  "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 ]

Use o seguinte formato de modelo para um trabalho que 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 ]

Use o seguinte formato de modelo para uma tarefa que importa componentes:

```
{
  "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 exemplos
<a name="tm-import-export-cli-examples"></a>

Use os comandos a seguir para gerenciar suas transferências de metadados:
+ [ CreateMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CreateMetadataTransferJob.html)Ação da API.

  Exemplo de comando CLI:

  ```
  aws iottwinmaker create-metadata-transfer-job --region us-east-1 \
  --cli-input-json file://yourTransferFileName.json
  ```
+ Para cancelar um trabalho, use a ação [ CancelMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_CancelMetadataTransferJob.html)da API.

  Exemplo de comando CLI:

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

  Quando você liga CancelMetadataTransferJob, ele cancela apenas um trabalho específico de transferência de metadados, e os recursos já exportados ou importados não são afetados.
+ Para recuperar informações sobre um trabalho específico, use a ação da [ GetMetadataTransferJob](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_GetMetadataTransferJob.html)API.

  Exemplo de comando CLI:

  ```
  aws iottwinmaker get-metadata-transfer-job \
  --metadata-transfer-job-id your_metadata_transfer_job_id \
  --region us-east-1 \
  ```
+ Para listar os trabalhos atuais, use a ação [ ListMetadataTransferJobs](https://docs.aws.amazon.com//iot-twinmaker/latest/apireference/API_ListMetadataTransferJobs.html)da API.

  Você pode filtrar os resultados retornados ListMetadataTransferJobs usando um arquivo JSON. Veja o procedimento a seguir usando a CLI:

  1. Crie um arquivo JSON de entrada CLI para especificar os filtros que você deseja usar:

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

     Salve-o e registre o nome do arquivo, você precisará dele ao inserir o comando CLI.

  1. Use o arquivo JSON como argumento para o seguinte comando da CLI:

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