GNU/Linux >> Linux の 問題 >  >> Linux

Cloudformationを使用してAWSでRDSMySqlインスタンスを作成します

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

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

この記事では、CloudformationStackを使用してRDSMySqlインスタンスを作成する手順を説明します。

前提条件
  1. AWSアカウント(アカウントがない場合は作成します)。
  2. CloudformationStackの基本的な理解。
  3. AWSでのRDSMySql(リレーショナルデータベースMySql)インスタンスの基本的な理解。

何をしますか?

  1. AWSにログインします。
  2. CloudformationStackを使用してRDSMySqlインスタンスを作成する

AWSにログイン

  1. AWSログインページに移動するには、ここをクリックしてください。

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

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

Cloudformationを使用してRDSMySqlインスタンスを作成します。

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

---
AWSTemplateFormatVersion: '2010-09-09'
Description: This stack creates an RDS MySql 5.7 Instance
Parameters:
  Owner:
    Description: Enter the Name of the owner for this Stack.
    Type: String
    Default: Name
  VPC:
    Description: Select VPC form the available VPCs in your account.
    Type: AWS::EC2::VPC::Id
  PrivateSubnet1:
    Description: Select Private Subnet 1.
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet2:
    Description: Select Private Subnet 2.
    Type: AWS::EC2::Subnet::Id
  PrivateSubnet3:
    Description: Select Private Subnet 3.
    Type: AWS::EC2::Subnet::Id
  MasterUsername:
    Description: Database administration name.
    Type: String
    Default: rdsroot
  MasterUserPassword:
    NoEcho: 'true'
    Description: Database administration password.
    Type: String
    MinLength: '8'
    AllowedPattern: "[a-zA-Z0-9!?]*"
    ConstraintDescription: Must only contain upper and lowercase letters and numbers
  BackupRetentionPeriod:
    Description: Enter Backup Retention Period in Days.
    Type: Number
    Default: '5'
  MultiAvailabilityZone:
    Description: Do you want to Enable Multi Availability Zones?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  TcpPort:
    Description: Enter RDS Listening TCP Port number.
    Type: Number
    Default: '3306'
  PreferredBackupWindow:
    Description: Enter Preferred Backup Window Time.
    Type: String
    Default: 15:00-17:00
  PreferredMaintenanceWindow:
    Description: Enter Preferred Maintenance Window Time.
    Type: String
    Default: Sun:18:00-Sun:22:00
  AllocatedStorage:
    Default: '15'
    Description: Enter the size of the database (Gb)
    Type: Number
    MinValue: '5'
    MaxValue: '6144'
    ConstraintDescription: Must be between 5-6144
  SnapshotOnDelete:
    Description: Do you want to create a Snapshot on instance delete?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  AutoMinorVersionUpgrade:
    Description: Do you want to allow automatic minor version upgrade?
    Type: String
    Default: 'true'
    AllowedValues:
    - 'true'
    - 'false'
  InstanceType:
    Description: Select Instance Type.
    Type: String
    Default: db.t2.micro
    ConstraintDescription: Must be a valid EC2 instance type.
Mappings:
  Settings:
    MySQL:
      Engine: MySQL
      Version: '5.7'
Conditions:
  ConfigureSnapshotOnDelete:
    Fn::Equals:
    - Ref: SnapshotOnDelete
    - 'true'

Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
    - Label:
        default: Ownership
      Parameters:
      - Owner
    - Label:
        default: Network Configuration
      Parameters:
      - VPC
      - PrivateSubnet1
      - PrivateSubnet2
      - PrivateSubnet3
    - Label:
        default: RDS Configuration
      Parameters:
      - InstanceType
      - MasterUsername
      - MasterUserPassword
      - BackupRetentionPeriod
      - PreferredBackupWindow
      - PreferredMaintenanceWindow
      - SnapshotOnDelete
      - AllocatedStorage
      - AutoMinorVersionUpgrade
      - TcpPort
      - MultiAvailabilityZone
    ParameterLabels:
      Owner:
        default: Team or Individual Owner
      InstanceType:
        default: Instance Type
      PrivateSubnet1:
        default: Private Subnet 1
      PrivateSubnet2:
        default: Private Subnet 2
      PrivateSubnet3:
        default: Private Subnet 3
      MasterUsername:
        default: Master Username
      MasterUserPassword:
        default: Master User Password
      BackupRetentionPeriod:
        default: Backup Retention Period
      PreferredBackupWindow:
        default: Preferred Backup Window
      PreferredMaintenanceWindow:
        default: Preferred Maintenance Window
      AllocatedStorage:
        default: Allocated Storage
      AutoMinorVersionUpgrade:
        default: Auto Minor Version Upgrade
      TcpPort:
        default: TCP Port
      MultiAvailabilityZone:
        default: Multi Availability Zone?
      SnapshotOnDelete:
        default: Snapshot On Delete?

