AWS · 3 min read · Feb 04, 2026

AWSでCloudformationを使用してRDS MySqlインスタンスを作成する

AWSリレーショナルデータベースサービス(RDS AWS)は、クラウドでリレーショナルデータベースをセットアップおよび運用するのを容易にするウェブサービスです。RDSについて詳しく理解するには、「AWSでRDS MySql(リレーショナルデータベースMySql)インスタンスをセットアップする方法」という記事を検索してください。

AWS CloudFormationを使用すると、プログラミング言語(yaml/json)または単純なテキストファイルを使用して、アプリケーションに必要なすべてのリソースをモデル化およびプロビジョニングできます。これにより、AWSリソースの単一の真実のソースが得られます。

この記事では、Cloudformationスタックを使用してRDS MySqlインスタンスを作成する手順を見ていきます。

前提条件

  1. AWSアカウント(持っていない場合は作成してください)。
  2. Cloudformationスタックの基本的な理解。
  3. AWSでのRDS MySql(リレーショナルデータベースMySql)インスタンスの基本的な理解。

何をしますか?

  1. AWSにログインします。
  2. Cloudformationスタックを使用してRDS MySqlインスタンスを作成します。

AWSにログインする

  1. ここをクリックしてAWSログインページに移動します。

上記のリンクをクリックすると、ログイン情報を使用してログインする必要があるウェブページが表示されます。

AWSにログイン

AWSに正常にログインすると、すべてのサービスがリストされたメインコンソールが表示されます。

AWS管理コンソール

Cloudformationを使用してRDS MySqlインスタンスを作成する。

Cloudformationスタックを使用してインスタンスを作成する前に、以下のブロックからコードをコピーするか、ここからテンプレートをダウンロードしてローカルマシンに保存してください。

---
AWSTemplateFormatVersion: '2010-09-09'
Description: このスタックはRDS MySql 5.7インスタンスを作成します
Parameters:
  Owner:
    Description: このスタックの所有者の名前を入力してください。
    Type: String
    Default: Name
  VPC:
    Description: アカウント内の利用可能なVPCからVPCを選択してください。
    Type: AWS::EC2::VPC::Id
  PrivateSubnet1:
    Description: プライベートサブネット1を選択してください。
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet2:
    Description: プライベートサブネット2を選択してください。
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet3:
    Description: プライベートサブネット3を選択してください。
    Type: AWS::EC2::Subnet::Id
  MasterUsername:
    Description: データベース管理者名。
    Type: String
    Default: rdsroot
  MasterUserPassword:
    NoEcho: 'true'
    Description: データベース管理者パスワード。
    Type: String
    MinLength: '8'
    AllowedPattern: "[a-zA-Z0-9!?]*"
    ConstraintDescription: 大文字と小文字のアルファベットと数字のみを含む必要があります
  BackupRetentionPeriod:
    Description: バックアップ保持期間(日数)を入力してください。
    Type: Number
    Default: '5'
  MultiAvailabilityZone:
    Description: マルチアベイラビリティゾーンを有効にしますか?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  TcpPort:
    Description: RDSリスニングTCPポート番号を入力してください。
    Type: Number
    Default: '3306'
  PreferredBackupWindow:
    Description: 希望のバックアップウィンドウ時間を入力してください。
    Type: String
    Default: 15:00-17:00
  PreferredMaintenanceWindow:
    Description: 希望のメンテナンスウィンドウ時間を入力してください。
    Type: String
    Default: Sun:18:00-Sun:22:00
  AllocatedStorage:
    Default: '15'
    Description: データベースのサイズ(GB)を入力してください。
    Type: Number
    MinValue: '5'
    MaxValue: '6144'
    ConstraintDescription: 5-6144の間である必要があります
  SnapshotOnDelete:
    Description: インスタンス削除時にスナップショットを作成しますか?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  AutoMinorVersionUpgrade:
    Description: 自動マイナーアップグレードを許可しますか?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  InstanceType:
    Description: インスタンスタイプを選択してください。
    Type: String
    Default: db.t2.micro
    ConstraintDescription: 有効なEC2インスタンスタイプである必要があります。
Mappings:
  Settings:
    MySQL:
      Engine: MySQL
      Version: '5.7'
