Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Terraform を使用してデータベース移行用の CI/CD パイプラインを設定する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Terraform を使用してデータベース移行用の CI/CD パイプラインを設定する

作成者: Dr. Rahul Sharad Gaikwad (AWS)、Aarti Rajput (AWS)、Ashish Bhatt (AWS)、Aniket Dekate (AWS)、Naveen Suthar (AWS)、Nadeem Rahaman (AWS)、R™ka Modi (AWS)、Tamilselvan P (AWS)

概要

このパターンは、データベース移行を信頼性が高く自動化された方法で管理するための継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインを確立するためのものです。Infrastructure as Code (IaC) ツールである Terraform を使用して、必要なインフラストラクチャのプロビジョニング、データの移行、スキーマの変更のカスタマイズを行うプロセスについて説明します。

具体的には、このパターンは、オンプレミスの Microsoft SQL Server データベースを Amazon Relational Database Service (Amazon RDS) に移行するように CI/CD パイプラインを設定します AWS。このパターンを使用して、仮想マシン (VM) または別のクラウド環境にある SQL Server データベースを Amazon RDS に移行することもできます。

このパターンは、データベースの管理とデプロイに関連する以下の課題に対処します。

  • 手動データベースデプロイは時間がかかり、エラーが発生しやすく、環境間で一貫性がありません。

  • インフラストラクチャのプロビジョニング、データ移行、スキーマの変更を調整することは、複雑で管理が難しい場合があります。

  • 本番システムでは、データの整合性を確保し、データベースの更新中のダウンタイムを最小限に抑えることが重要です。

このパターンには次の利点があります。

  • データベース移行用の CI/CD パイプラインを実装することで、データベースの変更を更新およびデプロイするプロセスを合理化します。これにより、エラーのリスクが軽減され、環境間の一貫性が確保され、ダウンタイムが最小限に抑えられます。

  • 信頼性、効率性、コラボレーションの向上に役立ちます。市場投入までの時間を短縮し、データベース更新中のダウンタイムを短縮できます。

  • データベース管理に最新の DevOps プラクティスを採用するのに役立ちます。これにより、ソフトウェア配信プロセスの俊敏性、信頼性、効率性が向上します。

前提条件と制限

前提条件

アーキテクチャ

このパターンでは、データベース移行プロセスの完全なインフラストラクチャを提供する次のアーキテクチャを実装します。

オンプレミス SQL Server データベースを AWS 上の Amazon RDS に移行するための CI/CD パイプラインアーキテクチャ。

このアーキテクチャでは、以下のようになります。

  • ソースデータベースは、オンプレミス、仮想マシン (VM)、または別のクラウドプロバイダーによってホストされている SQL Server データベースです。この図は、ソースデータベースがオンプレミスデータセンターにあることを前提としています。

  • オンプレミスのデータセンターと AWS は、VPN または AWS Direct Connect 接続を介して接続されます。これにより、ソースデータベースと AWS インフラストラクチャ間の安全な通信が可能になります。

  • ターゲットデータベースは、データベースプロビジョニングパイプラインを使用して の仮想プライベートクラウド (VPC) AWS 内でホストされる Amazon RDS データベースです。

  • AWS Database Migration Service (AWS DMS) は、オンプレミスデータベースを にレプリケートします AWS。これは、ソースデータベースからターゲットデータベースへのレプリケーションを設定するために使用されます。

次の図は、プロビジョニング、 AWS DMS セットアップ、検証を含む、さまざまなレベルのデータベース移行プロセスで設定されたインフラストラクチャを示しています。

オンプレミスから AWS への移行プロセスの CI/CD パイプラインの詳細。

このプロセスでは、次の操作を行います。

  • 検証パイプラインはすべてのチェックを検証します。必要なすべての検証が完了すると、統合パイプラインは次のステップに進みます。

  • DB プロビジョニングパイプラインは、データベース用に提供された Terraform コードに対して Terraform アクションを実行するさまざまな AWS CodeBuild ステージで構成されます。これらのステップが完了すると、リソースがターゲットにデプロイされます AWS アカウント。

  • AWS DMS パイプラインは、テストを実行し、IaC を使用して移行を実行するための AWS DMS インフラストラクチャをプロビジョニングするさまざまな CodeBuild ステージで構成されます。

ツール

