CloudFormationスタック

最終更新日: 2020年11月9日
R8 | R9

テンプレートの取得とS3への格納

はじめに、ジャスミンソフトが提供するCloudFormationのテンプレートをダウンロードしてください。

ダウンロードファイルを展開します。このフォルダに含まれる CloudFormation テンプレート一式を AWS の S3バケットに格納します。

本ガイドでは、S3バケット名を "wagby-cf-pipeline-wmsa" としています。次のコマンドでバケットを作成します。

aws s3 mb s3://wagby-cf-pipeline-wmsa

作成したバケットに、s3uploadfilesフォルダ内のファイルをアップロードします。

cd s3uploadfiles
aws s3 sync . s3://wagby-cf-pipeline-wmsa

設定できるパラメータ

ダウンロードしたファイルにいくつかのパラメータを自社用に書き換えることで AWS 環境を構築することができます。 ここでは設定可能なパラメータを説明します。

アプリケーションに関するパラメータ

名前説明
環境名
(EnvironmentName)
環境区分 + "env" の形式で指定します。環境区分とは、テストか本番運用かを示す接頭語です。本ガイドではテスト環境を "test" とし、本番環境を "prod" と表現します。testenv
prodenv
アプリケーション名
(ApplicationName)
本ガイドでは WMSA名 + WagbyドメインID + 環境区分 の形式を用いています。アプリケーション名はアルファベット小文字と数字のみ使用できます。wmsaapp1test
ホスト名
(HostName)
公開するサーバのホスト名です。本ガイドでは上記「アプリケーション名」と同じとします。wmsaapp1test

ネットワークに関するパラメータ

名前説明
S3BucketNameCloudFormationテンプレートを格納したS3バケット名。wagby-cf-pipeline
HostedZone本ガイドではサブドメイン名と同じとします。wmsa.wagby.com
WMSAName複数の環境を含む、ひとまとまりの名前として扱います。本ガイドではサブドメイン名から決定されるものとします。(*1)(サブドメインがwmsa.wagby.comの場合) wmsa
CertificateArnサーバ証明書のURIです。
(*1) AWS System ManagerのParameter Storeに格納されるパラメータの先頭部分(例:/wmsa/wmsaapp1test/RepoApplicationUrl)にも用いられます。

各サービスに関するパラメータ

名前説明
EnvironmentType環境ごとに作成されるデータベース,Redis,MQを使うかどうかを決定します。
simple
データベース,Redis,MQのいずれも利用しません。テスト用です。
rdb
データベースを利用します。Redis,MQはいずれも利用しません。オートスケールやWagbyマイクロサービスに未対応です。
cluster
データベース,Redis,MQをすべて利用します。オートスケールやWagbyマイクロサービスに対応します。
今回は一つのアプリケーションとなるため "rdb" とします。
rdb
DockerLoginUserDocker Hubにログオンする時のユーザ名。(*2)scott
DockerLoginPasswordSSMParamnameDocker Hubのパスワードを格納したAWS SystemManager Parameter Storeのキー名。[次節で説明]-
NotifyEmailAddressCodePipeline処理の進捗状況を送信する先のメールアドレス。1アドレスのみ。指定しない場合は進捗状況メールは送信されない。(*3)scott@exmaple.com
(*2) Docker Hub に別途、アカウントを用意する必要があります。
(*3) 複数名にメールを送信することもできます。この場合は別途、Amazon SNS の設定を行います。[準備中...]

その他のパラメータ

create-wmsa.cf.json に指定できる、その他のパラメータの詳細をこちらに説明しています。

パスワードの登録

Docker

DockerLoginUser に対応する、DockerLoginPasswordSSMParamname のパスワードを登録します。次のコマンドを用います。

aws ssm put-parameter --name "/DockerPassword" --type SecureString --value [DockerHubのパスワード]

以降の設定では "/DockerPassword" と記載することで、このパスワードを参照することができます。

データベース (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"
}

アプリケーション用リソースの作成

上記パラメータの値を使って、本番運用するアプリケーションに対応した AWS 上のリソースを作成します。ここでは、ジャスミンソフトが提供する CloudFormation スタックに適切なパラメータを設定する方法を説明します。

今回の例