Conditions:
  ConfigureSnapshotOnDelete:
    Fn::Equals:
    - Ref: SnapshotOnDelete
    - 'true'

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
    - Label:
        default: 所有権
      Parameters:
      - Owner
    - Label:
        default: ネットワーク構成
      Parameters:
      - VPC
      - PrivateSubnet1
      - PrivateSubnet2
      - PrivateSubnet3
    - Label:
        default: RDS構成
      Parameters:
      - InstanceType
      - MasterUsername
      - MasterUserPassword
      - BackupRetentionPeriod
      - PreferredBackupWindow
      - PreferredMaintenanceWindow
      - SnapshotOnDelete
      - AllocatedStorage
      - AutoMinorVersionUpgrade
      - TcpPort
      - MultiAvailabilityZone
    ParameterLabels:
      Owner:
        default: チームまたは個人の所有者
      InstanceType:
        default: インスタンスタイプ
      PrivateSubnet1:
        default: プライベートサブネット1
      PrivateSubnet2:
        default: プライベートサブネット2
      PrivateSubnet3:
        default: プライベートサブネット3
      MasterUsername:
        default: マスターユーザー名
      MasterUserPassword:
        default: マスターユーザーパスワード
      BackupRetentionPeriod:
        default: バックアップ保持期間
      PreferredBackupWindow:
        default: 希望のバックアップウィンドウ
      PreferredMaintenanceWindow:
        default: 希望のメンテナンスウィンドウ
      AllocatedStorage:
        default: 割り当てられたストレージ
      AutoMinorVersionUpgrade:
        default: 自動マイナーアップグレード
      TcpPort:
        default: TCPポート
      MultiAvailabilityZone:
        default: マルチアベイラビリティゾーン?
      SnapshotOnDelete:
        default: 削除時のスナップショット?

Resources:
  RDSAccessSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: インスタンスからRDSへのアクセス
      VpcId:
        Ref: VPC
      Tags:
      - Key: Name
        Value:
          Fn::Join:
          - ''
          - - Ref: AWS::StackName
            - "-rds"
      - Key: Owner
        Value:
          Ref: Owner
  AccessSecurityGroupIngress:
    Type: AWS::EC2::SecurityGroupIngress
    DependsOn: RDSAccessSecurityGroup
    Properties:
      GroupId:
        Ref: RDSAccessSecurityGroup
      IpProtocol: tcp
      FromPort:
        Ref: TcpPort
      ToPort:
        Ref: TcpPort
      SourceSecurityGroupId:
        Ref: RDSAccessSecurityGroup
  DbSubnetGroup:
    Type: AWS::RDS::DBSubnetGroup
    Properties:
      DBSubnetGroupDescription:
        Fn::Join:
        - ''
        - - 'RDSサブネットグループ '
          - Ref: AWS::StackName
      SubnetIds:
      - Ref: PrivateSubnet1
      - Ref: PrivateSubnet2
      - Ref: PrivateSubnet3
      Tags:
      - Key: Name
        Value:
          Ref: AWS::StackName
      - Key: Owner
        Value:
          Ref: Owner
  DbInstance:
    Type: AWS::RDS::DBInstance
    DeletionPolicy: Snapshot
    DependsOn:
    - DbSubnetGroup
    - RDSAccessSecurityGroup
    Properties:
      AllocatedStorage:
        Ref: AllocatedStorage
      AllowMajorVersionUpgrade: 'false'
      AutoMinorVersionUpgrade:
        Ref: AutoMinorVersionUpgrade
      BackupRetentionPeriod:
        Ref: BackupRetentionPeriod
      DBInstanceClass:
        Ref: InstanceType
      DBInstanceIdentifier:
        Ref: AWS::StackName
      DBSubnetGroupName:
        Ref: DbSubnetGroup
      Engine:
        Fn::FindInMap:
        - Settings
        - MySQL
        - Engine
      EngineVersion:
        Fn::FindInMap:
        - Settings
        - MySQL
        - Version
      MasterUsername:
        Ref: MasterUsername
      MasterUserPassword:
        Ref: MasterUserPassword
      MultiAZ:
        Ref: MultiAvailabilityZone
      Port:
        Ref: TcpPort
      PreferredBackupWindow:
        Ref: PreferredBackupWindow
      PreferredMaintenanceWindow:
        Ref: PreferredMaintenanceWindow
      PubliclyAccessible: 'false'
      StorageEncrypted: 'false'
      StorageType: gp2
      VPCSecurityGroups:
      - Ref: RDSAccessSecurityGroup
      Tags:
      - Key: Name
        Value:
          Ref: AWS::StackName
      - Key: Owner
        Value:
          Ref: Owner