AWS のサービス および ツール

  • AWS CodeBuild は、ソースコードをコンパイルし、テストを実行し、ready-to-deployソフトウェアパッケージを生成するフルマネージド型の継続的統合サービスです。

  • AWS CodePipeline は、完全マネージド型の継続的デリバリーサービスであり、リリースパイプラインを自動化して、アプリケーションとインフラストラクチャを迅速かつ確実に更新できます。

  • Amazon Relational Database Service (Amazon RDS) は、 でリレーショナルデータベースをセットアップ、運用、スケーリングするのに役立ちます AWS クラウド。

  • Amazon Simple Storage Service (Amazon S3) は、スケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。

  • AWS Database Migration Service (AWS DMS) は、データストアを に移行する AWS クラウド か、クラウドとオンプレミスのセットアップの組み合わせ間で移行するのに役立ちます。

その他のサービス

  • Terraform は HashiCorp の IaC ツールで、クラウドおよびオンプレミスのリソースの作成と管理に役立ちます。 HashiCorp

コードリポジトリ

このパターンのコードは、GitHub Database Migration DevOps Framework using Terraform samples リポジトリで入手できます。

ベストプラクティス

  • データベース移行の自動テストを実装して、スキーマの変更とデータ整合性の正確性を検証します。これには、ユニットテスト、統合テスト、end-to-endテストが含まれます。

  • 特に移行前に、データベースの堅牢なバックアップおよび復元戦略を実装します。これにより、データの整合性が確保され、障害が発生した場合にフォールバックオプションが提供されます。

  • 移行中に障害や問題が発生した場合にデータベースの変更を元に戻すための堅牢なロールバック戦略を実装します。これには、以前のデータベース状態にロールバックしたり、個々の移行スクリプトを元に戻したりすることが含まれます。

  • データベース移行の進行状況とステータスを追跡するためのモニタリングとログ記録のメカニズムを設定します。これにより、問題をすばやく特定して解決できます。

エピック

タスク説明必要なスキル

ローカルワークステーションで Git をセットアップして設定します。

Git ドキュメントの指示に従って、ローカルワークステーションに Git をインストールして設定します。

DevOps エンジニア

プロジェクトフォルダを作成し、GitHub リポジトリからファイルを追加します。

  1. このパターンの GitHub リポジトリを開きます。

  2. コードを選択してクローンオプションを表示し、HTTPS タブで提供されている URL をコピーします。

  3. ワークステーションでプロジェクトのフォルダを作成します。

  4. ターミナルを開き、このフォルダに移動します。

  5. GitHub リポジトリのクローンを作成します。

    git clone <github-repository-url>

    ここで、 <github-repository-url>はステップ 2 でコピーした URL です。

  6. クローン作成が完了したら、プロジェクトフォルダのクローンされたリポジトリに移動します。

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. このプロジェクトを任意の統合開発環境 (IDE) で開きます。

DevOps エンジニア

ローカルワークステーションをセットアップする

タスク説明必要なスキル

ローカルワークステーションで Git をセットアップして設定します。

Git ドキュメントの指示に従って、ローカルワークステーションに Git をインストールして設定します。

DevOps エンジニア

プロジェクトフォルダを作成し、GitHub リポジトリからファイルを追加します。

  1. このパターンの GitHub リポジトリを開きます。

  2. コードを選択してクローンオプションを表示し、HTTPS タブで提供されている URL をコピーします。

  3. ワークステーションでプロジェクトのフォルダを作成します。

  4. ターミナルを開き、このフォルダに移動します。

  5. GitHub リポジトリのクローンを作成します。

    git clone <github-repository-url>

    ここで、 <github-repository-url>はステップ 2 でコピーした URL です。

  6. クローン作成が完了したら、プロジェクトフォルダのクローンされたリポジトリに移動します。

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. このプロジェクトを任意の統合開発環境 (IDE) で開きます。

DevOps エンジニア
タスク説明必要なスキル

必須パラメータを更新します。

ssm-parameters.sh ファイルには、必要な AWS Systems Manager パラメータがすべて保存されます。これらのパラメータは、プロジェクトのカスタム値で設定できます。

ローカルワークステーションの setup/db-ssm-paramsフォルダで、 ファイルを開きssm-parameters.sh、CI/CD パイプラインを実行する前にこれらのパラメータを設定します。

DevOps エンジニア

Terraform 構成を初期化します。

