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 モジュールに分かれています。

各モジュールはスタックの特定の部分を担い、独自のリモートステートを保持します。そのため、他のモジュールに影響を与えることなく 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 を使用するため、すべてのリソースに一貫したタグ (Project、ManagedBy、Environment、Owner) が付与されます。
テンプレートは、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 のライセンスに関するドキュメントを参照)。
リポジトリをクローンします。
ウォークスルー
以降のセクションで各モジュールの概要を説明します。完全なコマンド、変数の説明、サンプルの tfvars ファイルは、リポジトリの README にあります。
ステップ 1: リモートステートの初期化
残りのモジュールのステートを保持する S3 バケットと DynamoDB テーブルを作成します。
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 ではエディション se と ae、Db2 12.1 では ce、se、ae を受け付けます。どちらの 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 の場合は iops と storage_throughput の引数を省略し、API がリクエストを受け付けられるようにします。
ステップ 5: License Manager
モジュール 6 は、セルフマネージドのライセンス設定を作成します。RDS for Db2 のライセンスに関するドキュメントに従い、BYOL を利用するお客様は License Manager で vCPU の消費量を登録します。その後、License Manager はエンジンエディションの製品情報フィルターを使って、該当する RDS インスタンスを自動的に検出します。
重要な注意点が 2 つあります。
- アカウントとリージョンで License Manager を初めて使用する際は、サービスにリンクされたロールを作成する必要があります。このモジュールには、これを冪等に実行する
bootstrap.shスクリプトが含まれています。最初のterraform applyの前に一度実行してください。 - AWS Terraform プロバイダーは現在、
aws_licensemanager_license_configurationのproduct_information_listブロックを公開していません。このモジュールは、作成後にnull_resourceを使って AWS Command Line Interface (AWS CLI) 経由でaws license-manager update-license-configurationを呼び出すことで、この制約を回避します。該当する RDS インスタンスの検出には最大 24 時間かかることがあります。
クリーンアップ
継続的な課金を避けるため、モジュールを逆順に破棄します。
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 を参照してください。
著者について
この記事は Solutions Architect の 矢木 覚 が翻訳しました。