Outputs:
  Owner:
    Description: この構成を所有するチームまたは個人。
    Value:
      Ref: Owner
  VPC:
    Description: 使用されるVPC
    Value:
      Ref: VPC
  RDSHostname:
    Description: RDSホスト名
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Address
  RDSPort:
    Description: RDSポート
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Port
  DbSubnetGroup:
    Description: 作成されたDBサブネットグループ。
    Value:
      Ref: DbSubnetGroup
  RDSAccessSecurityGroup:
    Description: 作成されたRDSアクセスセキュリティグループ。
    Value:
      Ref: RDSAccessSecurityGroup
  PrivateSubnet1:
    Description: プライベートサブネット1のデプロイ
    Value:
      Ref: PrivateSubnet1
  PrivateSubnet2:
    Description: プライベートサブネット2のデプロイ
    Value:
      Ref: PrivateSubnet2
  PrivateSubnet3:
    Description: プライベートサブネット3のデプロイ
    Value:
      Ref: PrivateSubnet3
  BackupRetentionPeriod:
    Description: バックアップ保持期間(日数)
    Value:
      Ref: BackupRetentionPeriod
  MultiAvailabilityZone:
    Description: マルチアベイラビリティゾーンを有効にしますか?
    Value:
      Ref: MultiAvailabilityZone
  SnapshotOnDelete:
    Description: 削除時にスナップショットを作成しますか?
    Value:
      Ref: SnapshotOnDelete
  PreferredBackupWindow:
    Description: 希望のバックアップウィンドウ
    Value:
      Ref: PreferredBackupWindow
  PreferredMaintenanceWindow:
    Description: 希望のメンテナンスウィンドウ
    Value:
      Ref: PreferredMaintenanceWindow
  AllocatedStorage:
    Description: 割り当てられたストレージ(GB)
    Value:
      Ref: AllocatedStorage

テンプレートがローカルマシンに保存されたら、AWSコンソールに移動し、上部メニューバーから「サービス」をクリックして「Cloudformation」を検索します。

Cloudformation

次のようなメインCloudformationダッシュボードが表示されます。「スタックを作成」ボタンをクリックしてRDS MySqlインスタンスを作成するスタックを作成します。

スタック

「テンプレートファイルをアップロード」ラジオボタンをクリックし、ローカルマシンから保存したテンプレートを選択して「次へ」ボタンをクリックします。

Cloudformationスタックの作成

スタックに任意の名前を指定し、必要な詳細を入力して「次へ」をクリックしてさらに進みます。

スタックの詳細を指定

マスターユーザーパスワード

Cloudformationスタックにタグを提供することができ、スタックによって作成されるRDS MySqlインスタンスに適用されます。「次へ」をクリックして進みます。

タグ

下にスクロールして「スタックを作成」をクリックしてスタックを作成します。

スタックを作成

作成には時間がかかります。イベントの下で実行中のアクションを確認できます。

RDS MySQL

作成中のRDS MySqlインスタンスのステータスを確認するには、「サービス」をクリックして「RDS」を検索します。

RDS

メインダッシュボードで「DBインスタンス」をクリックします。

データベースを作成

ここで、インスタンスのステータスが「変更中」であることが確認できます。これには作成され、使用可能になるまでに時間がかかります。

RDSデータベースリスト

Cloudformationスタックのイベントでは、RDS MySqlインスタンスが作成されると、ステータスが「CREATE_COMPLETE」になることが確認できます。

RDSアクションログ

RDSコンソールでは、ステータスが「利用可能」であることが確認できます。

AWSのMySQLデータベース

RDS MySqlインスタンスの詳細を確認するには、RDS MySqlインスタンスをクリックし、接続とセキュリティを選択します。

RDS MySqlインスタンスに接続するには、インスタンスによって提供されたエンドポイントを使用できます。

データベースの詳細

インスタンスがもはや必要ない場合は、コストを節約するためにCloudformationメインダッシュボードからCloudformationスタックを削除してください。

結論

**

この記事では、Cloudformationスタックを使用してRDS MySqlインスタンスを作成する手順を見てきました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。