- 03-5820-1777平日10:00〜18:00
- お問い合わせ
今回は、AWSリソースのInfrastructure as Code(IaC)を実現するSDKであるAWS Cloud Development Kit (CDK)を使用して、Lightsailインスタンスを作成してみました。
AWS CDK 2.76.0
import * as cdk from 'aws-cdk-lib';
import * as lightsail from 'aws-cdk-lib/aws-lightsail';
import { Construct } from 'constructs';
export class CreateLightSailInstance extends cdk.Stack {
//作成時に実行するスクリプトを指定(ここでMySqlをインストール)
const userData = `#!/bin/bash
sudo amazon-linux-extras install epel
sudo yum remove -y mariadb-*
sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
sudo yum install -y --enablerepo=mysql80-community mysql-community-server
sudo systemctl start mysqld`;
//Lightsailインスタンスを作成
const instance = new lightsail.CfnInstance(this, 'Instance-1', {
availabilityZone:'ap-northeast-1a', //アベイラビリティゾーン
instanceName: 'Instance-1', //インスタンス名
blueprintId: 'amazon_linux_2', //OSの種類(Wordpressを使用する場合はここにwordpressと指定)
bundleId: 'micro_2_0', //CPU,メモリ、ストレージを定義するプリセット
userData: userData, //インスタンス作成時に実行されるスクリプト指定
});
// 固定IP設定
const cfnStaticIp = new lightsail.CfnStaticIp(this, 'StaticIp-1', {
staticIpName: 'StaticIp-1', //固定IP名
attachedTo: instance.instanceName //アタッチするインスタンス指定
});
}
マシンのセットアップをより楽にするために、例えばDBにテーブル作成、データインポートがCDKを使用して出来れば良いなと思ったので、方法を考えてみました。
・Aws System Managerの使用
一つはAws System Manager(以降smm)を使用する方法です。
CDKにはsshでアクセスする機能がないので他の手段を使用する必要があります。
それがsmmからLigthsailインスタンスにアクセスしSQLファイル、インポートファイル転送、コマンド実行する方法です。この方法はLightsailを手軽に使用したい人には少し問題があります。
ssmでLightsailを使用するには次の手順を踏む必要があります。
以上の工程が必要になります。すべてをCDKで出来るのかはやってないので不明ですが、出来たとしてもアドバンスモードにすると課金が必要になるのでコストを下げたい時には問題になりますね。
・S3の使用
もう1つはS3にファイルを転送し、LightsailインスタンスからS3からSQLファイル、インポートファイルを取得し、コマンド実行する方法です。
これには次の手順が必要です。
以上の工程が必要になります。AWS CLIのインストールが必要ですし、S3使用に課金が必要になるので、コストを下げたい時には問題になります。
との理由でSQL実行等のセットアップはLightsailの場合はCDKでやらないほうが良いかもと思っています。
ドメイン設定は画面上では、AWS外から取得したドメインを設定するための機能「DNS Zone」があるのですが、CDKではそれを使用するクラスが用意されてないように思われます。
Route53を使用しての設定は出来るみたいですが、課金が必要になりますのでコストを下げたい方は画面上での設定又は、Lightsailインスタンス上からAWS CLIを使用して設定する必要があります。
以上、Lightsailインスタンスの設定をCDKで行うコード、問題点を上げてみました。
問題点がある手法についても今後、CDKだけで何処まで出来るのか検証してみたいと思います。