AWSリレーショナルデータベースサービス(RDS AWS)は、クラウドでのリレーショナルデータベースのセットアップと運用を容易にするウェブサービスです。 RDSの詳細については、「AWSでRDS MySql(リレーショナルデータベースMySql)インスタンスを設定する方法」の記事を参照してください。
AWS CloudFormationを使用すると、プログラミング言語(yaml / json)または単純なテキストファイルを使用して、アプリケーションに必要なすべてのリソースをモデル化およびプロビジョニングできます。これにより、AWSリソースの信頼できる唯一の情報源が得られます。
この記事では、CloudformationStackを使用してRDSMySqlインスタンスを作成する手順を説明します。
- AWSアカウント(アカウントがない場合は作成します)。
- CloudformationStackの基本的な理解。
- AWSでのRDSMySql(リレーショナルデータベースMySql)インスタンスの基本的な理解。
何をしますか?
- AWSにログインします。
- CloudformationStackを使用してRDSMySqlインスタンスを作成する
AWSにログイン
- 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インスタンスを作成する手順を説明しました。