Azure Storage Mover を使用して Google Cloud Storage から Azure Blob Storage にデータを移行する

Azure Storage Mover の S3 (Simple Storage Service) ソース移行機能は、S3 互換の Google Cloud Storage (GCS) オブジェクト ストアからAzure Blob Storageにデータを安全に転送します。

Azure Arcマルチクラウド コネクタを使用する AWS S3 (Amazon Simple Storage Services) の移行とは異なり、S3 互換のソース移行では簡略化されたアプローチが使用されます。 ソース エンドポイント URL と HMAC (ハッシュベースのメッセージ認証コード) 資格情報をAzure Key Vaultに安全に格納する場合、マルチクラウド コネクタや自動ソース検出は必要ありません。

この記事では、GCS S3 互換ソースから Azure Blob Storage にデータを移行するように Storage Mover を構成する完全なプロセスについて説明します。 このプロセスは、Azure Key Vaultへのソース資格情報の格納、ソースエンドポイントとターゲット エンドポイントの構成、移行ジョブの作成と実行で構成されます。

前提条件

開始する前に、次の要件が満たされていることを確認します。

  • Azure Storage Mover リソースを作成および管理するアクセス許可がある、アクティブな Azure サブスクリプション。
  • 移行元の GCS バケットにアクセスできる Google Cloud アカウント。
  • 宛先として使用するAzure Storage アカウント。
  • Azure サブスクリプションにデプロイされた Storage Mover リソース。
  • ソース HMAC 資格情報を安全に格納するためのAzure Key Vault。
  • GCS バケット用に生成された HMAC キー。 GCS の HMAC キーの生成を参照してください。
  • ソース データにプライベート ネットワーク経由でのみアクセスできる場合は、Azureでのプライベート接続のセットアップ。

Limits

Azure Storage Mover の S3 互換 GCS ソース移行機能には、次の制限があります。

  • 各移行ジョブでは、5 億個のオブジェクトの転送がサポートされています。
  • サブスクリプションごとに最大 10 個の同時実行ジョブがサポートされます。 10 を超える実行が必要な場合は、サポート 要求を作成します。
  • S3 互換ソースへの HTTPS アクセスのみがサポートされています。
  • S3 互換ソースは、AWS Signature Version 4 (SigV4) スタイルの認証をサポートしている必要があります。

知っておくべきこと

移行を開始する前に、GCS S3 と互換性のあるソース移行に固有の次の考慮事項を確認してください。

認証方法

GCS S3 互換アクセスでは、GCS サービス アカウントまたはユーザー アカウントに関連付けられている HMAC キー (アクセス キー ID とシークレット キー) が使用されます。 これらのキーを使用すると、GCS は AWS Signature Version 4 認証プロセスを使用して標準の S3 API 要求に応答できます。

GCS の HMAC キーを生成する

S3 互換インターフェイスを使用して GCS バケットにアクセスするには、Google Cloud コンソールで HMAC キーを生成する必要があります。

  1. Google Cloud コンソールに移動します。

  2. Cloud Storage>Settings>Interoperability タブに移動します。

  3. まだ行っていない場合は、[ 相互運用性アクセス用に既定のプロジェクトを設定する] を選択します。

  4. [ サービス アカウントのアクセス キー ] セクションで、使用するサービス アカウントを選択し、[ キーの作成] を選択します。

  5. アクセス キーシークレット キーの値をメモします。 これらの値は、次の手順で必要になります。

    Important

    これらのキーを安全に格納します。 シークレット キーは 1 回だけ表示されます。 キーは初期作成時にのみ表示され、後で取得することはできません。

  6. ジョブの完了と最適なセキュリティを確保するために、HMAC 資格情報の有効期間が 1 週間以上であることを確認します。

ソース資格情報をAzure Key Vaultに格納する

