# Configurar o armazenamento de blobs

Os arquivos do GitLab precisam ser armazenados temporariamente para que GitHub possam lê-los.

Para a maioria dos clientes, recomendamos armazenar arquivos com GitHub-owned blob storage. Esse é o caminho mais simples e não requer nenhuma configuração extra.

No entanto, talvez você queira configurar o armazenamento com um provedor externo se tiver requisitos de firewall ou precisar reter arquivos após a conclusão da migração.

## Escolhendo onde preparar arquivos

O GL2GH extension gitlab exporta cada projeto do GitLab para um arquivo morto e, em seguida, carrega o arquivo morto no armazenamento de blobs que GitHub pode ser lido. Você escolhe o back-end de armazenamento ao executar uma migração.

| Opção de armazenamento | Como selecioná-lo | Observações |
| ---------------------- | ----------------- | ----------- |

GitHub-owned blob storage (recomendado) | `--use-github-storage` | Nenhuma configuração é necessária.
GitHub exclui o arquivo morto automaticamente após uma migração bem-sucedida ou sete dias após uma migração com falha.
AWS S3 |
`--aws-bucket-name` (com as `AWS_REGION`variáveis , `AWS_ACCESS_KEY_ID`e `AWS_SECRET_ACCESS_KEY` ambiente e, opcionalmente `AWS_SESSION_TOKEN`) | Você tem o bucket e seu ciclo de vida.
GitHub não exclui arquivos do armazenamento.
Armazenamento de Blobs do Azure |
`AZURE_STORAGE_CONNECTION_STRING` variável de ambiente (para um único `migrate-repo` comando, você pode usar `--azure-storage-connection-string`) | Há suporte apenas para cadeias de conexão de chave de acesso de conta de armazenamento (não SAS).
GitHub não exclui arquivos do armazenamento.

## Configurando o armazenamento de blobs

Se você estiver usando GitHub-owned blob storage, não precisará configurar nada. Você usará o `--use-github-storage` sinalizador para selecionar esse método com a CLI. No entanto, talvez você queira definir a `GITHUB_OWNED_STORAGE_MULTIPART_MEBIBYTES` variável (padrão 100 MiB, mínimo de 5 MiB) para um número menor se você tiver uma conexão lenta ou com proxie.

Se você estiver usando o armazenamento de blobs externo, precisará configurar isso.

### Como configurar um bucket de armazenamento da AWS S3

Na AWS, configure um bucket da S3. Para obter mais informações, confira [Como criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) na documentação da AWS.

Você também precisará de uma chave de acesso da AWS e uma chave secreta com as seguintes permissões:

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::github-migration-bucket",
                "arn:aws:s3:::github-migration-bucket/*"
            ]
        }
    ]
}
```

> \[!NOTE]
> O GitHub Enterprise Importer não exclui o arquivo da AWS após a conclusão da migração. Para reduzir os custos de armazenamento, recomendamos configurar a exclusão automática do arquivo após um período. Para obter mais informações, confira [Como definir a configuração do ciclo de vida em um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html) na documentação da AWS.

Quando estiver pronto para executar a migração, você precisará fornecer suas credenciais da AWS para a GitHub CLI: região, chave de acesso, chave secreta e token de sessão (se necessário). Você pode transmiti-los como argumentos ou definir variáveis de ambiente chamadas `AWS_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` e `AWS_SESSION_TOKEN`.

Você também precisará transmitir o nome do bucket do S3 usando o argumento `--aws-bucket-name`.

### Como configurar uma conta de armazenamento do Armazenamento de Blobs do Azure

No Azure, crie uma conta de armazenamento e anote a cadeia de conexão. Para obter mais informações, confira [Gerenciar chaves de acesso da conta de armazenamento](https://learn.microsoft.com/en-gb/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#regenerate-access-keys) no Microsoft Docs.

> \[!NOTE]
> O GitHub Enterprise Importer não exclui o arquivo do Armazenamento de Blobs do Azure após a conclusão da migração. Para reduzir os custos de armazenamento, recomendamos configurar a exclusão automática do arquivo após um período. Para obter mais informações, confira [Otimizar os custos gerenciando automaticamente o ciclo de vida dos dados](https://learn.microsoft.com/en-us/azure/storage/blobs/lifecycle-management-overview) no Microsoft Docs.

Quando estiver pronto para executar a migração, transmita a cadeia de conexão para a GitHub CLI como um argumento ou usando uma variável de ambiente chamada `AZURE_STORAGE_CONNECTION_STRING`.

### Como permitir o acesso à rede

Se você configurou regras de firewall na sua conta de armazenamento, verifique se permitiu o acesso aos intervalos de IP para o destino de migração. Consulte [Gerenciar o acesso para uma migração do GitLab para o GitHub](/pt/migrations/using-github-enterprise-importer/migrate-from-gitlab/manage-access#configure-ip-allow-lists-on-github).