テンプレートの取得とS3への格納
はじめに、ジャスミンソフトが提供するCloudFormationのテンプレートをダウンロードしてください。
ダウンロードファイルを展開します。ここからの作業はs3uploadfiles.zipを展開した、s3uploadfilesフォルダで実行するとします。
このフォルダに含まれる CloudFormation テンプレート一式を AWS の S3バケットに格納します。
本ガイドでは、S3バケット名を "wagby-cf-pipeline-wmsa" としています。次のコマンドでバケットを作成します。後ほどCodePipelineで処理するため、バージョニングとイベント通知を有効にします。
set AWS_PROFILE=admin
aws s3 mb s3://wagby-cf-pipeline-wmsa
aws s3api put-bucket-versioning --bucket wagby-cf-pipeline-wmsa --versioning-configuration Status=Enabled
aws s3api put-bucket-notification-configuration --bucket wagby-cf-pipeline-wmsa --notification-configuration="{ \"EventBridgeConfiguration\": {} }"
作成したバケットに、s3uploadfilesフォルダ内のファイルをアップロードします。
cd s3uploadfiles
aws s3 sync . s3://wagby-cf-pipeline-wmsa
下記コマンドを実行し、正しく転送されたことを確認します。
C:\Wagby\Wagby-9.2.7>2025-01-08 16:47:41 4135333 RepoInitApplication.zip
2025-01-08 16:47:41 11080 RepoInitManagement.zip
2025-01-08 16:47:41 20584 create-baseenv_service.json
2025-01-08 16:47:41 9696 create-baseenv_vpc.json
2025-01-08 16:47:41 23345 create-cluster.json
2025-01-08 16:47:41 18997 create-wmsa.json
2025-01-08 16:47:41 4067 func-ecs-taskdef.yml
2025-01-08 16:47:41 34280 parts-batch.json
2025-01-08 16:47:41 25428 parts-codebuild.json
2025-01-08 16:47:41 21194 parts-codepipeline.json
2025-01-08 16:47:41 6942 parts-ec2_instance.json
2025-01-08 16:47:41 28410 parts-ecs-taskdef.json
2025-01-08 16:47:41 10538 parts-ecs-taskdef2.yml
2025-01-08 16:47:41 9360 parts-ecs.json
2025-01-08 16:47:41 3002 parts-efs.json
2025-01-08 16:47:41 4017 parts-elasticacheredis_single.json
2025-01-08 16:47:41 4362 parts-elasticacheredis_single2.json
2025-01-08 16:47:41 5196 parts-mq_single.json
2025-01-08 16:47:41 7961 parts-rds.json
2025-01-08 16:47:41 23172 parts-vpc.json
2025-01-08 16:47:41 798 stackparam_create.json
2025-01-08 16:47:41 756 stackparam_update.json
設定できるパラメータ
ダウンロードしたファイルにいくつかのパラメータを自社用に書き換えることで AWS 環境を構築することができます。
ここでは設定可能なパラメータを説明します。
アプリケーションに関するパラメータ
名前 | 説明 | 例 |
環境名 (EnvironmentName) | 環境区分 + "env" の形式で指定します。環境区分とは、テストか本番運用かを示す接頭語です。本ガイドではテスト環境を "test" とし、本番環境を "prod" と表現します。 | testenv prodenv |
アプリケーション名 (ApplicationName) | 本ガイドでは WMSA名 + WagbyドメインID + 環境区分 の形式を用いています。アプリケーション名はアルファベット小文字と数字のみ使用できます。 | wmsaapp1test |
ホスト名 (HostName) | 公開するサーバのホスト名です。本ガイドでは WagbyドメインID + 環境区分 とします。 | app1test |
ネットワークに関するパラメータ
名前 | 説明 | 例 |
S3BucketName | CloudFormationテンプレートを格納したS3バケット名。 | wagby-cf-pipeline |
HostedZone | 本ガイドではサブドメイン名と同じとします。 | wmsa.wagby.com |
WMSAName | 複数の環境を含む、ひとまとまりの名前として扱います。本ガイドではサブドメイン名から決定されるものとします。(*1) | (サブドメインがwmsa.wagby.comの場合) wmsa |
CertificateArn | サーバ証明書のURIです。 | |
各サービスに関するパラメータ
名前 | 説明 | 例 |
EnvironmentType | 環境ごとに作成されるデータベース,Redis,MQを使うかどうかを決定します。
- simple
- データベース,Redis,MQのいずれも利用しません。テスト用です。
- rdb
- データベースを利用します。Redis,MQはいずれも利用しません。オートスケールやWagbyマイクロサービスに未対応です。
- cluster
- データベース,Redis,MQをすべて利用します。オートスケールやWagbyマイクロサービスに対応します。
今回は一つのアプリケーションとなるため "rdb" とします。
| rdb |
NotifyEmailAddress | CodePipeline処理の進捗状況を送信する先のメールアドレス。1アドレスのみ。指定しない場合は進捗状況メールは送信されない。 | scott@exmaple.com |
その他のパラメータ
create-wmsa.cf.json に指定できる、その他のパラメータの詳細をこちらに説明しています。
パスワードの登録
データベース (DBPassword)
EnvironmentType を "rdb" または "cluster" としたとき、データベースのパスワードを設定します。
以下の例ではパスワード部分を "randomPassword" と表記しています。この部分に適切なパスワードを設定してください。(パスワードは12文字以上が必要です。)
name 指定は次の書式となります。"/" + WMSAName + "/" + EnvironmentName + "/DBPassword"
aws ssm put-parameter --name "/wmsa/testenv/DBPassword" --type SecureString --value randomPassword
コマンドの出力例を示します。
{
"Version": 1,
"Tier": "Standard"
}
データベース (MQPassword)
EnvironmentType を "cluster" としたとき、AmazonMQのパスワードを設定します。
name 指定は次の書式となります。"/" + WMSAName + "/" + EnvironmentName + "/MQPassword"
aws ssm put-parameter --name "/wmsa/testenv/MQPassword" --type String --value randomPassword
データベース (RedisPassword)
EnvironmentType を "cluster" としたとき、ElastiCache Redisのパスワードを設定します。
name 指定は次の書式となります。"/" + WMSAName + "/" + EnvironmentName + "/RedisPassword"
aws ssm put-parameter --name "/wmsa/testenv/RedisPassword" --type SecureString --value randomPassword
アプリケーション用リソースの作成
上記パラメータの値を使って、本番運用するアプリケーションに対応した AWS 上のリソースを作成します。ここでは、ジャスミンソフトが提供する CloudFormation スタックに適切なパラメータを設定する方法を説明します。
今回の例
ここで紹介するのは、アプリケーションをテストするためのテスト環境を構築する例です。(CloudFormation スタックのテンプレートは create-wmsa.json を利用します。)
このコマンド実行により https://app1test.wmsa.wagby.com/
が作成されます。
パラメータ | 値 | 備考 |
--stack-name | WmsaApp1Test | ApplicationNameのキャメルケース記法 |
--template-url | https://wagby-cf-pipeline-wmsa.s3-ap-northeast-1.amazonaws.com/create-wmsa.json | CloudFormation スタックのテンプレート。前項の手順により、s3バケットに転送したので、その位置を指定する。 https://[S3バケット名].s3-[AWSリージョン].amazonaws.com/create-wmsa.json となっている。 |
EnvironmentName | testenv | |
ApplicationName | wmsaapp1test | |
Hostname | app1test | |
S3BucketName | wagby-cf-pipeline-wmsa | |
WMSAName | wmsa | |
CertificateArn | arn:aws:acm:...(省略) | |
HostedZone | wmsa.wagby.com | |
EnvironmentType | rdb | RDBを利用する |
NotifyEmailAddress | (管理者メールアドレス) | 省略可 |
s3uploadfiles 内の stackparam_create.json を上記設定に合わせて、修正してください。
ParameterKey
に対応するParameterValue
の部分を自社用に修正してご利用ください。
[
{
"ParameterKey": "EnvironmentName",
"ParameterValue": "testenv"
},
{
"ParameterKey": "ApplicationName",
"ParameterValue": "wmsaapp1test"
},
{
"ParameterKey": "Hostname",
"ParameterValue": "app1test"
},
{
"ParameterKey": "S3BucketName",
"ParameterValue": "wagby-cf-pipeline-wmsa"
},
{
"ParameterKey": "WMSAName",
"ParameterValue": "wmsa"
},
{
"ParameterKey": "CertificateArn",
"ParameterValue": "arn:aws:acm:ap-northeast-1:000000000000:certificate/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
},
{
"ParameterKey": "HostedZone",
"ParameterValue": "wmsa.wagby.com"
},
{
"ParameterKey": "EnvironmentType",
"ParameterValue": "rdb"
},
{
"ParameterKey": "NotifyEmailAddress",
"ParameterValue": "foo@example.com"
}
]
次の AWS CLI 命令は 1 行になります。
Linuxの場合
複数行にて1コマンドを指定するために、Linuxのbash流に文末に \ を指定しています。
aws cloudformation create-stack --stack-name WmsaApp1Test --capabilities CAPABILITY_IAM --capabilities CAPABILITY_NAMED_IAM \
--template-url https://wagby-cf-pipeline-wmsa.s3-ap-northeast-1.amazonaws.com/create-wmsa.json \
--parameters file://stackparam_create.json
Windows OSの場合
複数行にて1コマンドを指定するために、コマンドプロンプトの行末に ^ を指定します。
aws cloudformation create-stack --stack-name WmsaApp1Test --capabilities CAPABILITY_IAM --capabilities CAPABILITY_NAMED_IAM ^
--template-url https://wagby-cf-pipeline-wmsa.s3-ap-northeast-1.amazonaws.com/create-wmsa.json ^
--parameters file://stackparam_create.json
ワンポイント
コマンドの実行は少し時間がかかります。AWSマネージメントコンソール (https://console.aws.amazon.com) の "CloudFormation" で状況を確認することができます。ステータスが "CREATE_COMPLETE" となっていれば実行完了です。(*4)
注意
このタイミングでデータベース (Aurora) サービスが起動します。待機状態となるため、これらのサービスの課金が開始されます。(*5)
メール通知の確認
ParameterKeyに NotifyEmailAddress を指定したとき、最初に AWS から購読の確認メールが送信されます。
メール文中にある "Confirm subscription" をクリックし、購読を開始してください。次ページで説明する転送処理で、進捗がメールで送信されるようになります。
CodePipelineの実行の確認
CloudFormationスタックが作成されると、CodePipelineが実行され、からのウェブアプリケーションのDockerイメージが作成されます。下記コマンドを実行して、CodePipelineの実行が成功していることを確認してください。下記コマンドの実行結果が "InProgress" の場合は実行中です。"Succeeded" の場合は成功しております。
C:\Wagby\Wagby-9.2.7\s3uploadfiles>aws codepipeline list-pipelines
{
"pipelines": [
{
"name": "WmsaApp1Test-Cluster1-7JSIVNIP2I13-Codepipeline-1EXMFKFDVOJ0Z-AppPipeline-VKmCgfddEhXR",
"version": 1,
"created": "2025-01-05T23:37:44.196000+09:00",
"updated": "2025-01-05T23:37:44.196000+09:00"
}
]
}
C:\Wagby\Wagby-9.2.7\s3uploadfiles>set PIPELINENAME=WmsaApp1Test-Cluster1-7JSIVNIP2I13-Codepipeline-1EXMFKFDVOJ0Z-AppPipeline-VKmCgfddEhXR
C:\Wagby\Wagby-9.2.7\s3uploadfiles>aws codepipeline list-pipeline-executions --pipeline-name %PIPELINENAME% --query pipelineExecutionSummaries[0].status
"Succeeded"
Dockerコンテナの起動
ここまでの手順で Docker コンテナを起動する環境が構築されました。しかしこの状態ではまだ、起動するDockerコンテナの数は 0 となっています。この値を 1 に変更し、1つのDocker コンテナを起動します。
先ほど作成したCloudFormationスタックを更新し、ECSServiceDesireCountパラメータに 1 を指定します。
次の AWS CLI 命令は 1 行になります。
Linuxの場合
複数行にて1コマンドを指定するために、Linuxのbash流に文末に \ を指定しています。
aws cloudformation update-stack --stack-name WmsaApp1Test --capabilities CAPABILITY_IAM --capabilities CAPABILITY_NAMED_IAM \
--template-url https://wagby-cf-pipeline-wmsa.s3-ap-northeast-1.amazonaws.com/create-wmsa.json \
--parameters file://stackparam_update.json
Windows OSの場合
複数行にて1コマンドを指定するために、コマンドプロンプトの行末に ^ を指定します。
aws cloudformation update-stack --stack-name WmsaApp1Test --capabilities CAPABILITY_IAM --capabilities CAPABILITY_NAMED_IAM ^
--template-url https://wagby-cf-pipeline-wmsa.s3-ap-northeast-1.amazonaws.com/create-wmsa.json ^
--parameters file://stackparam_update.json
ワンポイント
コマンドの実行は少し時間がかかります。AWSマネージメントコンソール (https://console.aws.amazon.com) の "CloudFormation" で状況を確認することができます。ステータスが "UPDATE_COMPLETE" となっていれば実行完了です。(*5)
動作の確認
Web ブラウザから https://app1test.wmsa.wagby.com/ にアクセスします。"Success" と表示されることを確認します。
構築されるフルマネージドサービスの詳細
ジャスミンソフトが提供する CloudFormation テンプレートでは、関連する AWS のフルマネージドサービスの初期仕様を次のように定めています。
パラメータ | 値 | 説明 |
DBInstanceType | db.t4g.medium | Auroraのタイプ |
MQInstanceType | mq.t3.micro | MQのタイプ |
RedisInstanceType | cache.t3.micro | Redisのタイプ |
上述した「AWSマネージメントコンソールで編集する」を使い、初期パラメータを変更することもできますが、この場合は一度作成したフルマネージドサービス環境を削除して再作成する必要があります。
そこで実際の運用は CloudFormation テンプレートはそのままとし、AWSマネージメントコンソールを使って各サービスのページをアクセスし、そこでスペックを変更するとよいでしょう。(各サービスのスペックの変更方法についての説明は割愛します。AWS が提供するマニュアルをお読みください。)
次のステップ
ここまでで AWS 上に Tomcat を用意することができました。また RDB の接続準備まで完了しました。次ページで Designer でフルビルドしたアプリケーションをこの環境に転送する方法を説明します。