GCS バケットの HMAC キーを生成した後、Storage Mover サービスによる安全なアクセスのために、シークレットとしてAzure Key Vaultに格納します。

  1. Azure ポータルを使用して、Storage Mover リソースと同じサブスクリプション内にあるAzure Key Vaultに移動します。

  2. 左側のナビゲーションで、[ オブジェクト] メニューを展開し、[シークレット] を選択 します。 次に、[ 生成/インポート] を選択します。

    左側のナビゲーションのKey Vault シークレット メニュー項目の場所を強調表示する画面キャプチャ。

    Key Vaultの [シークレットの生成] メニュー項目の場所を強調表示する画面キャプチャ。

  3. アクセス キーのシークレットを作成します。

    • 名前: わかりやすい名前を指定します (例: gcs-access-key)。
    • シークレット値: 前のセクションの HMAC アクセス キーの値を貼り付けます。
    • を選択してを作成します。

    [シークレットの作成] ウィンドウKey Vault関連するフィールドを表示してアクセス キーを保存する画面キャプチャ。

  4. 秘密鍵の 2 つ目の シークレットを作成します。

    • 名前: わかりやすい名前を指定します (例: gcs-secret-key)。
    • シークレット値: 前のセクションの HMAC 秘密鍵の値を貼り付けます。
    • を選択してを作成します。

    [シークレットの作成] ウィンドウKey Vault関連するフィールドを表示して秘密鍵を保存する画面キャプチャ。

  5. 各シークレットの完全な シークレット識別子 URI をメモします。 ソース エンドポイントを作成するときは、これらの識別子が必要です。

Note

最適なセキュリティを確保するために、HMAC シークレットを含むKey Vaultのパブリック アクセスを無効にし、信頼されたサービスとして Storage Mover を追加することをお勧めします。

詳細については、「Azure portalを使用してKey Vaultからシークレットを設定して取得する」を参照してください。


ソースエンドポイントとターゲットエンドポイントを構成する

Azure Key Vault内に HMAC 資格情報を格納したら、次の手順として、移行のソースエンドポイントとターゲット エンドポイントを作成します。

Azure Storage Mover サービスのコンテキストでは、エンドポイントは、ソースまたはターゲットの場所とその他の関連情報へのパスを含むリソースです。 Storage Mover ジョブ定義では、エンドポイントを使用してコピー操作のソースとターゲットの場所を定義します。

GCS S3 と互換性のあるソース エンドポイントを構成する

ソース エンドポイントは、データの移行元の場所を識別します。 ソース エンドポイントは、移行プロジェクト内で指定されたデータの配信元を定義するために使用されます。

次の手順では、ソース エンドポイントを作成するプロセスについて説明します。

  1. Azure portal内の Storage Mover インスタンスに移動します。

  2. 左側のナビゲーション内の [リソース管理 ] グループで、[ ストレージ エンドポイント] を選択します。 [ ソース エンドポイント ] タブを選択し、[ エンドポイントの作成 ] を選択して [ ソース エンドポイントの作成 ] ウィンドウを開きます。

  3. [ソース エンドポイントの作成] ウィンドウで、次の 操作を行 います。

    • [移行の種類] として [マルチクラウド移行] を選択します。
    • ソースの種類として GCS オブジェクト ストレージ - S3 を選択します。
    • ソース URL: GCS バケットへの完全な HTTPS URL を S3 互換形式で入力します。 オブジェクトのサブセットのみを移行するには、 https://storage.googleapis.com/<bucket-name>/ または https://storage.googleapis.com/<bucket-name>/<prefix>/ の形式を使用します。
    • Access Key Vault シークレット URI: HMAC アクセス キーを含むシークレットの完全な URI を入力します
    • シークレット Key Vault シークレット URI: HMAC シークレット キーを含むシークレットの完全な URI を入力します
    • 必要に応じて、エンドポイントの 説明 を指定します。
  4. 選択内容が正しいことを確認し、[ 作成 ] を選択してエンドポイントを作成します。

    Storage Mover の [ソース エンドポイントの作成] ウィンドウに関連するフィールドを表示する画面キャプチャ。

    Note

    ソース エンドポイントが作成されると、システム割り当てマネージド ID が自動的にプロビジョニングされます。 この ID では、移行中に HMAC 資格情報を取得するために、Azure Key Vaultに対する Key Vault Secrets User Role-Based Access Control (RBAC) ロール アクセスが必要です。 ポータルは、このロールを自動的に割り当てようとします。 アクセス許可が不十分なため割り当てが失敗した場合は、手動で割り当てるか、Azure管理者に連絡してロールを手動で付与してください。