db-cicd-integration フォルダに次のコマンドを入力して、Terraform 設定ファイルを含む作業ディレクトリを初期化します。

terraform init
DevOps エンジニア

Terraform プランをプレビューしてください。

Terraform プランを作成するには、次のコマンドを入力します。

terraform plan -var-file="terraform.sample"

Terraform は設定ファイルを評価して、宣言されたリソースのターゲット状態を判断します。次に、ターゲットの状態を現在の状態と比較し、プランを作成します。

DevOps エンジニア

プランを検証してください。

計画を確認し、ターゲットに必要なアーキテクチャが設定されていることを確認します AWS アカウント。

DevOps エンジニア

ソリューションをデプロイします。

  1. プランを適用するには、次のコマンドを入力します。

    terraform apply -var-file="terraform.sample"
  2. yes を入力して確定します。Terraform は、構成ファイルに宣言されている目標状態を達成するために、インフラストラクチャを作成、更新、または破棄します。シーケンスの詳細については、このパターンの「アーキテクチャ」セクションを参照してください。

DevOps エンジニア

ターゲットアーキテクチャのプロビジョニング

タスク説明必要なスキル

必須パラメータを更新します。

ssm-parameters.sh ファイルには、必要な AWS Systems Manager パラメータがすべて保存されます。これらのパラメータは、プロジェクトのカスタム値で設定できます。

ローカルワークステーションの setup/db-ssm-paramsフォルダで、 ファイルを開きssm-parameters.sh、CI/CD パイプラインを実行する前にこれらのパラメータを設定します。

DevOps エンジニア

Terraform 構成を初期化します。

db-cicd-integration フォルダに次のコマンドを入力して、Terraform 設定ファイルを含む作業ディレクトリを初期化します。

terraform init
DevOps エンジニア

Terraform プランをプレビューしてください。

Terraform プランを作成するには、次のコマンドを入力します。

terraform plan -var-file="terraform.sample"

Terraform は設定ファイルを評価して、宣言されたリソースのターゲット状態を判断します。次に、ターゲットの状態を現在の状態と比較し、プランを作成します。

DevOps エンジニア

プランを検証してください。

計画を確認し、ターゲットに必要なアーキテクチャが設定されていることを確認します AWS アカウント。

DevOps エンジニア

ソリューションをデプロイします。

  1. プランを適用するには、次のコマンドを入力します。

    terraform apply -var-file="terraform.sample"
  2. yes を入力して確定します。Terraform は、構成ファイルに宣言されている目標状態を達成するために、インフラストラクチャを作成、更新、または破棄します。シーケンスの詳細については、このパターンの「アーキテクチャ」セクションを参照してください。

DevOps エンジニア
タスク説明必要なスキル

デプロイを検証します。

db-cicd-integration パイプラインのステータスを確認して、データベースの移行が完了したことを確認します。

1. にサインインし AWS Management Console、 AWS CodePipeline コンソールを開きます。

2. ナビゲーションペインで [Pipelines] (パイプライン) を選択します。

3. パイプラインを選択しますdb-cicd-integration

4. パイプラインの実行が正常に完了したことを確認します。

DevOps エンジニア

デプロイメントを確認する

タスク説明必要なスキル

デプロイを検証します。

db-cicd-integration パイプラインのステータスを確認して、データベースの移行が完了したことを確認します。

1. にサインインし AWS Management Console、 AWS CodePipeline コンソールを開きます。

2. ナビゲーションペインで [Pipelines] (パイプライン) を選択します。

3. パイプラインを選択しますdb-cicd-integration

4. パイプラインの実行が正常に完了したことを確認します。

DevOps エンジニア
タスク説明必要なスキル

インフラストラクチャをクリーンアップします。

  1. プロジェクトが完了したら、 コマンドを使用して作成したインフラストラクチャをクリーンアップします。

    terraform destroy --var-file=terraform.sample
  2. yes を入力して確定します。

DevOps エンジニア

使用後のインフラストラクチャのクリーンアップ

タスク説明必要なスキル

インフラストラクチャをクリーンアップします。

  1. プロジェクトが完了したら、 コマンドを使用して作成したインフラストラクチャをクリーンアップします。

    terraform destroy --var-file=terraform.sample
  2. yes を入力して確定します。

DevOps エンジニア

関連リソース

AWS ドキュメント

Terraformのドキュメント

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.