ここで紹介するのは、アプリケーションをテストするためのテスト環境を構築する例です。(CloudFormation スタックのテンプレートは https://wagby-cf-pipeline-wmsa.s3-ap-northeast-1.amazonaws.com/create-wmsa.json を利用します。)

このコマンド実行により https://app1test.wmsa.wagby.com/ が作成されます。

パラメータ備考
--stack-nameWmsaApp1TestApplicationNameのキャメルケース記法
EnvironmentNametestenv
ApplicationNamewmsaapp1test
Hostnameapp1test
S3BucketNamewagby-cf-pipeline-wmsa
WMSANamewmsa
CertificateArnarn:aws:acm:...(省略)
HostedZonewmsa.wagby.com
EnvironmentTyperdbRDBを利用する
DockerLoginUser(DockerHubアカウント)
DockerLoginPasswordSSMParamname/DockerPassword実際の値は事前に登録済み
NotifyEmailAddress(管理者メールアドレス)省略可

次の AWS CLI 命令は 1 行になります。ParameterKeyに対応するParameterValueの部分を自社用に修正してご利用ください。

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 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:234318443261:certificate/392ea7a4-bb60-4bf1-a3aa-b81cccc26eb8 \
ParameterKey=HostedZone,ParameterValue=wmsa.wagby.com \
ParameterKey=EnvironmentType,ParameterValue=rdb \
ParameterKey=DockerLoginUser,ParameterValue=YOURACCOUNT \
ParameterKey=DockerLoginPasswordSSMParamname,ParameterValue=/DockerPassword \
ParameterKey=NotifyEmailAddress,ParameterValue=foo@example.com

Windows OSの場合

複数行にて1コマンドを指定するために、コマンドプロンプトの行末に ^ を指定します。(*3)

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 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:234318443261:certificate/392ea7a4-bb60-4bf1-a3aa-b81cccc26eb8 ^
ParameterKey=HostedZone,ParameterValue=wmsa.wagby.com ^
ParameterKey=EnvironmentType,ParameterValue=cluster ^
ParameterKey=DockerLoginUser,ParameterValue=YOURACCOUNT ^
ParameterKey=DockerLoginPasswordSSMParamname,ParameterValue=/DockerPassword ^
ParameterKey=NotifyEmailAddress,ParameterValue=foo@example.com

ワンポイント

コマンドの実行は少し時間がかかります。AWSマネージメントコンソール (https://console.aws.amazon.com) の "CloudFormation" で状況を確認することができます。ステータスが "CREATE_COMPLETE" となっていれば実行完了です。(*4)

(*4) AWS CLI でも状況を確認することができます。
aws cloudformation describe-stacks --stack-name WmsaApp1Test --query Stacks[0].StackStatus
この結果が "CREATE_IN_PROGRESS" のときは作成中です。"CREATE_COMPLETE" となれば実行完了です。

注意

このタイミングでデータベース (Aurora) サービスが起動します。待機状態となるため、これらのサービスの課金が開始されます。(*5)

(*5) 契約者は別途、Aurora の契約手続きを行う必要はありません。ジャスミンソフトが提供する CloudFormation テンプレートを使ってスタックを作成することで自動的に Aurora が利用できるようになり、課金が開始されます。

メール通知の確認

ParameterKeyに NotifyEmailAddress を指定したとき、最初に AWS から購読の確認メールが送信されます。

図1 購読の確認

メール文中にある "Confirm subscription" をクリックし、購読を開始してください。次ページで説明する転送処理で、進捗がメールで送信されるようになります。

Dockerコンテナの起動

ここまでの手順で Docker コンテナを起動する環境が構築されました。しかしこの状態ではまだ、起動するDockerコンテナの数は 0 となっています。この値を 1 に変更し、1つのDocker コンテナを起動してみます。

AWSマネージメントコンソールで編集する

コマンドライン操作でCloudFormationスタックを作成したあとは、AWSマネージメントコンソールから編集することができます。図2は AWS の CloudFormation サービスを選択したときの画面です。

図2 CloudFormation スタックの設定

ここでは "WmsaApp1Test" スタックを選択した画面を示します。スタックの情報が表示されています。

図3 WmsaApp1Test スタックを選択する

"更新する" ボタンを押下し、更新モードへ移ります。"現在のテンプレートを利用" するとします。

図4 スタックの更新

パラメータを入力できます。コマンドライン操作と同じ箇所を修正することができます。

図5 ECSServiceDesireCountの編集 (1)

このパラメータ内にある ECSServiceDesireCount の値を 0 から 1 に変更します。

図6 ECSServiceDesireCountの編集 (2)

編集後、画面下の「次へ」ボタンを押下します。

図7 次へボタン

編集内容を確認する画面です。入力値に誤りがないかどうかを確認することができます。

図8 確認画面

問題がなければ、最後に「スタックの更新」ボタンを押下します。

図9 スタックの更新

注意

ECSServiceDesireCountの値は、コマンドライン操作でCloudFormationスタックを作成したあとに行うようにしてください。

動作の確認

Web ブラウザから https://app1test.wmsa.wagby.com/ にアクセスします。"Success" と表示されることを確認します。

構築されるフルマネージドサービスの詳細

ジャスミンソフトが提供する CloudFormation テンプレートでは、関連する AWS のフルマネージドサービスの初期仕様を次のように定めています。

パラメータ説明
DBInstanceTypedb.t3.smallAuroraのタイプ
MQInstanceTypedb.t3.microMQのタイプ
RedisInstanceTypecache.t3.microRedisのタイプ

上述した「AWSマネージメントコンソールで編集する」を使い、初期パラメータを変更することもできますが、この場合は一度作成したフルマネージドサービス環境を削除して再作成する必要があります。

そこで実際の運用は CloudFormation テンプレートはそのままとし、AWSマネージメントコンソールを使って各サービスのページをアクセスし、そこでスペックを変更するとよいでしょう。(各サービスのスペックの変更方法についての説明は割愛します。AWS が提供するマニュアルをお読みください。)

次のステップ

ここまでで AWS 上に Tomcat を用意することができました。また RDB の接続準備まで完了しました。次ページで Designer でフルビルドしたアプリケーションをこの環境に転送する方法を説明します。