Resources:
  RDSAccessSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Instance to RDS Access
      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 Subnet Group for '
          - 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: Team or Individual that Owns this Formation.
    Value:
      Ref: Owner
  VPC:
    Description: VPC Used
    Value:
      Ref: VPC
  RDSHostname:
    Description: RDS Hostname
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Address
  RDSPort:
    Description: RDS Port
    Value:
      Fn::GetAtt:
      - DbInstance
      - Endpoint.Port
  DbSubnetGroup:
    Description: DB Subnet Group Created.
    Value:
      Ref: DbSubnetGroup
  RDSAccessSecurityGroup:
    Description: RDS Access Security Group Created.
    Value:
      Ref: RDSAccessSecurityGroup
  PrivateSubnet1:
    Description: Private Subnet 1 Deployment
    Value:
      Ref: PrivateSubnet1
  PrivateSubnet2:
    Description: Private Subnet 2 Deployment
    Value:
      Ref: PrivateSubnet2
  PrivateSubnet3:
    Description: Private Subnet 3 Deployment
    Value:
      Ref: PrivateSubnet3
  BackupRetentionPeriod:
    Description: Backup Retention Period in Days
    Value:
      Ref: BackupRetentionPeriod
  MultiAvailabilityZone:
    Description: Enable Multi Availability Zones?
    Value:
      Ref: MultiAvailabilityZone
  SnapshotOnDelete:
    Description: Create Snapshot on Delete?
    Value:
      Ref: SnapshotOnDelete
  PreferredBackupWindow:
    Description: Preferred Backup Window
    Value:
      Ref: PreferredBackupWindow
  PreferredMaintenanceWindow:
    Description: Preferred Maintenance Window
    Value:
      Ref: PreferredMaintenanceWindow
  AllocatedStorage:
    Description: Allocated Storage in GB
    Value:
      Ref: AllocatedStorage

ローカルマシンにテンプレートを用意したら、AWSコンソールに移動し、上部のメニューバーから[サービス]をクリックして、[Cloudformation]を検索します。

メインのcloudformationダッシュボードは次のように表示されます。 [スタックの作成]ボタンをクリックしてスタックを作成し、RDSMySqlインスタンスを作成します。

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

スタックに選択した名前を指定し、必要な詳細を入力して、[次へ]をクリックして先に進みます。

スタックによって作成されるRDSMySqlインスタンスに適用できるCloudformationStackにタグを提供できます。 [次へ]をクリックして続行します。

下にスクロールして[スタックの作成]をクリックし、スタックを作成します。

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

作成中のRDSMySqlインスタンスのステータスを確認するには、[Services]をクリックして、[RDS]を検索します。

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

ここで、インスタンスのステータスが「変更中」であることがわかります。これは、作成されて使用できるようになるまでに少し時間がかかります。

Cloudformation Stackイベントでは、しばらくすると、RDS MySqlインスタンスが作成されると、ステータスが「CREATE_COMPLETE」であることがわかります。

RDSコンソールで、ステータスが「利用可能」であることがわかります。

RDS MySqlインスタンスの詳細を表示するには、[RDSMySqlインスタンス]->[接続とセキュリティ]をクリックします。

RDS MySqlインスタンスに接続するには、インスタンスが提供するエンドポイントを使用できます。

インスタンスが不要になったら、CloudformationメインダッシュボードからCloudformationスタックを削除して、コストを節約します。

結論

この記事では、CloudformationStackを使用してRDSMySqlインスタンスを作成する手順を説明しました。


Linux
  1. Terraformを使用してAWSでEC2インスタンスを作成します

  2. Terraformを使用してAWSでRDSインスタンスを作成する方法

  3. cPanelMySQLデータベースウィザードの使用方法

  1. AWSインスタンス(EC2)でEBSボリュームを作成および追加する方法

  2. 新しいデータベースを作成し、MySQL/MariaDBで使用します

  3. スケジューラーヒントを使用してサーバーを作成する

  1. AWSでRDSMySql(Relation Database MySql)インスタンスをセットアップする方法

  2. Cloudformationを使用してAWSでVPCを作成する方法

  3. Amazonマシンイメージ(AMI)を作成してAWSで使用する方法