Amazon Web Services ブログ

Terraform を使用した Amazon RDS for Db2 のデプロイ

本記事は 2026 年 5 月 19 日 に公開された「Deploying Amazon RDS for Db2 using Terraform」を翻訳したものです。

IBM Db2 ワークロードを運用しているお客様からは、既存の Infrastructure as Code のプラクティスに適合する形で、Amazon Relational Database Service (Amazon RDS) for Db2 を再現性が高く監査可能な方法でプロビジョニングしたいという要望をよくいただきます。本記事では、aws-samples/sample-rds-db2-tools リポジトリで公開しているモジュール式の Terraform テンプレートを紹介します。このテンプレートを使えば、空の AWS アカウントから、AWS License Manager で追跡される稼働中の RDS for Db2 インスタンスまでを 1 時間以内で構築できます。

ソリューションの概要

テンプレートは、以下の図のように 7 つの番号付き Terraform モジュールに分かれています。

Architecture diagram showing seven numbered Terraform modules: 0-backend-setup for state, 1-networking, 2-iam, 3-kms, 4-parameter-group, 5-rds, and 6-license-manager, each with its own remote state

各モジュールはスタックの特定の部分を担い、独自のリモートステートを保持します。そのため、他のモジュールに影響を与えることなく 1 つのモジュールだけを変更できます。ステート管理、ロック、暗号化には、Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB、AWS Key Management Service (AWS KMS) を使用します。

モジュール 作成されるもの
0-backend-setup Terraform のリモートステート用の Amazon S3 バケットと Amazon DynamoDB テーブル
1-networking 仮想プライベートクラウド (VPC) から導出した DB サブネットグループ (オプションでインターフェイス型 VPC エンドポイントを含む)
2-iam 拡張モニタリング、S3 統合、ディレクトリサービス、監査用の IAM ロール
3-kms カスタマーマネージド AWS KMS キー (マルチリージョン対応)
4-parameter-group IBM カスタマー ID と IBM サイト ID を含む DB パラメータグループ
5-rds RDS for Db2 インスタンス本体
6-license-manager エンジンエディションの製品フィルターを持つ AWS License Manager のセルフマネージドライセンス

各モジュールは入力値を terraform.tfvars ファイルから読み取り、AWS プロバイダーで default_tags を使用するため、すべてのリソースに一貫したタグ (ProjectManagedByEnvironmentOwner) が付与されます。

テンプレートは、AWS の商用リージョンと AWS GovCloud (US) リージョンの両方に対応しています。すべての ARN は aws_partition データソースを使って構築されるため、同じコードで商用リージョンでは arn:aws:...、GovCloud では arn:aws-us-gov:... を修正なしで生成できます。

前提条件

この手順を進めるには、以下が必要です。

  • IAM ロール、KMS キー、RDS インスタンス、License Manager の設定を作成する権限を持つ AWS アカウント。
  • ローカルにインストールされた Terraform 1.5 以降。
  • RDS for Db2 インスタンスを実行する既存の Amazon Virtual Private Cloud (Amazon VPC) とセキュリティグループ。
  • IBM カスタマー ID と IBM サイト ID (Bring Your Own License に必要。RDS for Db2 のライセンスに関するドキュメントを参照)。

リポジトリをクローンします。

git clone https://github.com/aws-samples/sample-rds-db2-tools.git
cd sample-rds-db2-tools/tools/rds-db2-terraform

ウォークスルー

以降のセクションで各モジュールの概要を説明します。完全なコマンド、変数の説明、サンプルの tfvars ファイルは、リポジトリの README にあります。

ステップ 1: リモートステートの初期化

残りのモジュールのステートを保持する S3 バケットと DynamoDB テーブルを作成します。

cd 0-backend-setup
cp terraform.tfvars.example terraform.tfvars
# edit terraform.tfvars to set a globally unique bucket name
terraform init && terraform apply
cd ..
./configure-modules.sh

configure-modules.sh スクリプトは、各下流モジュールに backend.tf を書き込み、すべてのモジュールが同じ共有ステートバケットを使用するようにします。

ステップ 2: ネットワーク、IAM、暗号化

モジュール 1 から 3 で、支えとなるインフラストラクチャをセットアップします。それぞれ 1 分以内に完了します。

  • 1-networking は、VPC のサブネットをルートテーブルに基づいてパブリックまたはプライベートに自動分類し、適切なサブネットで DB サブネットグループを作成します。
  • 2-iam は、それぞれブール値のフラグで制御される 4 つのオプションの IAM ロールを作成します。対応する _exists フラグを設定すれば既存のロールを再利用でき、EntityAlreadyExists エラーを回避できます。
  • 3-kms は、カスタマーマネージド KMS キーを作成するか、エイリアス検索で既存のキーを再利用します。後でクロスリージョンのスタンバイレプリカを追加する予定がある場合は、multi_region_key = true を設定します。

ステップ 3: パラメータグループ