Azure Blob Storage ターゲット エンドポイントを構成する

  1. 左側のナビゲーション内の [リソース管理 ] グループで、[ ストレージ エンドポイント] を選択します。 [ ターゲット エンドポイント ] タブを選択し、[ エンドポイントの追加 ] を選択して [ ターゲット エンドポイントの作成 ] ウィンドウを開きます。

  2. [ターゲット エンドポイントの作成] ウィンドウで、次の 操作を行 います。

    • それぞれのドロップダウン リストから サブスクリプションストレージ アカウント を選択します。
    • [ターゲットの種類] フィールドから BLOB コンテナーを選択します。
    • ドロップダウン リストから、移行先の BLOB コンテナー を選択します。
    • 必要に応じて、エンドポイントの 説明 を指定します。
  3. 選択内容が正しいことを確認し、[ 作成 ] を選択してエンドポイントを作成します。

RBAC ロールを割り当てる

Azure ポータルを使用してエンドポイントを作成すると、必要な RBAC ロールがシステム割り当てマネージド ID に自動的に割り当てられます。

エンドポイント 役割 ターゲット リソース
ソース エンドポイント Key Vault 秘密ユーザー お客様の Azure Key Vault
ターゲット エンドポイント Storage Blob データ共同作成者 お使いの Azure Blob コンテナー

自動割り当てが失敗した場合 (アクセス許可が不十分な場合など)、これらのロールを手動で割り当てるか、Azure管理者に問い合わせる必要があります。

移行プロジェクトとジョブ定義を作成する

移行のソース エンドポイントとターゲット エンドポイントを定義した後、次の手順は Storage Mover 移行プロジェクトとジョブ定義を作成することです。

移行プロジェクトを使用すると、大規模な移行をより小さく管理しやすい単位に整理できます。 ジョブ定義は、特定のコピー操作セットのリソースと移行オプションを記述します。 これらのリソースには、たとえば、ソース エンドポイントとターゲット エンドポイント、適用する移行設定が含まれます。

このセクションの手順に従って、移行プロジェクトを作成し、移行ジョブを実行します。

プロジェクトの作成

  1. Storage Mover インスタンスの [移行の計画と実行] の下にある [プロジェクト] セクションに移動し、[プロジェクト] タブで [プロジェクトの作成] を選択します。

  2. 次のフィールドの値を指定します。

    • 名前: 移行プロジェクトのわかりやすい名前。
    • プロジェクトの説明: プロジェクトの便利な説明。
  3. [作成] を選択してプロジェクトを作成します。

    Storage Mover の [プロジェクトの作成] ウィンドウに関連するフィールドを表示する画面キャプチャ。

ジョブ定義を作成する

表示されたプロジェクトを選択し、[ ジョブの作成] を選択します。 ジョブ作成ウィザードには、[基本]、[スケジュール]、[設定]、[確認] の 4 つのタブがあります。

