# BLOB ストレージを構成する

GitLab からアーカイブを読み取ることができるように、一時的に保存 GitHub 必要があります。

ほとんどのお客様には、 GitHub-owned blob storageを使用してアーカイブを保存することをお勧めします。 これは最も簡単なパスであり、追加の構成は必要ありません。

ただし、ファイアウォール要件がある場合や、移行が完了した後にアーカイブを保持する必要がある場合は、外部プロバイダーでストレージを構成できます。

## アーカイブをステージングする場所の選択

GL2GH extensionは、各 GitLab プロジェクトをアーカイブにエクスポートし、そのアーカイブを読み取り可能な BLOB ストレージGitHubアップロードします。 移行を実行するときに、ストレージ バックエンドを選択します。

| ストレージオプション | それを選択する方法 | メモ |
| ---------- | --------- | -- |

GitHub-owned blob storage (推奨) | `--use-github-storage` | セットアップは必要ありません。
GitHub は、移行が成功した後、または移行が失敗してから 7 日後にアーカイブを自動的に削除します。
AWS S3 |
`--aws-bucket-name` ( `AWS_REGION`、 `AWS_ACCESS_KEY_ID`、および `AWS_SECRET_ACCESS_KEY` 環境変数を使用し、必要に応じて `AWS_SESSION_TOKEN`) | バケットとそのライフサイクルを所有している。
GitHub は、ストレージからアーカイブを削除しません。
Azure Blob Storage |
`AZURE_STORAGE_CONNECTION_STRING` 環境変数 (単一の `migrate-repo` コマンドの場合は、代わりに `--azure-storage-connection-string` を使用できます) | ストレージ アカウントのアクセス キー接続文字列のみがサポートされています (SAS はサポートされていません)。
GitHub は、ストレージからアーカイブを削除しません。

## BLOB ストレージの構成

GitHub-owned blob storageを使用している場合は、何も構成する必要はありません。 cli でこの方法を選択するには、 `--use-github-storage` フラグを使用します。 ただし、低速接続またはプロキシ接続がある場合は、 `GITHUB_OWNED_STORAGE_MULTIPART_MEBIBYTES` 変数 (既定では 100 MiB、最小 5 MiB) を小さい値に設定できます。

外部 BLOB ストレージを使用している場合は、これを設定する必要があります。

### AWS S3 ストレージ バケットの設定

AWS で、S3 バケットを設定します。 詳しくは、AWS のドキュメント「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」をご覧ください。

次のアクセス許可を持つ AWS アクセス キーと秘密鍵も必要です。

```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]
> GitHub Enterprise Importer は、移行の完了後に AWS からアーカイブを削除しません。 ストレージ コストを減らすため、一定期間後にアーカイブが自動削除されるよう構成することをお勧めします。 詳しくは、AWS のドキュメントの「[バケットのライフサイクル設定の指定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)」をご覧ください。

移行を実行する準備ができたら、リージョン、アクセス キー、シークレット キー、セッション トークンなどの AWS 資格情報を GitHub CLI に提供します (必要な場合)。 引数として渡すことも、`AWS_REGION`、`AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`AWS_SESSION_TOKEN` という環境変数を設定することもできます。

また、`--aws-bucket-name` 引数を使って S3 バケットの名前で渡す必要があります。

### Azure Blob Storage アカウントの設定

Azure でストレージ アカウントを作成し、接続文字列を記録しておきます。 詳しくは、Microsoft Docs の「[ストレージ アカウント アクセス キーを管理する](https://learn.microsoft.com/en-gb/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#regenerate-access-keys)」をご覧ください。

> \[!NOTE]
> GitHub Enterprise Importer は、移行の完了後に Azure Blob Storage からアーカイブを削除しません。 ストレージ コストを減らすため、一定期間後にアーカイブが自動削除されるよう構成することをお勧めします。 詳しくは、Microsoft Docs の「[データ ライフサイクルを自動管理してコストを最適化する](https://learn.microsoft.com/en-us/azure/storage/blobs/lifecycle-management-overview)」をご覧ください。

移行を実行する準備ができたら、接続文字列を引数として GitHub CLI に渡すか、`AZURE_STORAGE_CONNECTION_STRING` という名前の環境変数を使って渡すことができます。

### ネットワーク アクセスの許可

ストレージ アカウントでファイアウォール規則を構成している場合は、移行先の IP 範囲へのアクセスを許可していることを確認します。 「[GitLab から GitHub への移行のアクセスを管理する](/ja/migrations/using-github-enterprise-importer/migrate-from-gitlab/manage-access#configure-ip-allow-lists-on-github)」を参照してください。