翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SQL Server モダナイゼーションワークフロー
このセクションでは、 AWS Transform を使用した SQL Server のモダナイゼーションプロセス全体をstep-by-stepで説明します。
ステップ 1: SQL Server モダナイゼーションジョブを作成する
Transform AWS コンソールで新しい変換ジョブを作成して、モダナイゼーションジャーニーを開始します。
AWS 変換コンソールにサインインする
モダナイゼーションジョブの作成を選択する
Windows モダナイゼーションジョブを選択し、SQL Server モダナイゼーションを選択します。
ジョブの詳細を入力します。
ジョブ名: プロジェクトの記述名
説明: オプションの説明
デプロイのターゲット region: AWS region
[ジョブの作成] を選択します。
重要
ジョブ名に個人を特定できる情報 (PII) を含めないでください。
ステップ 2: SQL Server データベースに接続する
AWS 変換を SQL Server データベースに接続して、スキーマ分析と変換を有効にします。
データベースコネクタを作成する
SQL Server モダナイゼーションジョブで、 リソースへの接続に移動します。
SQL Server データベースへの接続を選択する
新しいコネクタの作成 を選択します。
コネクタ情報を入力します。
コネクター名: 記述名
AWS アカウント ID: SQL Server がホストされているアカウント
確認されると、承認用のリンクが届きます。承認リンクをコピーして、アカウントの AWS 管理者から承認を取得します。承認したら、次のステップに進むことができます。
管理者がコネクタリクエストを承認したら、送信をクリックしてソースコード接続のセットアップに進みます。
ステップ 3: ソースコードリポジトリを接続する
AWS Transform は、SQL Server データベースとやり取りするコードを分析および変換するために、.NET アプリケーションのソースコードにアクセスする必要があります。 AWS Transform は、ソースコードを提供する 3 つの方法をサポートしています。
認証方法を選択する
- Personal Access Token (PAT) コネクタ (推奨)
-
カスタムアクセス許可スコープ、セルフホストプロバイダーのサポート、または GitHub Secrets などのプロバイダー固有の APIs へのアクセスを必要とするチームに最適です。カスタムアクセス許可を持つソースコードプロバイダーに PAT を作成し、それを に保存し AWS Secrets Manager、必要に応じて AWS Transform が取得します。トークンのローテーションと有効期限を管理するのはお客様の責任です。
- AWS CodeConnections
-
認証情報の自動管理を必要とするチームに最適です。 AWS CodeConnections は、OAuth 2.0 認可フローを通じて認証を処理するマネージドプロバイダー統合を使用します。 は、トークンの自動更新やローテーションなど、認証情報のライフサイクル全体 AWS を管理します。認証情報を手動で管理する必要はありません。
- Amazon S3
-
ソースコードを Amazon S3 バケットに直接アップロードします。 AWS Transform は、変換ジョブ中にバケットからコードにアクセスします。
| 機能 | PAT コネクタ (推奨) | AWS CodeConnections |
|---|---|---|
| 認証情報管理 | 手動 (カスタマー管理) | 自動 (AWSマネージド) |
| トークンのライフサイクル | 手動ローテーションが必要 | 自動更新 |
| アクセス許可の柔軟性 | 完全にカスタマイズ可能なスコープ | 修正されたアクセス許可 |
| セルフホスト型プロバイダーのサポート | サポート | 利用不可 |
| セットアップの複雑さ | 中程度 (手動トークンの作成と保存) | 低 (1 回限りの認可) |
| トークンストレージ | お客様の AWS Secrets Manager | AWSマネージド |
PAT コネクタを設定する (推奨)
PAT コネクタを使用して、カスタムアクセス許可を持つ個人用アクセストークンをソースコードプロバイダーに作成し、安全に に保存し AWS Secrets Manager、必要に応じて AWS Transform が取得します。ローテーションや有効期限などのトークンライフサイクルを管理する責任があります。 AWS Transform は、シークレットにアクセスするためのアクセス許可を持つ必要な IAM ロールを自動的に作成します。
PAT コネクタは、セルフホスト型およびカスタム DNS/URL バージョンを含む次のプロバイダーをサポートしています。
GitHub および GitHub Enterprise Server
GitLab.com と GitLab セルフマネージド
Bitbucket クラウドと Bitbucket データセンター
Azure DevOps と Azure DevOps Server
個人用アクセストークンを作成する
ソースコードプロバイダーに PAT を作成します。必要なアクセス許可はプロバイダーによって異なります。プロバイダーのタブを選択します。
重要
作成直後にトークンをコピーします。再度表示することはできません。変換ジョブの有効期間を設定します。有効期限が期限切れにならないように設定しないでください。
警告
PAT トークンをコードリポジトリにコミットしたり、安全でないチャネルで共有したりしないでください。常に に保存します AWS Secrets Manager。
GitHub
設定、デベロッパー設定、個人用アクセストークン、きめ細かなトークンに移動します。変換するリポジトリを選択し、次のアクセス許可を付与します。
リポジトリのアクセス許可
| アクセス許可 | アクセス | 目的 |
|---|---|---|
| 内容 | 読み取りと書き込み | ソースコードを読み取り、変換されたコードをリポジトリに書き込みます |
| メタデータ | [Read-only] | 基本的なリポジトリ情報にアクセスします |
組織のアクセス許可 (組織リポジトリに必要)
| アクセス許可 | アクセス | 目的 |
|---|---|---|
| メンバー | [Read-only] | リポジトリ検出のためにトークンにアクセスできる組織を一覧表示します |
GitLab
プロファイルの編集、トークンへのアクセスに移動します。次のスコープを選択します。
| スコープ | 目的 |
|---|---|
read_api |
リポジトリメタデータ、プロジェクト情報、ユーザーの詳細を読み取り、グループとブランチを一覧表示します |
read_repository |
分析用のソースコードファイルとリポジトリ構造を読み取ります |
write_repository |
変換されたコードをリポジトリに書き込みます |
Bitbucket
アカウント設定、セキュリティ、API トークンの作成と管理に移動します。必要なスコープはトークンタイプによって異なります。
Workspace/リポジトリトークン (ATCT — ベアラー認証、ユーザー名不要)
| アクセス許可 | アクセス | 目的 |
|---|---|---|
| リポジトリ | 読み取りと書き込み | リポジトリを一覧表示し、ブランチを読み取り、git push を介して変換されたコードを書き込みます |
アカウント API トークン (ATAT — E メールによる基本的な認証) またはアプリパスワード (ATBB — ユーザー名による基本的な認証)
| スコープ | 目的 |
|---|---|
read:account |
認証されたユーザーを識別してリポジトリメンバーシップを解決します |
read:workspace:bitbucket |
Transform がリポジトリを AWS 列挙できるように、トークンがアクセスできるワークスペースを一覧表示します。シークレットでワークスペースリストを指定する場合は必須ではありません。 |
read:repository:bitbucket |
リポジトリを一覧表示し、メタデータとブランチ情報を読み取ります |
write:repository:bitbucket |
変換されたコードを git push 経由でリポジトリに書き込みます |
Azure DevOps
ユーザー設定、個人用アクセストークンに移動します。カスタム定義スコープを選択します。組織のスコープでは、アクセス可能なすべての組織 (推奨) を選択するか、単一の組織を指定します。
| スコープ | アクセス | 目的 |
|---|---|---|
| コード | 読み取りと書き込み | ソースコードを読み取り、リポジトリとブランチを一覧表示し、変換されたコードを書き戻します |
| ユーザープロファイル | 読み取り | トークンアクセスを検証し、組織検索用のユーザー ID を検出します |
| メンバー権限管理 | 読み取り | リポジトリ検出のためにトークンにアクセスできる組織を一覧表示します |
PAT を に保存する AWS Secrets Manager
AWS Secrets Manager コンソールを開きます。
新しいシークレットを保存 を選択します。
[Secret type] (シークレットタイプ) で、[Other type of secret] (他の種類のシークレット) を選択します。
プロバイダーとホスティングタイプに基づいてキーと値のペアを追加します。
クラウドホストプロバイダー — PAT を値として
tokenという名前のキーを追加します。特定の組織を持つ Azure DevOps の場合は、組織名
organizationで という名前のキーも追加します。Bitbucket アプリパスワード (ATBB) の場合は、Bitbucket ユーザー名
usernameで という名前のキーも追加します。Bitbucket アカウント API トークン (ATAT) の場合は、Bitbucket メールアドレスemailで という名前のキーを追加します。
セルフホスト型およびカスタム DNS/URL プロバイダー — (
hostサーバー URL、例:https://github.mycompany.com)、provider_type(github、gitlab、)bitbucket、token(PATado) の各キーを追加します。特定の組織を持つ Azure DevOps の場合は、組織名
organizationで という名前のキーも追加します。Bitbucket アプリパスワード (ATBB) の場合は、Bitbucket ユーザー名
usernameで という名前のキーも追加します。Bitbucket アカウント API トークン (ATAT) の場合は、Bitbucket メールアドレスemailで という名前のキーを追加します。
次の例は、シークレットが GitHub クラウドホストプロバイダー AWS Secrets Manager を検索する方法を示しています。
{ "token": "your-github-personal-access-token" }次の例は、Bitbucket アプリパスワード (ATBB) を示しています。
{ "token": "your-bitbucket-app-password", "username": "my-bitbucket-username" }次の例は、セルフホスト型 GitLab インスタンスを示しています。
{ "host": "https://gitlab.mycompany.com", "provider_type": "gitlab", "token": "your-gitlab-personal-access-token" }[次へ] を選択します。
シークレット名を入力します。例:
github-pat-myproject。(オプション) 暗号化するカスタマーマネージド KMS キーを選択します。
ウィザードを完了し、保存を選択します。
シークレット ARN をコピーします。この値は、 AWS 変換ジョブを設定するときに必要になります。
カスタマー管理の KMS キーを使用してシークレットを暗号化する場合は (デフォルト AWS管理のキーではなく)、 AWS トランスフォームがシークレットを復号できるように KMS キーポリシーを更新する必要があります。カスタマー管理の KMS キーポリシーに次のステートメントを追加します。
{ "Sid": "Allow AWS Transform to decrypt secrets", "Effect": "Allow", "Principal": { "Service": "transform.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.REGION.amazonaws.com", "kms:EncryptionContext:SecretARN": "YOUR-SECRET-ARN" } } }
REGION を自分の AWS リージョン ( などus-east-1) に置き換え、YOUR-SECRET-ARN をシークレットの ARN に置き換えます。このkms:ViaService条件により、KMS キーは AWS Secrets Manager サービスを介してのみ使用できます。このkms:EncryptionContext:SecretARN条件は、復号を特定のシークレットに制限します。
KMS キーポリシーを更新するには:
で AWS KMS コンソールを開きます
https://console.aws.amazon.com/kms。ナビゲーションペインで、[カスタマーマネージドキー] を選択します。
KMS キーを選択します。
アクセスポリシー タブで 編集 を選択します。
ポリシーステートメントを既存のポリシーに追加します。
[Save changes] (変更の保存) をクリックします。
注記
デフォルト AWSマネージドキー (aws/secretsmanager) を使用する場合、KMS キーポリシーを変更する必要はありません。
AWS 変換ジョブを設定する
AWS Transform ジョブで、Connect to resources に移動します。
Connect source code repository を選択します。
認証方法として PAT Connector を選択します。
ステップ 2 のシークレット ARN を入力します。
(オプション) カスタマー管理の KMS キーを使用した場合は、KMS キー ARN を入力します。
リポジトリとブランチを選択します。
[続行] をクリックしてください。
AWS Transform は、シークレットへのアクセスに必要なアクセス許可を持つ IAM ロールを自動的に作成します。
トークンのローテーションとメンテナンス
有効期限が切れる前に PAT トークンをローテーションする責任があります。トークンをローテーションするには:
同じアクセス許可でソースコードプロバイダーに新しい PAT を生成します。
のシークレット値を更新します AWS Secrets Manager。
Transform AWS ジョブが新しいトークンでリポジトリにアクセスできることを確認します。
ソースコードプロバイダーの古い PAT を取り消します。
PAT コネクタの問題のトラブルシューティング
- アクセス拒否 — 無効な PAT
-
PAT の有効期限が切れていないことを確認します。PAT にプロバイダーに必要なスコープがあることを確認します。PAT が正しく保存されていることを確認します AWS Secrets Manager。
- シークレットを取得できません
-
シークレット ARN が正しいことを確認します。ジョブログをチェックして、 AWS Transform が IAM ロールを作成したことを確認します。カスタマー管理の KMS キーを使用している場合は、キーポリシーを確認します。
- アクセス権限の不足
-
PAT には、オペレーションに必要なスコープがない可能性があります。必要なスコープで PAT を再生成し、シークレット値を更新します AWS Secrets Manager。
セットアップ AWS CodeConnections
AWS CodeConnections は、OAuth 2.0 認可フローを通じて一時的な OAuth 認証情報を自動的に取得するマネージドプロバイダー統合を使用します。アクセス許可はプロバイダーアプリで設定され、 によって完全に管理されます AWS。アプリを一度承認すると、 はすべての認証情報管理 AWS を処理します。
SQL Server モダナイゼーションジョブで、 リソースに接続するに移動します。
Connect source code repository を選択します。
既存の接続がない場合は、接続の作成を選択します。
リポジトリプロバイダーを選択します。
GitHub / GitHub Enterprise
GitLab.com
Bitbucket Cloud
Azure リポジトリ
プロバイダーの承認フローに従います。
認可後、接続を選択します。
リポジトリとブランチを選択する
リストからリポジトリを選択します。
変換するブランチ (通常はメイン、マスター、または開発) を選択します。
(オプション) .NET アプリケーションがリポジトリルートにない場合は、サブディレクトリを指定します。
[続行] をクリックしてください。
注記
AWS Transform は、変換されたコードの新しいブランチを作成します。通常のコードレビュープロセスを通じて、変更を確認してマージできます。
リポジトリアクセスの承認
GitHub およびその他のプラットフォームの場合、リポジトリ管理者は接続リクエストを承認する必要があります。
AWS Transform には検証リンクが表示されます。
このリンクをリポジトリ管理者と共有します。
管理者は、リポジトリ設定でリクエストを確認して承認します。
管理者がリクエストを承認すると、接続ステータスは「承認済み」に変わります。
重要
組織のポリシーによっては、承認プロセスに時間がかかる場合があります。変化に応じて計画を立てましょう。
ステップ 4: デプロイコネクタを作成する (オプション)
変換されたアプリケーションを AWS アカウントにデプロイする場合は、デプロイコネクタを選択するオプションがあります。
デプロイコネクタをセットアップする
アプリケーションをデプロイする場合は「はい」を選択します。No を選択すると、このステップはスキップされます。
変換されたアプリケーションをデプロイする AWS アカウントを追加します。
コネクタを簡単に覚えやすい名前を追加する
コネクタリクエストを承認のために送信します。
デプロイコネクタの承認
AWS アカウント管理者は、デプロイコネクタの接続リクエストを承認する必要があります。
AWS 変換は検証リンクを表示します
このリンクを AWS アカウント管理者と共有する
管理者は、リポジトリ設定でリクエストを確認して承認します。
承認されると、接続ステータスは「承認済み」に変わります。
重要
組織のポリシーによっては、承認プロセスに時間がかかる場合があります。変化に応じて計画を立てましょう。
ステップ 5: リソースを確認する
データベースとリポジトリに接続すると、 AWS Transform は必要なすべてのリソースにアクセスでき、変換の準備が整っていることを確認します。
AWS 変換の検証内容
データベース接続: 接続がアクティブ、ユーザーが必要なアクセス許可を持っている、データベースにアクセスできる、バージョンがサポートされている
リポジトリアクセス: リポジトリへのアクセス、ブランチの存在、.NET プロジェクトファイルの検出、データベース接続の検出
環境の準備状況: VPC 設定が DMS をサポート、必要な AWS サービスロールが存在する、ネットワーク接続が確立されている、リージョンの互換性が確認されている
プリフライトチェックリストを確認する
ジョブプランのリソースの確認に移動します。
チェックリスト項目を確認します。
✅ データベース接続の検証
✅ リポジトリへのアクセスが確認されました
✅ サポートされている .NET バージョン
✅ Entity Framework または ADO.NET が検出されました
✅ ネットワーク設定が有効
✅ 必要なアクセス許可の付与
すべての項目が完了と表示されたら、続行を選択します。
警告やエラーが表示される項目がある場合は、先に進む前に対処してください。
ステップ 6: 検出と評価
AWS Transform は SQL Server データベースと .NET アプリケーションを分析して、モダナイゼーションの範囲と複雑さを理解します。
検出された内容
データベースオブジェクト: テーブル、ビュー、インデックス、ストアドプロシージャ、関数、トリガー、制約、データ型、計算列、ID 列、外部キー関係
アプリケーションコード: .NET プロジェクト構造、Entity Framework モデルと設定、ADO.NET データアクセスコード、データベース接続文字列、ストアドプロシージャ呼び出し、コード内の SQL クエリ
依存関係: どのアプリケーションがどのデータベースを使用するか、データベース間の依存関係、共有ストアドプロシージャ、一般的なデータアクセスパターン
検出プロセス
AWS 変換はリソースの確認後に自動的に検出を開始します
検出には通常、データベースのサイズとアプリケーションの複雑さに応じて 5~15 分かかります。
作業ログの進行状況をモニタリングする
AWS 変換は、オブジェクトが検出されるとリアルタイムの更新を表示します
検出結果を確認する
検出が完了したら、検出と評価に移動して確認します。
データベース分析:
オブジェクト数: テーブル、ビュー、ストアドプロシージャ、関数、トリガーの数
複雑さスコア: 変換の複雑さの評価 (低、中、高)
アクション項目: 人間の注意が必要なオブジェクト
サポートされている機能: が自動的に変換されるデータベース機能
サポートされていない機能: 回避策が必要な機能
アプリケーション分析:
プロジェクトタイプ: ASP.NET Core、コンソールアプリ、クラスライブラリなど
.NET バージョン: 検出された .NET Core バージョン
データアクセスフレームワーク: Entity Framework バージョンまたは ADO.NET
データベース接続: 見つかった接続文字列の数
コードの複雑さ: 変換の複雑さの評価
依存関係マップ:
application-to-databaseの関係の視覚的表現
クロスデータベースの依存関係
共有コンポーネント
複雑さ評価について
AWS 変換はモダナイゼーションを 3 つのカテゴリに分類します。
| 複雑さ | 特性 | 期待される成果 |
|---|---|---|
| 低 (クラス A) | 標準 SQL パターン (ANSI SQL)、シンプルなストアドプロシージャ、基本データ型、標準設定のエンティティフレームワーク | 予想される最小限の人的介入、高い自動化成功率 |
| 中 (クラス B) | 高度な T-SQL パターン、ビジネスロジックを使用した複雑なストアドプロシージャ、ユーザー定義関数、計算列 | 人間による介入が必要で、専門家によるレビューが推奨されます |
| 高 (クラス C) | CLR アセンブリ、リンクサーバー、サービスブローカー、複雑な全文検索 | 重要な人的リファクタリングが必要、段階的アプローチを検討する |
評価レポート
AWS Transform は、以下を含む詳細な評価レポートを生成します。
大まかな概要を含むエグゼクティブサマリー
データベースインベントリを完了する
アプリケーションインベントリ
変換準備状況の割合
労力の見積もり
リスク評価と緩和戦略
(推奨されるアプローチ)
評価レポートはオフラインレビュー用にダウンロードし、ステークホルダーと共有できます。
ステップ 7: ウェーブプランを生成して確認する
複数のデータベースとアプリケーションを持つ大規模な資産の場合、 AWS Transform は論理グループでモダナイゼーションをシーケンスするウェーブプランを生成します。
ウェーブプランとは
ウェーブプランは、以下に基づいてモダナイゼーションをフェーズ (ウェーブ) に整理します。
データベースとアプリケーション間の依存関係
ビジネスの優先順位
リスク許容度
リソースの可用性
技術的な複雑さ
各ウェーブには、依存関係を損なうことなく一緒にモダナイズできるデータベースとアプリケーションのグループが含まれています。
ウェーブプランを確認する
ジョブプランで Wave 計画に移動する
提案されたウェーブを確認する
ウェーブごとに、以下を確認してください。
含まれるデータベース
含まれるアプリケーション
他のウェーブの依存関係
推定変換時間
複雑さレベル
デプロイ可能なアプリケーション
ウェーブプランをカスタマイズする
次の 2 つの方法で、ビジネスニーズに合わせてウェーブプランをカスタマイズできます。
JSON の使用:
すべてのウェーブのダウンロードを選択して、すべてのウェーブを含む JSON ファイルを取得します。
JSON のウェーブを変更するには、以下を実行します。
ウェーブ間のデータベースの移動
ウェーブを小さなグループに分割する
ウェーブをマージする
ウェーブシーケンスの変更
スコープからのデータベースの追加または削除
ウェーブプランのアップロードを選択して JSON ファイルをコンソールにアップロードします。
AWS 変換は変更を検証し、依存関係が侵害された場合に警告します
ウェーブの確認を選択してウェーブプランを更新します
チャットの使用:
エージェントとチャットし、リポジトリとデータベースを特定のウェーブに移動するように依頼することで、ウェーブプランを変更できます。このアプローチは、ウェーブに小さな編集を加える必要がある場合に適しています。
重要
ウェーブをカスタマイズするときに、依存関係が尊重されていることを確認します。データベースの前に依存アプリケーションを変換すると、問題が発生する可能性があります。
単一データベースのモダナイゼーション
単一のデータベースとアプリケーションをモダナイズする場合、 AWS Transform は 1 つのウェーブでシンプルな計画を作成します。ウェーブプランニングなしで直接変換に進むことができます。
ウェーブプランを承認する
確認してカスタマイズした後 (必要に応じて)、ウェーブプランの承認を選択します。
AWS 変換はウェーブプランをロックし、変換に進みます
ウェーブプランの編集を選択して、後でプランを変更できます。
ステップ 8: スキーマ変換
AWS Transform は、テーブル、ビュー、ストアドプロシージャ、関数、トリガーなど、SQL Server データベーススキーマを Aurora PostgreSQL に変換します。
スキーマ変換の仕組み
AWS Transform AWS は、生成 AI で拡張された DMS Schema Conversion を使用して以下を行います。
SQL Server スキーマと関係を分析する
SQL Server から PostgreSQL と同等のデータ型をマッピングする
T-SQL を PL/pgSQL に変換する
ID 列、計算列、制約を処理する
変換と参照整合性を検証する
人間によるレビューが必要なオブジェクトのアクション項目を生成する
サポートされている変換
自動変換:
テーブル、ビュー、インデックス
プライマリキーと外部キー
制約とデフォルト値を確認する
最も一般的なデータ型
シンプルなストアドプロシージャ
基本的な関数とトリガー
ID 列 (SERIAL または GENERATED に変換)
ほとんどの計算列
人間によるレビューが必要になる場合があります。
高度な T-SQL を使用した複雑なストアドプロシージャ
SQL Server 固有の関数 (GETUTCDATE、SUSER_SNAME など)
複雑な式を持つ計算列
全文検索インデックス
XML データ型オペレーション
HIERARCHYID データ型 (ltree 拡張機能が必要)
自動的に変換されません。
CLR アセンブリ
リンクサーバー
サービスブローカー
SQL Server エージェントジョブ
スキーマ変換を開始する
ジョブプランでスキーマ変換に移動する
変換設定を確認します。
ターゲット PostgreSQL バージョン
拡張機能オプション (ltree、PostGIS など)
命名規則
変換の開始を選択する
作業ログの進行状況をモニタリングする
変換には通常、データベースオブジェクトの数に応じて 10~30 分かかります。
変換結果を確認する
変換が完了したら、スキーマ変換の確認に移動します。
変換の概要:
変換されたオブジェクト: 正常に変換されたオブジェクトの数
アクション項目: 人間による注意が必要なオブジェクト
警告: レビューすべき潜在的な問題
エラー: 変換できなかったオブジェクト
オブジェクトタイプによるレビュー:
テーブル: データ型マッピング、制約、インデックス
ストアドプロシージャ: T-SQL から PL/pgSQL への変換
関数: 関数の署名とロジックの変更
トリガー: トリガー構文とタイミングの変更
アクション項目を確認する
アクション項目の表示を選択する
アクション項目ごとに、以下を確認します。
オブジェクト名: データベースオブジェクト
問題タイプ: 注意が必要なもの
重要度: 重大、警告、または情報
推奨事項: 推奨される解決方法
元のコード: SQL Server バージョン
変換されたコード: PostgreSQL バージョン
アクション項目ごとに、次のことができます。
承認: 変換されたコードを使用する
変更: 変換されたコードを編集する
後の のフラグ: 変換後に人間によるレビュー用にマークする
例: ストアドプロシージャ変換
SQL Server T-SQL:
CREATE PROCEDURE GetProductsByCategory @CategoryId INT, @PageSize INT = 10 AS BEGIN SET NOCOUNT ON; SELECT TOP (@PageSize) ProductId, Name, Price, DATEDIFF(DAY, CreatedDate, GETUTCDATE()) AS DaysOld FROM Products WHERE CategoryId = @CategoryId ORDER BY Name END
変換された PostgreSQL PL/pgSQL:
CREATE OR REPLACE FUNCTION get_products_by_category( p_category_id INTEGER, p_page_size INTEGER DEFAULT 10 ) RETURNS TABLE ( product_id INTEGER, name VARCHAR(255), price NUMERIC(18,2), days_old INTEGER ) AS $$ BEGIN RETURN QUERY SELECT p.product_id, p.name, p.price, EXTRACT(DAY FROM (NOW() - p.created_date))::INTEGER AS days_old FROM products p WHERE p.category_id = p_category_id ORDER BY p.name LIMIT p_page_size; END; $$ LANGUAGE plpgsql;
変更点:
TABLE を返す関数に変換されたプロシージャ
p_ というプレフィックスが付いたパラメータ名
TOP を LIMIT に変換
EXTRACT に変換された DATEDIFF
GETUTCDATE() を NOW() に変換
小文字に変換された列名 (PostgreSQL 規則)
スキーマ変換を承認する
すべてのアクション項目を確認し、必要な変更を加えた後
スキーマ変換の承認を選択する
AWS Transform は、Aurora PostgreSQL へのデプロイ用に変換されたスキーマを準備します
注記
変換されたスキーマは、オフラインレビューまたはバージョン管理用の SQL スクリプトとしてダウンロードできます。
ステップ 9: データ移行 (オプション)
AWS Transform には、SQL Server から Aurora PostgreSQL にデータを移行するためのオプションが用意されています。データ移行はオプションであり、スキーマとコード変換のみが必要な場合はスキップできます。
データ移行オプション
オプション 1: 本番稼働用データ移行
DMS AWS を使用して実際の本番稼働データを移行します。
すべてのデータの完全な初期ロード
テスト中の継続的レプリケーション (CDC)
最小ダウンタイムカットオーバー
データの検証と整合性チェック
オプション 2: データ移行をスキップする
スキーマとコードのみを変換します。
開発/テスト環境に役立ちます
データを個別に移行する場合
proof-of-conceptプロジェクトの場合
データ移行を設定する
ジョブプランでデータ移行に移動する
移行オプションを選択します。
本番稼働用データの移行
データ移行をスキップする
本番データを移行する場合は、以下を設定します。
移行タイプ: 全ロード、または全ロード + CDC
検証: データ検証を有効にする
パフォーマンス: DMS インスタンスサイズ
-
「>移行の開始」を選択します。
本番稼働用データ移行プロセス
本番データを移行することを選択した場合:
初期同期: AWS DMS はすべてのテーブルの全ロードを実行します
継続的なレプリケーション: (CDC が有効になっている場合) データの同期を維持します
検証: 行数とデータの整合性を検証します
カットオーバーの準備: 最終同期の準備
移行タイムライン:
小規模データベース (< 10 GB): 30 分~2 時間
中規模データベース (10~100 GB): 2~8 時間
大規模なデータベース (> 100 GB): 8 時間以上
データ検証
AWS 変換は、移行されたデータを次のチェックで検証します。
行数の比較 (ソースとターゲット)
プライマリキーの整合性
外部キー関係
データ型の互換性
計算された列の結果
Null 値処理
ステップ 10: アプリケーションコード変換
AWS Transform は、.NET アプリケーションコードを SQL Server ではなく Aurora PostgreSQL と連携するように変換します。リポジトリ内のターゲットブランチ名に、変換されたソースコードをコミットするように要求します。ブランチ名を入力すると、 AWS Transform は新しいブランチを作成し、PostgreSQL データベースと一致するように変換を開始します。
変換される内容
エンティティフレームワークの変更:
データベースプロバイダー: UseSqlServer() → UseNpgsql()
接続文字列: SQL Server 形式 → PostgreSQL 形式
データ型マッピング: SQL Server タイプ → PostgreSQL タイプ
DbContext 設定: SQL Server 固有 → PostgreSQL 固有
移行ファイル: PostgreSQL との互換性のために更新
ADO.NET 変更:
接続クラス: SqlConnection → NpgsqlConnection
コマンドクラス: SqlCommand → NpgsqlCommand
データリーダー: SqlDataReader → NpgsqlDataReader
パラメータ: SqlParameter → NpgsqlParameter
SQL 構文: T-SQL → PostgreSQL SQL
設定の変更:
appsettings.json の接続文字列
データベースプロバイダー NuGet パッケージ
依存関係インジェクション設定
Startup/Program.cs 設定
コード変換を開始する
ジョブプランのアプリケーション変換に移動する
変換設定を確認します。
ターゲット .NET バージョン (アップグレードの場合)
PostgreSQL プロバイダーのバージョン
コードスタイルのプリファレンス
変換の開始を選択する
作業ログの進行状況をモニタリングする
変換には通常、コードベースサイズに応じて 15~45 分かかります。
ステップ 11: 変換結果を確認する
デプロイに進む前に、完全な変換結果を確認して、すべてテストの準備が整っていることを確認します。
変換されたコードは、リポジトリブランチからダウンロードできます。
ローカルテストと検証
IDE でのコードレビュー
CI/CD パイプラインとの統合
バージョン管理コミット
変換の概要をダウンロードして、変換の一部として AWS 変換によって行われた自然言語の変更を確認することもできます。
変換の概要
ジョブプランで変換の概要に移動する
全体的な結果を確認します。
スキーマ変換: 変換されたオブジェクト、アクション項目、警告
データ移行: テーブルの移行、行の転送、検証ステータス
コード変換: ファイルの変更、行の変更、問題の解決
準備状況スコア: デプロイの全体的な準備状況
変換レポートの生成
AWS Transform は包括的な変換レポートを生成します。
レポートの生成を選択する
レポートタイプを選択します。
エグゼクティブサマリー: ステークホルダー向けの概要
技術的な詳細: 完全な変換ドキュメント
アクション項目: 必要なヒューマンタスクのリスト
レポートのダウンロードを選択する
レポートには以下が含まれます。
変換の範囲と目的
変換されたオブジェクトとコード
発生した問題と解決策
検証結果
デプロイ準備状況の評価
テストに関する推奨事項
ステップ 12: 検証とテスト
本番環境にデプロイする前に、変換されたアプリケーションが Aurora PostgreSQL で正しく動作することを確認します。
検証タイプ
自動検証: AWS Transform は自動チェックを実行します。
ソースデータベースに対するスキーマの検証
データ整合性の検証
クエリ同等性テスト
接続文字列の検証
設定の検証
人間による検証: 追加のテストを実行する必要があります。
アプリケーション機能の機能テスト
他のシステムとの統合テスト
パフォーマンステストとベンチマーク
ユーザー受け入れテスト
セキュリティテスト
自動検証を実行する
ジョブプランの検証に移動する
検証の実行を選択する
AWS 変換は検証テストを実行します。
データベース接続
スキーマの互換性
データ整合性
アプリケーションビルド
基本的な機能
検証結果を確認します。
合格: 成功したテスト
失敗: 注意が必要なテスト
警告: レビューすべき潜在的な問題
テストチェックリスト
データベース機能:
アクセス可能なすべてのテーブル
ストアドプロシージャが正しく実行される
関数は期待される結果を返す
適切に発射されるトリガー
適切に適用される制約
インデックスによるクエリパフォーマンスの向上
アプリケーション機能:
アプリケーションが正常に起動する
データベース接続が確立されました
CRUD オペレーションが正しく機能する
ストアドプロシージャ呼び出しが成功
トランザクションの適切なコミット/ロールバック
エラー処理が期待どおりに機能する
データ整合性:
行カウントの一致ソース
プライマリキー一意
外部キーが有効
計算された列が正しい
Null 処理が適切
互換性のあるデータ型
パフォーマンス:
クエリレスポンスの許容時間
接続プーリングの設定
最適化インデックス
N+1 クエリの問題なし
バッチオペレーションの効率化
リソース使用率の妥当性
ステップ 13: デプロイ
検証が成功したら、モダナイズされたアプリケーションとデータベースを本番環境にデプロイします。
デプロイオプション
Amazon ECS と Amazon EC2 Linux
デプロイ前チェックリスト
本番環境にデプロイする前に:
すべての検証テストに合格しました
パフォーマンステストが完了しました
セキュリティレビューの完了
バックアップおよびロールバック計画の文書化
モニタリングとアラートの設定
新しい環境でトレーニングされたチーム
デプロイの通知を受けたステークホルダー
スケジュールされたメンテナンスウィンドウ
Amazon ECS へのデプロイ
ジョブプランのデプロイに移動する
ECS にデプロイを選択する
デプロイ設定を構成する:
クラスター: ECS クラスターを選択または作成する
サービス: ECS サービスを設定する
タスク定義: 生成されたタスク定義を確認する
ロードバランサー: ALB/NLB を設定する
自動スケーリング: スケーリングポリシーを設定する
infrastructure-as-code を確認する (CloudFormation テンプレートまたは AWS CDK コード)
[デプロイ] をクリックします。
デプロイのモニタリング
AWS Transform はアプリケーションをデプロイします。
Aurora PostgreSQL クラスターを作成します
データベーススキーマを適用します
データをロードします (該当する場合)
アプリケーションコンテナをデプロイします
ロードバランサーを設定します
自動スケーリングを設定する
デプロイの進行状況をモニタリングし、以下を確認します。
インフラストラクチャーのプロビジョニング
データベースの初期化
アプリケーションのデプロイ
ヘルスチェックの合格
アクセス可能なアプリケーション
データベース接続が機能する
通常のオペレーションを示すログ
デプロイ後の検証
デプロイ後:
煙テスト:
重要な機能を検証する
キーユーザーワークフローをテストする
統合ポイントを確認する
エラー率をモニタリングする
パフォーマンスモニタリング:
応答時間を追跡する
データベースクエリのモニタリング
リソース使用率を確認する
アプリケーションログを確認する
ユーザー検証:
ユーザー受け入れテストを実施する
フィードバックの収集
問題に対処する
学んだ教訓を文書化する
ロールバック手順
デプロイ後に問題が発生した場合:
即時ロールバック:
以前のアプリケーションバージョンに戻す
SQL Server に戻す (使用可能な場合)
必要に応じてバックアップから復元する
部分ロールバック:
特定のコンポーネントをロールバックする
データベースの変更を保持する
アプリケーションコードのみを元に戻す
フォワード修正:
Aurora PostgreSQL バージョンにホットフィックスを適用する
更新されたアプリケーションコードをデプロイする
解決をモニタリングする
重要
必要に応じてロールバックを有効にするために、カットオーバー後も SQL Server データベースを一定期間使用できるようにします。
デプロイ後の最適化
デプロイが成功した後:
パフォーマンスチューニング:
スロークエリの最適化
接続プールの設定を調整する
Aurora PostgreSQL パラメータをファインチューニングする
インデックスの確認と最適化
コスト最適化:
適切なサイズの Aurora インスタンス
自動スケーリングを適切に設定する
ストレージ設定を確認する
バックアップ保持の最適化
モニタリングのセットアップ:
CloudWatch ダッシュボードを設定する
アラートの設定
拡張モニタリングを有効にする
Performance Insights を設定する
ドキュメント:
ランブックを更新する
アーキテクチャの変更を文書化する
運用チームのトレーニング
トラブルシューティングガイドを作成する