[基本] タブ

  1. 次のフィールドの値を指定します。

    フィールド 価値
    移行の種類 [マルチクラウド移行] を選択する
    ソースの種類 GCS オブジェクト ストレージの選択 - S3 (プレビュー)
    S3 バケットの種類 [パブリック] または [プライベート] を選択する (プレビュー)
    名前 ジョブに付けるわかりやすい名前
    Description (省略可能)ジョブの説明 (最大 1,024 文字)

    Storage Mover の [プロジェクトの作成] ウィンドウの [基本] タブに関連するフィールドを表示する画面キャプチャ。

  2. [ ソース ] セクションで、次の手順を実行します。

    • [ソース エンドポイント]: [ ソース エンドポイントの追加] を選択して新しいエンドポイントを作成するか、既存の GCS S3 互換のソース エンドポイントを選択します。
    • ソース サブパス: (省略可能) バケットの一部のみを移行するサブフォルダー パスを指定します。 空欄のままにすると、ジョブはバケットのルートから開始されます。
    • 表示されている 完全なパス が正しいことを確認します。
  3. [ターゲット] セクションで、次の手順を実行します。

    • ターゲット エンドポイント: [ターゲット エンドポイントの追加] を選択して新しいエンドポイントを作成するか、既存のAzure Blob Storageターゲット エンドポイントを選択します。
    • ターゲット サブパス: (省略可能) ターゲット サブフォルダーを指定します。 空のままにすると、すべてのコンテンツがコンテナー ルートに移行されます。 一意のサブパスによって新しいサブフォルダーが作成されます。

    [基本] タブ内の [Storage Mover 'プロジェクトの作成

  4. S3 バケットの種類に [ プライベート ] を選択した場合は、[ プライベート接続 ] セクションが表示されます。

    • 承認されたプライベート接続をこのジョブに関連付けるには、[ 追加] を 選択します。
    • 承認済み状態の接続のみを追加できます。
    • 負荷分散のために複数のプライベート接続を関連付けることができます。

    Note

    プライベート バケットにはプライベート接続が必要です。 プライベート バケットの種類でジョブを開始するには、少なくとも 1 つの承認済みプライベート接続が必要です。 セットアップ手順については、 GCS のプライベート ネットワーク接続 を参照してください。

  5. [次へ] を選択して続行します。

スケジュール タブ

移行を実行するタイミングを選択します。

オプション 説明
スケジュールなし 移行を手動で開始する
1 回限りスケジュール 特定の時刻に 1 回移行を実行する
定期的なスケジュール 毎日、毎週、または毎月のスケジュールで移行を実行する

Important

現在、スケジュール設定は GCS オブジェクト ストレージ - S3 ソースの種類では使用できません。 ジョブは手動でのみ実行できます。 [スケジュールなし] を選択し、[次へ] を選択して続行します。

設定タブ

  1. ドロップダウン リストから目的の コピー モード を選択します。

    コピー モード Behavior
    ターゲットにコンテンツをマージ ファイルは、ソースに存在しない場合でも、ターゲットに保持されます。 名前とパスが一致するファイルは、ソースと一致するように更新されます。 コピー間でフォルダー名を変更すると、ターゲット内のコンテンツが重複する可能性があります。
    ソースをターゲットにミラーリング ターゲットをソースの正確なレプリカにします。 ソースから削除されたオブジェクトもターゲットから削除されます。
  2. データがどのようにマップされているかを理解するには、「 移行の結果 」セクションを確認します。

    結果 説明
    ディレクトリ構造 ターゲットでは、"仮想" フォルダーがサポートされています。 ファイル名の前にソース パスが付加され、フラットなリストに配置されます。 空のフォルダーは空の BLOB として表され、フォルダー メタデータはカスタム メタデータに保持されます。
    タイムスタンプを作成する カスタム BLOB メタデータとして保持されます。 BLOB ネイティブ タイムスタンプには、ファイルが移行された時刻が反映されます。
    タイムスタンプの変更 カスタム BLOB メタデータとして保持されます。 この種類の BLOB ネイティブ タイムスタンプは存在しません。
    変更されたタイムスタンプ カスタム BLOB メタデータとして保持されます。 BLOB ネイティブ タイムスタンプには、ファイルが移行された時刻が反映されます。
    最後にアクセスされたタイムスタンプ ソースに存在する場合は、カスタム BLOB メタデータとして保持されます。 この種類の BLOB ネイティブ タイムスタンプはありません。
    その他のメタデータ ターゲット BLOB のカスタム メタデータに保持されます。 格納できるメタデータは 4 KiB のみです。 4 KiB を超えるメタデータは移行されません。
    クラウド移行プロトコル Blob REST API
  3. [次へ] を選択して続行します。

校閲タブ

構成の概要を確認します。

  • 基本: ジョブ名、移行の種類
  • ソース: ソースの種類、バケット名を含むソース URL、クラウド名 (GCS)、ソース サブパス
  • ターゲット: ストレージ アカウント、Azure BLOB コンテナー、ターゲット サブパス
  • スケジュール: 移行の頻度
  • 設定: コピー モード

すべての設定が正しい場合は、[ 作成 ] を選択してジョブをデプロイします。 [ 前へ ] を選択して変更を加えます。

移行ジョブを実行する

ジョブを開始する

  1. [ プロジェクト ] タブに移動します。新しく作成したジョブが、プロジェクトの下の一覧に表示されます。
  2. ジョブ定義を選択すると、[ プロパティ ] タブにその詳細が表示されます。
  3. [ジョブの開始] ボタンを選択します。
  4. [ ジョブの開始 ] ウィンドウで、ジョブの詳細を確認し、[ 開始 ] を選択して移行を開始します。

ジョブはバックグラウンドで実行されます。 その進行状況は、[ 移行の概要 ] タブで監視できます。

移行の進行状況を監視する

Storage Mover を使用してデータを移行するときは、コピー操作で潜在的な問題を監視する必要があります。 移行中に実行される操作に関連するデータは、[移行の 概要 ] タブに表示されます。このデータを使用すると、現在の状態と、進行状況、速度、推定完了時間などの重要な情報を提供することで、移行の進行状況を追跡できます。

構成すると、Azure Storage Mover はコピー ログジョブ実行ログも提供します。 これらのログを使用すると、ジョブの実行と個々のファイルの移行結果をトレースできます。

  1. [ 移行ジョブ ] タブに移動します。
  2. ジョブを選択して、進行状況、速度、推定完了時間を表示します。
  3. [ ログ] を選択して、エラーまたは警告を確認します。
  4. 移行が完了したら、Azure Blob Storageのデータを確認します。

Storage Mover コピーとジョブ ログの詳細については、 Azure Storage Mover のコピーとジョブ ログを有効にする方法に 関する記事を参照してください。


移行後の検証

移行後のデータ検証により、データが正確であることと、GCS から Azure Blob Storage への転送が完了することが保証されます。 この検証プロセスでは、移行されたデータをソースの同じデータと比較して、データの整合性を検証します。

手動検証を完了し、未使用の GCS リソースをクリーンアップするには、次の手順に従います。

  1. ソースとターゲットの比較: GCS バケットとAzure BLOB コンテナーの間でオブジェクト数と合計データ サイズを比較して、予期されるすべてのオブジェクトが転送されることを確認します。
  2. スポット チェック データの整合性: ソースとターゲットの両方からオブジェクトの代表的なサンプルをダウンロードし、チェックサムを比較します。
  3. 増分同期を有効にする(必要に応じて): GCS バケットと Azure Blob コンテナーの同期を一定期間にわたって維持する必要がある場合は、ジョブが定期的に実行されるようにスケジュールします。
  4. ソースの使用停止: 移行が完全に完了して検証された後、GCS バケットと HMAC キーを削除します。 不要になったら、対応するシークレットをAzure Key Vaultから削除します。

トラブルシューティングとサポート

移行中に問題が発生した場合は、次の手順を実行してトラブルシューティングを開始します。

問題点 Resolution
移行ジョブが失敗しました 詳細なエラー メッセージについては、コピー ログとジョブ ログを確認してください。 一般的な原因には、無効な資格情報やネットワーク接続の問題が含まれます。
認証エラー Azure Key Vaultに格納されている HMAC アクセス キーと秘密鍵が正しく、有効期限が切れていないことを確認します。 ソース エンドポイントのマネージド ID に、ご利用の Key Vault への Key Vault Secrets User アクセス権が付与されていることを確認します。
ターゲットのアクセス許可エラー ターゲット エンドポイントのマネージド ID に、ターゲット Blob コンテナーに対する Storage Blob Data Contributor ロールが割り当てられていることを確認します。
データ転送が遅い ネットワーク帯域幅が十分であることを確認します。 GCS では、S3 と互換性のある API 要求に対するレート制限が実装される場合があります。 スロットリングが発生した場合は、同時実行ジョブ数を減らすことを検討してください。
同期後にオブジェクトが見つからない GCS タイムスタンプの第 2 レベルの粒度により、前回の同期と同じ秒内に変更されたオブジェクトは、次のジョブが実行されるまで検出されない可能性があります。 待機してから、追加同期を実行します。
ターゲット内の予期しないオブジェクト GCS ディレクトリ プレースホルダー オブジェクト ( / で終わる 0 バイトオブジェクト) は自動的にスキップされ、ターゲットには表示されません。 予期しないオブジェクトが存在する場合は、コピー ログで詳細を確認してください。
ソース URL が拒否されました ソース URL で HTTPS が使用され、クエリ パラメーター、フラグメント、または IP アドレスが含まれていないことを確認し、有効な完全修飾ドメイン名を指していることを確認します。

問題を解決できない場合は、Azure サポート要求を作成します。


次の記事は、Storage Mover サービスについて理解を深めるのに役立ちます。