モジュール 4 は、IBM カスタマー ID と IBM サイト ID を含む DB パラメータグループを作成します。検証によってサポートされる組み合わせが強制されます。Db2 11.5 ではエディション seae、Db2 12.1 では ceseae を受け付けます。どちらの ID も sensitive としてマークされるため、プランの出力には表示されません。

ステップ 4: RDS for Db2 インスタンス

モジュール 5 は最も実行時間が長いステップです (ストレージサイズやマルチ AZ を有効にするかどうかによって 15 分から 40 分)。事前に決めなければならない項目を減らす便利な機能がいくつか用意されています。

  • engine_version を空白のままにすると、選択したメジャーバージョンの最新マイナーバージョンが自動的に解決されます (たとえば Db2 11.5 は 11.5.9.0 に解決されます)。
  • db_instance_identifier を空白のままにすると、エンジン、バージョン、インスタンスクラス、ストレージタイプ、タグから db2se-11-5-r7i-xl-xs-gp3-saz-12k-myproj のような名前が自動的に構築されます。
  • manage_master_user_password = true (デフォルト) を設定すると、RDS がマスターパスワードを AWS Secrets Manager で作成し、ローテーションします。シークレットの ARN は managed_master_user_secret_arn としてエクスポートされます。

このモジュールは gp3 の IOPS ルールも処理します。allocated_storage < 400 GiB の場合は iopsstorage_throughput の引数を省略し、API がリクエストを受け付けられるようにします。

ステップ 5: License Manager

モジュール 6 は、セルフマネージドのライセンス設定を作成します。RDS for Db2 のライセンスに関するドキュメントに従い、BYOL を利用するお客様は License Manager で vCPU の消費量を登録します。その後、License Manager はエンジンエディションの製品情報フィルターを使って、該当する RDS インスタンスを自動的に検出します。

重要な注意点が 2 つあります。

  1. アカウントとリージョンで License Manager を初めて使用する際は、サービスにリンクされたロールを作成する必要があります。このモジュールには、これを冪等に実行する bootstrap.sh スクリプトが含まれています。最初の terraform apply の前に一度実行してください。
  2. AWS Terraform プロバイダーは現在、aws_licensemanager_license_configurationproduct_information_list ブロックを公開していません。このモジュールは、作成後に null_resource を使って AWS Command Line Interface (AWS CLI) 経由で aws license-manager update-license-configuration を呼び出すことで、この制約を回避します。該当する RDS インスタンスの検出には最大 24 時間かかることがあります。

クリーンアップ

継続的な課金を避けるため、モジュールを逆順に破棄します。

./cleanup.sh

0-backend-setup モジュールでは、ステートバケットとロックテーブルに prevent_destroy = true が設定されています。ステートバックエンド自体を破棄したい場合は、まずそのライフサイクルルールを削除してください。

まとめ

このモジュール式の Terraform テンプレートを使えば、リモートステートと License Manager 統合を最初から備えた形で、本番環境レベルの Amazon RDS for Db2 をプロビジョニングできます。さらに、GovCloud 互換性のためのパーティション対応 ARN や、RDS が管理するマスターパスワードも利用できます。各モジュールは小さく焦点が絞られており、冪等であるため、段階的に導入できます。たとえば、3-kms モジュールを既存の KMS エイリアスに向けたり、モニタリングと監査のロールがすでに存在する場合は 2-iam を丸ごとスキップしたりできます。

完全なテンプレート、パラメータリファレンス、トラブルシューティングガイド、サンプルの tfvars ファイルは、aws-samples/sample-rds-db2-tools で入手できます。

AWS における Db2 関連のコンテンツについては、Amazon RDS for Db2 ユーザーガイドAWS Database Blog を参照してください。

著者について

Vikram S Khatri

Vikram S Khatri

Vikram は、Vikram は Amazon RDS for Db2 のシニアエンジニアです。プロダクトマネジメント、経験豊富なアーキテクト、リーダーシップ、AI エキスパートユーザーなど、複数の役割を担っています。20 年以上の経験を持ち、製品をゼロから開発することに情熱を注いでいます。

Sumit Kumar

Sumit Kumar

Sumit は、Sumit は AWS のシニアソリューションアーキテクトで、複雑な問題を解決することを楽しんでいます。さまざまな業界のお客様が AWS クラウド上でワークロードを構築・設計できるよう支援してきました。料理やチェス、家族と過ごす時間を楽しんでいます。

Ashish Prasad

Ashish Prasad

Ashish は、Ashish は AWS のシニアソリューションアーキテクトであり、リードデータベースアーキテクトです。データベース技術において 20 年以上の経験を持っています。

Javeed Mohammed

Javeed Mohammed

Javeed は、Javeed は Amazon Web Services (AWS) のシニアデータベーススペシャリストソリューションアーキテクトです。Amazon RDS チームに所属し、Oracle や Db2 といった商用データベースエンジンを専門としています。お客様と協力して、AWS クラウド上でのリレーショナルデータベースワークロードの設計、デプロイ、最適化を支援することに取り組んでいます。


この記事は Solutions Architect の 矢木 覚 が翻訳しました。