

# Solicitação de importação de tabela no DynamoDB
<a name="S3DataImport.Requesting"></a>

A importação do DynamoDB permite que você importe dados de um bucket do Amazon S3 para uma nova tabela do DynamoDB. Você pode solicitar uma importação de tabela do [console do DynamoDB](https://console.aws.amazon.com/), da [CLI](AccessingDynamoDB.md#Tools.CLI), do [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html) ou da [API do DynamoDB.](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html)

Se desejar usar a AWS CLI, você precisará configurá-la primeiro. Para obter mais informações, consulte [Acessar o DynamoDB](AccessingDynamoDB.md).

**nota**  
O recurso de importação de tabela interage com vários serviços da AWS, como o Amazon S3 e o CloudWatch. Antes de iniciar uma importação, verifique se o usuário ou o perfil que invoca as APIs de importação tem permissões para todos os serviços e recursos dos quais o recurso depende. 
 Não modifique os objetos do Amazon S3 enquanto a importação estiver em andamento, pois isso poderá fazer com que a operação falhe ou seja cancelada.
Para obter mais informações sobre erros e solução de problemas, consulte . [Importar cotas e validação de formato](S3DataImport.Validation.md)

**Topics**
+ [

## Configurar permissões do IAM
](#DataImport.Requesting.Permissions)
+ [

## Solicitar uma importação usando o Console de gerenciamento da AWS
](#S3DataImport.Requesting.Console)
+ [

## Obter detalhes sobre importações anteriores na Console de gerenciamento da AWS
](#S3DataImport.Requesting.Console.Details)
+ [

## Solicitar uma importação usando a AWS CLI
](#S3DataImport.Requesting.CLI)
+ [

## Obter detalhes sobre importações anteriores na AWS CLI
](#S3DataImport.Requesting.CLI.Details)

## Configurar permissões do IAM
<a name="DataImport.Requesting.Permissions"></a>

Você pode importar dados de qualquer bucket do Amazon S3 que você tenha permissão para ler. O bucket de destino não precisa estar na mesma região ou ter o mesmo proprietário que a tabela de origem. Seu AWS Identity and Access Management (IAM) deve incluir as ações relevantes no bucket do Amazon S3 de origem e as permissões necessárias do CloudWatch para fornecer informações de depuração. Um exemplo de política é mostrado abaixo.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDynamoDBImportAction",
      "Effect": "Allow",
      "Action": [
        "dynamodb:ImportTable",
        "dynamodb:DescribeImport"
      ],
      "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table*"
    },
    {
      "Sid": "AllowS3Access",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::your-bucket/*",
        "arn:aws:s3:::your-bucket"
      ]
    },
    {
      "Sid": "AllowCloudwatchAccess",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:PutLogEvents",
        "logs:PutRetentionPolicy"
      ],
      "Resource": "arn:aws:logs:us-east-1:111122223333:log-group/aws-dynamodb/*"
    },
    {
      "Sid": "AllowDynamoDBListImports",
      "Effect": "Allow",
      "Action": "dynamodb:ListImports",
      "Resource": "*"
    }
  ]
}
```

------

### Permissões do Amazon S3
<a name="DataImport.Requesting.Permissions.s3"></a>

Ao iniciar uma importação em uma origem de bucket do Amazon S3 que pertence a outra conta, verifique se o perfil ou o usuário tem acesso aos objetos do Amazon S3. Você pode verificar isso executando um comando `GetObject` do Amazon S3 e usando as credenciais. Ao usar a API, o parâmetro do proprietário do bucket do Amazon S3 é definido por padrão como o ID da conta do usuário atual. Para importações entre contas, verifique se esse parâmetro está preenchido corretamente com o ID da conta do proprietário do bucket. O código a seguir é um exemplo de política de bucket do Amazon S3 na conta de origem.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {"Sid": "ExampleStatement",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

### AWS Key Management Service
<a name="DataImport.Requesting.Permissions.kms"></a>

Ao criar a tabela para importação, se você selecionar uma chave de criptografia em repouso que não pertença ao DynamoDB, forneça as permissões do AWS KMS necessárias para operar uma tabela do DynamoDB criptografada com chaves gerenciadas pelo cliente. Para obter mais informações, consulte [Autorizar o uso da chave do AWS KMS](encryption.usagenotes.html#dynamodb-kms-authz). Se os objetos do Amazon S3 estiverem criptografados com criptografia do lado do servidor do KMS (SSE-KMS), verifique se o perfil ou o usuário que está iniciando a importação tem acesso para descriptografar usando a chave do AWS KMS. Esse recurso não oferece suporte a objetos do Amazon S3 criptografados com chaves de criptografia fornecidas pelo cliente (SSE-C). 

### Permissões do CloudWatch
<a name="DataImport.Requesting.Permissions.cw"></a>

A função ou o usuário que está iniciando a importação precisará de permissões de criação e de gerenciamento para o grupo de logs e os fluxos de log associados à importação. 

## Solicitar uma importação usando o Console de gerenciamento da AWS
<a name="S3DataImport.Requesting.Console"></a>

O exemplo a seguir demonstra como usar o console do DynamoDB para importar dados existentes para uma nova tabela chamada `MusicCollection`.

**Como solicitar uma importação de tabela**

1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/).

1. No painel de navegação, no lado esquerdo do console, escolha **Import from S3** (Importar do S3).

1. Na página exibida, selecione **Import from S3** (Importar do S\$1).

1. Escolha **Import from S3** (Importar do S3).

1. Em **URL do S3 de origem**, insira o URL de origem do Amazon S3.

   Se você for proprietário do bucket de origem, escolha **Procurar S3** para procurá-lo. Como alternativa, insira o URL do bucket no seguinte formato: `s3://bucket/prefix`. O `prefix` é um prefixo das chaves do Amazon S3. É o nome do objeto do Amazon S3 a ser importado ou o prefixo de chave compartilhado por todos os objetos do Amazon S3 que você deseja importar.
**nota**  
Não é possível usar o mesmo prefixo das solicitações de exportação do DynamoDB. O recurso de exportação cria uma estrutura de pastas e arquivos de manifesto para todas as exportações. Se você usar o mesmo caminho do Amazon S3, isso gerará um erro.   
Em vez disso, aponte a importação para a pasta, a qual contém dados dessa exportação específica. O formato do caminho correto nesse caso será `s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/data/`, em que `XXXXXXXX-XXXXXX` é o ID de exportação. É possível encontrar o ID no ARN de exportação, o qual tem o seguinte formato: `arn:aws:dynamodb:<Region>:<AccountID>:table/<TableName>/export/<XXXXXXXX-XXXXXX>`. Por exemplo, `arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4`.

1. Especifique se você é o **S3 bucket owner** (Proprietário do bucket do S3). Se o bucket de origem pertencer a outra conta, selecione **Uma conta diferente da AWS**. Depois, insira o ID da conta do proprietário do bucket.

1. Em **Compactação de arquivos de importação**, selecione **Sem compactação**, **GZIP** ou **ZSTD** conforme apropriado.

1. Selecione o formato de arquivo de importação pertinente. As opções são **DynamoDB JSON**, **Amazon Ion** ou **CSV**. Se você selecionar **CSV**, terá duas opções adicionais: **CSV header** (Cabeçalho CSV) e **CSV delimiter character** (Caractere delimitador CSV).

   Em **CSV header** (Cabeçalho CSV), escolha se o cabeçalho será retirado da primeira linha do arquivo ou será personalizado. Se você selecionar **Customize your headers** (Personalize seus cabeçalhos), poderá especificar os valores de cabeçalho com os quais deseja importar. Os cabeçalhos CSV especificados por esse método diferenciam maiúsculas de minúsculas e devem conter as chaves da tabela de destino. 

   Em **CSV delimiter character** (Caractere delimitador CSV), você define o caracteres que separará os itens. A vírgula é selecionada por padrão. Se você selecionar **Custom delimiter character** (Caractere delimitador personalizado), o delimitador deverá corresponder ao padrão regex: `[,;:|\t ]`.

1. Selecione a opção **Next** (Próximo) e as opções para a nova tabela que será criada para armazenar os dados. 
**nota**  
A chave primária e a chave de classificação devem corresponder aos atributos no arquivo. Do contrário, a importação falhará. Os atributos diferenciam maiúsculas de minúsculas.

1. Selecione novamente **Next** (Próximo) para revisar suas opções de importação e, em seguida, clique em **Import** (Importar) para iniciar a tarefa de importação. Você verá primeiro sua nova tabela, listada em “Tables” (Tabelas) com o status “Creating” (Criando). No momento, a tabela não está acessível.

1. Quando a importação for concluída, o status será exibido como “Active” (Ativo) e você poderá começar a usar a tabela.

## Obter detalhes sobre importações anteriores na Console de gerenciamento da AWS
<a name="S3DataImport.Requesting.Console.Details"></a>

Para encontrar informações sobre tarefas de importação executadas anteriormente, clique em **Import from S3** (Importar do S3) na barra lateral de navegação e selecione a guia **Imports** (Importações). O painel de importação contém uma lista de todas as importações que você criou nos últimos 90 dias. Se você selecionar o ARN de uma tarefa listada na guia Imports (Importações), recuperará informações sobre essa importação, incluindo as configurações avançadas escolhidas.

## Solicitar uma importação usando a AWS CLI
<a name="S3DataImport.Requesting.CLI"></a>

O exemplo a seguir importa dados formatados em CSV de um bucket do S3 chamado bucket com um prefixo de prefixo para uma nova tabela chamada target-table.

```
aws dynamodb import-table --s3-bucket-source S3Bucket=bucket,S3KeyPrefix=prefix \ 
            --input-format CSV --table-creation-parameters '{"TableName":"target-table","KeySchema":  \
            [{"AttributeName":"hk","KeyType":"HASH"}],"AttributeDefinitions":[{"AttributeName":"hk","AttributeType":"S"}],"BillingMode":"PAY_PER_REQUEST"}' \ 
            --input-format-options '{"Csv": {"HeaderList": ["hk", "title", "artist", "year_of_release"], "Delimiter": ";"}}'
```

**nota**  
Se você optar por criptografar sua importação usando uma chave protegida pelo AWS Key Management Service (AWS KMS), a chave deverá estar na mesma região que o bucket do Amazon S3 de destino.

## Obter detalhes sobre importações anteriores na AWS CLI
<a name="S3DataImport.Requesting.CLI.Details"></a>

Você pode encontrar informações sobre tarefas de importação executadas no passado usando o comando `list-imports`. Esse comando retorna uma lista de todas as importações que você criou nos últimos 90 dias. Observe que, embora os metadados da tarefa de importação expirem após 90 dias e os trabalhos mais antigos não sejam mais encontrados nessa lista, o DynamoDB não exclui nenhum dos objetos no bucket do Amazon S3.

```
aws dynamodb list-imports
```

Para recuperar informações detalhadas sobre uma tarefa de importação específica, incluindo quaisquer configurações avançadas, use o comando `describe-import`.

```
aws dynamodb describe-import \
    --import-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/exp
```